使用ignite成倍提升Mapreduce Job性能

1. 介绍

在之前我写的Ignite In-Memory Hadoop Accelerator安装使用这篇文章中我已经介绍了如何安装Ignite In-Memory Hadoop Accelerator。

为了达到添加一个内存缓存层来加速MR JOB的目的,我们使用的是Ignite In-Memory Hadoop Accelerator(下文我就简称IHA了)。这里注意区别下ignite的data fabric组件。

2. 注意事项

2.1 集成yarn的问题

使用IHA也就意味着由ignite来管理MR任务的调度执行了。因为ignite自己实现了native的ignite MR框......

Ignite In-Memory Hadoop Accelerator安装使用

1.介绍

ignite在ignite简介一文中已经做了介绍。其功能非常多,我们主要把其功能分为两块:

In-Memory Data Fabric

In-Memory Hadoop Accelerator

从官方文档上也可以看到,官方也主要把ignite分成这两个较为独立的模块:

Ignite In-Memory Hadoop Accelerator(请允许我以后都简称IHA)主要是通过提供一个内存存储系统和......

alluxio vs ignite

前段时间一直在研究alluxio,不过alluxio似乎不太适合我们的使用场景。具体可以参考文章:采用alluxio提升MR job和Spark job性能的注意点来了解alluxio的应用场景。

这里并不是说alluxio不好。alluxio在符合其使用的场景下也有非常显著的性能提升。在国内也有百度、去哪儿、阿里这样的公司来使用。不过作为内存缓存层加速本地的spark或者mapreduce job方面可能并不是做的很完善。

ignite的开发者和alluxio的开发者也有过交集。和我标题一样的问题ignite的作者也同样问过。具体可以参考:

敢说 Apache Ignite 比 Ta......

ignite简介

1. 前言

前段时间一直在研究alluxio。不过alluxio似乎不太适合我们的使用场景。我们的需求就是想要有一个能无缝集成Hadoop和Spark的内存缓存层来加速每个本地运行的job。关于alluxio的研究可以查看我alluxio分类下的文章。关于为什么alluxio不适合内存缓存加速job的场景可以参考我的文章:采用alluxio提升MR job和Spark job性能的注意点

本文主要介绍下ignite。主要参考文档:

Apache Ignite(V1.7.0)中文开发手册

ignite官网

ignite-github

PS: 强烈推荐看ignite-github上面......

Memory Storage Support in HDFS

1. 前言

利用内存已是大势所趋。Spark的基于内存的计算就是一个很好的利用内存的例子。hadoop现在的架构也在做调整,学习spark的思路。架构设计上也越来越多的利用内存。例如在hadoop 2.6以后,HDFS就开始支持将数据存到内存了。本文对该特性做一些介绍。

主要基于hadoop 2.7.2的文档:Memory Storage Support in HDFS

2. 介绍

HDFS也支持往datanode管理的堆外内存写数据了。datanode会异步地将这些数据flush到磁盘上。这样的写入过程称作“Lazy Persist write"。如果一个node在异步持久......

关于树这种数据结构

1. 介绍

今天技术群突然讨论起来树这种数据结构了。我也有些知识点忘了,现在用比较精简的话简单总结下。

2. 二查查找树(BST)

特点:

会不平衡

节点直接的大小关系

3. 自平衡二查查找树(AVL)

AVL可以理解为BST的变种, 可见是在BST基础上加入了自平衡功能

特点:

高度平衡: 这也导致了调整树的开销比较大,不适合频繁地插入删除节点

......

采用alluxio提升MR job和Spark job性能的注意点

1. 介绍

相信很多使用alluxio的同学,都是冲着其memory speed的加速效果而来。我也一样,认为只要用上了alluxio,整合了spark和hadoop就可以轻松把以前的JOB提升数倍的性能。然而,事实并不是这么顺利的。

今天主要就来总结下alluxio在提升MR job和Spark job性能上存在的问题和挑战。

2. 实验说明

2.1 实验环境

后面在说明问题的时候会贴一些实验结果。为了排除网络IO的影响,我这边的实验将hadoop、spark还有alluxio都部署在一台机器上。这台机器内存120G,40核。

2.2 实验方法

主要是做对比实验,一个使用all......

hadoop3.0新特性

1. 前言

PS: 新特性主要翻译自官网:Apache Hadoop 3.0.0-alpha1——Overview

2. 概览

Apache Hadoop 3.0.0-alpha1 在hadoop-2.x的基础上集成了大量的新特性。不过这个alpha版本不能保证API的稳定性,需要注意。

3. 关于JAVA版本

必须使用java8及以上版本才能使用hadoop3.0

4. 支持erasure encoding纠错码

HDFS支持纠编码erasure encoding,简称EC技术。EC技术可以防止数据丢失,又可以解决HDFS存储空间翻倍的问题。劣势是:

一旦数据需要恢复,会......

关于设计前瞻性

公司应用kafka也有一段时间,或多或少都有些问题暴露出来。例如,一开始设计分区数的时候过于保守,导致后续client消费成瓶颈时没法通过增加一个消费者组的线程来增加消费速度了。

这个经验教会我一个道理:

使用一个新的平台也好,中间件也好。对于其性能和瓶颈应该有个前瞻性的规划,这个很重要。例如kafka在设计分区数的时候,应该仔细考虑当前消费者线程的消费能力。考虑未来数据规模增长后,消费者必然需要消费更多的数据从而保证不造成数据堆积。即消费者和生产者之间要保持平衡,不能让消费的比生产的慢,从而影响应用。这个前瞻性的规划应该是较为详细的,可控的。

数据规模的增长,消费者线程数的增加,都是应......

maven setting设置说明

转载自:Maven配置setting.xml详细说明

这里以maven 3.0.4版本为例

<?xml version="1.0" encoding="UTF-8"?>

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://m......

maven中的pom.xml标签说明

本文转自 史上最全的maven pom.xml文件教程详解。 为了方便自己查阅就转载了下,感谢作者的无私奉献~

<project xmlns="http://maven.apache.org/POM/4.0.0"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd ">

......

maven常用插件总结

1. 介绍

无论是自己写代码,还是看一些开源的源码,都能看到大量maven插件的应用。本文这里对常用的maven插件做一些简单总结。该文章内容会不断完善。

从maven插件官方文档来看,maven插件一般概括起来可以分为:

类别

说明

Core plugins

Plugins corresponding to default core phases (ie. clean, compile). They may have multiple goals as well.

Packaging types/tools

These plugins relate to packagin......

JAVA中的注解

1. 介绍

Java注解是附加在代码中的一些元信息,用于编译和运行时进行解析和使用,起到说明、配置的功能。注解不会影响代码的实际逻辑,仅仅起到辅助性的作用。注解作为一种重要的技术已经在主流的库中广泛使用。XML和注解都可以用来描述元数据。假如你想为应用设置很多的常量或参数,这种情况下,XML是一个很好的选择,因为它不会同特定的代码相连。如果你想把某个方法声明为服务,那么使用Annotation会更好一些,因为这种情况下需要注解和方法紧密耦合起来,开发人员也必须认识到这点。可见,XML和注解各有自己的用武之地。

一般来说注解的主要作用就是:

描述元数据

完成重复性工作: 注解的这个功能也......

JAVA中的动态代理

1. 动态代理介绍

动态代理是一项重要的技术。在以下场景中被广泛应用:

数据库连接

事务管理

单元测试中动态mock对象

AOP编程中动态织入横切逻辑

等等

常见的动态代理实现方式主要是使用JDK和cglib

1.1 jdk

JDK动态代理主要涉及到java.lang.reflect包中的两个类:

Proxy: Proxy利用InvocationHandler动态创建一个符合某一接口的实例,生成目标类的代理对象。

InvocationHandler: InvocationHandler是一个接口,通过实现该接口定义横切逻辑,并通过反射机制调用目标类的代码,动态将横切逻辑和业务......

Linkedin ESPRESSO数据库

1. 介绍

Espresso的详细说明见博文:Introducing Espresso - LinkedIn's hot new distributed document store

本文对博文内容做些简单介绍总结。

2. 动机

Espresso是一个分布式的、容错的NoSQL数据库。Linkedin有Oracle(RDBMS)和Voldemort(自己研发的Key value存储)。ESORESSO是在RDBMS和NOSQL之间的一个产品。可以借助下图来理解:

Linkedin的Kafka Ecosystem

1. 介绍

本文主要是看了Kafka Ecosystem at LinkedIn这篇博文之后的一些总结。

2. kafka在linked现状

自2010开发使用以来,现在已经每天在1400个broker上处理1.4万亿条消息。kafka的持久性、低延迟等特性使得其在linkedin促成了一些新的使用案例。主要包括如下:

2.1 Replacing MySQL replication——Espresso

Espresso的详细说明见博文:Introducing Espresso - LinkedIn's hot new distributed document store

选择合适的kafka分区数

1. 介绍

如何确定kafka的分区数相信是大家在使用kafka过程中比较关心的一个问题。早些时候,阿里的rocket mq在github上有和kafka比较(这里和老版本的kafka比较,估计是0.8的,现在是0.10.x)的说明。不过现在已经换掉了,而且也看到rocket mq支持集成kafka。可见kafka还是确实越来越受到市场认可。那篇老文章可以看网上这篇博文:RocketMQ与Kafka对比(18项差异)。

文中提到了“Kafka单机超过64个队列/分区,Load会发生明显的飙高现象,队列越多,load越高,发送消息响应时间变长”这个问题。针对这个问题,其实kafka的开发者已......

kafka消息堆积处理

1. 介绍

今天双11,公司kafka上部分消费者对应的分区上堵了不少数据。堵数据的问题主要是由于一开设计的时候,没有考虑足够周全。那时候由于担心分配太多分区导致影响延迟,从而在分配分区上比较“小气”。 针对分区数对kafka的影响可以参考我的另外一篇文章:选择合适的kafka分区数。

本文主要针对kafka消息堆积时,提供一些解决方法和思路。

2. 延迟和消息堆积

增加分区数,比较担心的是较多分区数导致延迟增加。针对这个问题,其实我们主要应该搞明白我们性能的瓶颈到底在什么地方。绝大部分时候,以及绝大部分应用,性能瓶颈都是在生产者和消费者上。由于分区数增多导致分区复制延迟带来的性能影响......

分布式跟踪系统dapper

1. 介绍

简单研究过全链路的同学想必一定看过google dapper的这篇论文。我这里直接看了中文翻译的,并且对其内容进行了一些总结。具体地址见:Dapper分布式跟踪系统-翻译

2. 为什么使用dapper

文章首先举了一些例子说明了跟踪系统的必要性。尤其当一个用户操作设计大量的服务的时候,跟踪系统可以方便我们定位到底是在哪个服务的调用上产生了问题。

3. 跟踪系统在设计时需要考虑的问题

低消耗: 由于是7*24的监控,所以开销要小,不影响在线服务

应用级透明:应用程序不需要关注如何使跟踪系统生效。可以在线程调用、控制流、RPC库中埋点来做到。

扩展性: 支持更多的服务和更大......

HTTP2的优点

1. 介绍

知乎上HTTP/2.0 相比1.0有哪些重大改进?中LeoZhang的回答不错可以看看。本文简单总结下。

2. 优点

主要优点肯定就是性能提升大了。但是为什么性能提升大,其实主要还是由以下方面的改进带来的。

2.1 多路复用

多路复用 (Multiplexing):多路复用允许同时通过单一的 HTTP/2 连接发起多重的请求-响应消息。也就是说一个TCP连接可以一次发送和接受多个请求拉。这样实际上就避免了突发性和短时性的HTTP连接性能差的问题了(因为TCP协议里面有慢启动,开始都很慢的).

kafka脚本工具

1. 介绍

kafka本身提供了很多方便使用的脚本工具。

本文主要介绍一下这些常用工具的介绍。一些内容之间转自博文Kafka设计解析(三)- Kafka High Availability (下),请悉知。

2. topic tool

 $KAFKA_HOME/bin/kafka-topics.sh,该工具可用于创建、删除、修改、查看某个Topic,也可用于列出所有Topic。另外,该工具还可修改以下配置。忘记用法的话,可以直接运行该命令,不带参数,可以直接给出帮助提示。......

kafka高可用原理

1. 介绍

以前分享过一篇文章kafka原理以及设计实现思想,但是很多东西讲的还是不够深入。今天这篇文章主要分析下kafka的高可用原理。

文章主要内容转自Kafka设计解析(二)- Kafka High Availability (上),我只选择了一些自己尚未掌握的或者自己认为比较重要的内容作总结。

关于replication、ISR、分区复制、leader、controller等基本概念在以前的文章都已经说过了。这里就直接就针对某些概念进行更加细致的学习。

2. replication

2.1 replica复制算法

将所有Broker(假设共n个Broker)和待分配的Pa......

zookeeper有哪些坑?

1. 介绍

不得不说ZK的出现是解决分布式一致性问题的一道曙光。但是事务都是发展的,即使是ZK也不是十全十美的。

今天和小伙伴聊了点ZK的问题。一些ZK使用攻略也希望在此跟大家分享下。

2. ZK的缺点

读写性能不佳(这个还需要再验证,我也只是听说):ZK的读写性能测试可以参考ZooKeeper service latencies under various loads & configurations

不适合主数据存储:zk的quorum选举适用在共享集群配置而不是主数据存储。因为其吞吐量低,容忍故障所需要的冗余副本比较多

只容忍(N-1)/2的故障

ZK设计的时候是基于s......

kafka消费者原理详解

1. 介绍

以前分享过一篇文章kafka原理以及设计实现思想,但是很多东西讲的还是不够深入。今天这篇文章主要分析下消费者的具体设计和原理。

文章主要内容转自Kafka设计解析(四)- Kafka Consumer设计解析,我只选择了一些自己尚未掌握的或者自己认为比较重要的内容作总结。

2. consumer rebalance算法

这里引用下参考资料的内容:

2.1 old consumer

较老的consumer的相关元信息是保存在zk上的。其结构如下(图片来......

kafka生产者原理详解

1. 介绍

以前分享过一篇文章kafka原理以及设计实现思想,但是很多东西讲的还是不够深入。今天这篇文章主要分析下生产者的具体设计和原理。

这篇文章参考了很多其他资料,使用的版本也较老,基本上是0.8的版本。后续有时间我会更新0.10中新的变化。

2. kafka发送流程

kafka的发送流程可以简单概括为如下的图。这幅图我们可以分为三部分来理解。中间的(深蓝色矩形)部分的流程是发送的核心流程(同步发送);左边(淡蓝色)是异步发送时相关的额外流程,右边(黄色)是客户端更新元信息相关的流程。简单概括为:

同步发送流程

异步发送流程

更新元信息流程

后续我们将对这三个流程分别进行分......

Effective Spark RDDs with Alluxio

1. 介绍

近期,作者给我推荐了一篇spark on alluxio的文章。原文地址:Effective Spark RDDs with Alluxio

本文不会全文翻译,主要提取一些文章的内容和观点结合自己的理解做下总结。

2. 引言

文章首先说了像百度、去哪儿这些企业都已经在生产上用上了alluxio,效果很好(spark streaming job提升15倍-300倍)。

在不使用alluxio之前,可能由于内存不足会导致spark job性能变差,甚至无法完成。本文也主要介绍alluxio是如何去改进spark性能,以及使用spark on alluxio的注意点。文中采用s......

Google Guava介绍

1. 介绍

guava是google开源的一个工具包。其中有很多通用的功能,例如字符串处理、缓存、非空处理等等。

关于其功能和使用说明可以参考并发网上翻译的文章,这里不再赘述:

Google Guava官方教程(中文版)

为什么使用guava可以引用其官方PPT中的观点:

其实你可能发现,一些基本的校验完全可以自己写,但是。。

这些东西仅仅是看起来比较简单,实际上可能比我们想想的要复杂;

用一个公共的lib,别人可能更加容易理解你的代码;

当你用一个主流的开源包的时候,你可能在主流中;

当你发现一个可以提升的点的 时候,如果仅仅是修改自己的私有包,可能没有多少人能够受益;

2. 使用......

使用JAVA并发标注

1. 介绍

看过《JAVA并发实战》应该对其中使用的注解有印象。使用注解来标注程序是否线程安全对维护代码很有好处。

2. 使用

引入maven依赖即可

<!-- https://mvnrepository.com/artifact/net.jcip/jcip-annotations -->

<dependency>

<groupId>net.jcip</groupId>

<artifactId>jcip-annotations</artifactId>

<version>1.0&l......

使用terasort来对mapreduce性能测试

1. 介绍

首先假设你已经安装好了hadoop。

从maven仓库下载符合自己版本的测试jar,并且放到服务器上

2. 使用teragen生成数据

hadoop jar hadoop-*-examples.jar teragen 参数1 参数2

teragen的参数解释:

参数1:表示要产生的数据的行数。Teragen每行数据的大小是100B。

要产生1T的数据,需要的行数=102410241024*1024/100=10995116277行

参数2 : 产生的数据放置的文件夹地址

默认的teragen的启动的map数比较少,只有2个,如果要指定map数可以加-Dmapred.ma......

Quasar和Akka比较

1. 介绍

本文主要参考文章:Quasar and Akka – a Comparison

本文主要就是总结翻译一下以上文章的观点,有些地方会精简。想查看详细的,建议可以看英文原文。

本文中的协程和纤程是一个意思哦。

2. actor并发模型

其实我之前在《七周七并发模型》的读书笔记中也总结过actor模型,可以看——第五章:Actor

基于actor并发模型主要有以下好处:

2.1 Adaptive behaviour(不知道怎样翻译准确)

actor之间只通消息队列来通信,这样可以让各个actor松耦合。基于这样的特点,有以下优点(都可以归纳为adaptive behavi......

iftop工具监控网络流量

1. 介绍

今天介绍的工具可以方便我们实时监控进程的网络流量情况。这个在帮助我们排查网络异常的问题时非常有用。

2. 安装

#安装依赖

yum install flex byacc libpcap ncurses ncurses-devel gcc make

# 进入安装目录

sudo ./configure

sudo make

sudo make install

iftop下载地址

可以选择0.17版本,这个是最后发布的稳定版了。

3. 使用

3.1 界面

界面上面显示的是类似刻度尺的刻度范围,为显示流量图形的长条作标尺用的。

中间的<= =>这两个左右箭头......

alluxio网络流量异常分析

1. 介绍

最近在使用alluxio的时候发现了网络流量比较大。我们将MR程序运行在alluxio上,发现即使做好了mapper的data local仍然会存在比较多的异常流量。这部分网络IO会对性能造成比较大的影响。我将按照以下步骤来分析这个alluxio异常网络流量的问题。这个步骤也比较具备通用性。

确定流量消耗较大的端口:使用iftop和netstat确定流量消耗较大的进程和端口

抓包:使用tcpdump抓取流量较大端口的包

分析:使用winshark分析包内数据

2. 准备工作

2.1 tcpdump

在运行alluxio的各个节点上安装tcpdump。

yum inst......

使用nload监控网络流量

1. 介绍

监控磁盘IO,大家可能都比较熟悉iostat。还不熟悉的可以参考别人的博客Linux IO实时监控iostat命令详解。

今天要推荐的是监控网络流量的工具nload。很多时候借助这样的工具能够让我们发现那些由于网络IO造成的性能瓶颈。

当然还有其他工具 vnstat或者iftop这里不作为讨论的主题。

2. 安装

如果yum仓库有的话可以直接

yum install nload

如果没有的话可以自己从sourceforge的nload项目下下再

然后执行以下命令安装

# 安装依赖

yum install gcc gcc-c++ ncurses-devel

# 解压

......

大规模分布式存储系统:基础篇

1. 概述

1.1 分布式存储概念

介绍了分布式存储涉及的特点和主要技术。诸如一致性、容错、负载均衡、可扩展这些基本都是分布式系统都包含的概念和技术点。对于存储而言,数据的压缩和解压也比较重要。

1.2 分布式存储分类

存储需求主要考虑:

非结构化数据

结构化数据

半结构化数据(HTML)

存储系统的分类主要是:

分布式文件系统:一般存储如下三种类型数据

分布式键值系统: 一致性哈希是其中常用的数据分布技术。redis等产品属于该范畴。

分布式......

包冲突(class not found)的万能解决方法

1. 介绍

发生包冲突的事情是很多的。近来在做mapreduce编程的时候遇到一个报错问题如下:

java.lang.NoSuchMethodError: org.apache.commons.codec.binary.Base64.encodeBase64String([B)Ljava/lang/String;

针对这样的问题我们该如何解决呢?

2. 解决办法

我们只要在程序中加入一条打印语句,在运行时让他输出所缺的包的运行时查找路径即可。

System.out.println(" codec location "+org.apache.commons.code......

Linkedin Kafka Monitor安装使用

1. 介绍

之前在kafka manager使用教程这篇文章介绍了如何安装使用kafka manager。然而,在实际使用过程中,kafka manager提供的监控内容还不够满足生产环境下所需的监控要求。至于原因,大家可以参考我下面这篇重要参考资料(强烈推荐看一下,因为是从linkedin工程师那里翻译过来的,很有参考价值):

重要参考资料:LinkedIn开源Kafka Monitor

2. 安装

2.1 安装gradle和jdk

,jdk安装这里不废话了。安装gradle可以去官网下载安装文件。下载好后到服务器上解压,并且配置环境变量,并且用source命令生效。

# grad......

Kafka生产者和消费者监控拾遗

1. 介绍

在kafka0.10.x监控项分析一文中,我们提到过,如何来监控broker、生产者和消费者。

生产者和消费者的监控需要给出client-id才能从通过JMX来监控。client.id属性可以在kafka属性配置配置文件中指定。

2. 疑惑

我们知道consumer经常会以一个组的形式来运行,同一个group下的消费者如果都采用同一个clinet-id,我们是否能以group的级别来进行监控呢?因为通过文档资料和自己查看JMX的MBean发现Kafka并不显示提供以group级别来监控消费者消费消息的情况。

为了验证猜想,我们简单做个实验。运行一个6个线程的消费者来消费消......

epoll实现原理浅析

1. 介绍

epoll几本上可以理解为异步非阻塞的代名词了,本身也是比较重要的概念。这里我们对其核心的原理做些简单分析理解。

2. poll,select和epoll

epoll也称为reactor、事件驱动、事件轮询。在epoll之前的是poll和select。

2.1 poll/select缺点

每次调用时要重复地从用户态读入参数。

每次调用时要重复地扫描文件描述符。

每次在调用开始时,要把当前进程放入各个文件描述符的等待队列。在调用结束后,又把进程从各个等待队列中删除。

2.2 epoll如何克服poll/select缺点

在实际应用中,select/poll监视的文件......

c10k问题与异步非阻塞

1. 什么是C10K问题

字面意思就是concurrency 10K,实际上就是说如何解决大并发问题。

2. 常见解决方案

2.1 异步非阻塞

2.1.1 I/O模型

出现C10K问题,各个操作系统都从OS层面提供了异步非阻塞的IO模型

FressBS有kqueue,Windows有IOCP,linux有epoll。

2.1.2 新IO模型的产物

在这种异步非阻塞IO模型下,也诞生了很多优秀产品:

nginx:高性能的HTTP和反向代理服务器

libevent:高性能网络库

node.js:基于 Chrome V8 引擎的 JavaScript 运行环境

等等。。。

......

spark on alluxio和MR on alluxio测试(改进版)

1. 介绍

之前我们进行过一次测试,见文章alluxio和spark以及mapreduce性能对比。但是由于硬件限制,alluxio的效果并没有体现出来。

本次我们将重新进行一番测试。我们采用的硬件配置如下所示:

注意注意!!!:最新的MR on alluxio测试请参考文章MapReduce on alluxio性能测试

ip

cpu

核数

内存

承担角色

10.8.12.16

Intel(R) Xeon(R) CPU E5-2650 v3 @ 2.30GHz

40核

128GB

namenode,alluxio-master,datanode,alluxio-worker......

hadoop2.7的HA配置

1. 介绍

之前写过一篇关于hadoop2.7安装的文章,但是里面没有说如何配置HA避免单点故障。今天准备总结下。

较早版本的hadoop虽然也支持通过secondarynamenode来恢复namenode,但是其原理是基于检查点的,仍然会丢数据。新的基于主备的HA通过JNs实时同步edit log可以避免数据丢失的情况。

主要参考资料:HDFS High Availability Using the Quorum Journal Manager

我的机器配置如下:

hostname

role

a1

namenode active,datanode,yarn manage......

alluxio使用非root用户启动集群的问题分析

1. 介绍

实际部署alluxio的时候,我们可能都是在非root用户下进行的。但是在其它集群的时候可能会有如下报错,导致无法启动worker.

2016-09-21 00:22:07,124

INFO MASTER Connecting to 10.81.12.166 as appadmin...

2016-09-21 00:22:07,126

INFO MASTER Connecting to 10.81.12.176 as appadmin...

Pseudo-terminal will not be allocated because stdin is not a t......

alluxio基于HDFS的master容错配置

1. 介绍

alluxio这种master-slave结构必然涉及到单点故障。所以配置master的容错是必须的。

如果alluxio还没装好请参考我的其他文章。

本文前提是你已经配好了HA的HDFS。

hadoop配置HA我没写文章,建议参考官方文档:HDFS High Availability

我们采用的实验配置如下:

hostname

role

a1(10.8.12.16)

alluxio-master,alluxio-worker,hadoop master,hadoop slave

a2(10.8.12.17)

alluxio-standby-master,......

kafka tools安装使用

1. 介绍

虽然kafka提供了一些工具,但是都比较简陋。近期有个需求就是希望动态调整某个topic的replicas数量。虽然网上有一些方法,但是都比较繁琐。今天就推荐一款linkedin开源的工具kafka-tools

2. 安装

准备工作:

In addition, you will need to run it on a host that has the following:

A copy of the Kafka admin tools (including kafka-reassign-partitions.sh)

Access to the Zookeeper ense......

kafka消息写入alluxio

1. 介绍

本节主要介绍如何将kafka消息写入alluxio.

在学习本文前请保证已经读过我的以下文章:

alluxio读写HDFS代码示例

2. 主要代码

由于之前做过其他很多测试,所以有其他相关的函数接口,请留意!

2.1 producer

import org.apache.kafka.clients.producer.KafkaProducer;

import org.apache.kafka.clients.producer.Producer;

import org.apache.kafka.clients.producer.ProducerRecord;

import......

alluxio读写HDFS代码示例

1. 介绍

本文介绍下如何通过alluxio读写HDFS。我们在WINDOWS下创建MAVEN工程编写代码。

2. 前提

查看本文的前提是你已经安装好了alluxio并且已经集成了HDFS。如果还没有,请查看:

alluxio1.2.0 for hadoop 2.7.2安装

如果连hadoop还没有安装,可以参考:

hadoop2.7.2+spark1.6.2环境搭建教程

如果在WINDOWS下访问hadoop集群还不会可以查看

idea中调试hadoop mapreduce程序(windows)

3. 添加alluxio的jar包

这个如果你下载的是预编译好的alluxio,则在......

读写HDFS操作例子

1. 介绍

采用hadoop 2.7.2的API

2. 代码

我们使用MAVEN工程,如果需要哪些依赖还不清楚,请参考我的文章idea中调试hadoop mapreduce程序(windows)

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.fs.FSDataInputStream;

import org.apache.hadoop.fs.FSDataOutputStream;

import org.apache.hadoop.fs.FileSystem;

import org.apache.h......

spark2.0集群部署

1. 介绍

之前hadoop2.7.2+spark1.6.2环境搭建教程一文对于spark的安装其实讲的比较简单,而且也不是真正意义上的集群部署。本篇将对spark集群进行完整的安装。

2. 安装spark

在开始spark的安装前,请确保已经安装了hadoop集群。我们采用的hadoop集群总共3台机器:mysql3(master,slave),mysql4(slave),mysql5(slave)。由于spark也要集群之间互相无密码等设置。为了方便起见,我们就采用hadoop的3台机器部署spark集群,方便我们快速假设起环境进行测试和学习。

PS:spark貌似不能修改监听的H......

idea中调试hadoop mapreduce程序(windows)

1. 介绍

本文主要参考资料为:IDEA 调试 Hadoop程序

2. win下安装hadoop

我们这里使用2.7.2版本。首先到hadoop官方网站下载hadoop。

PS: 本教程前提是你已经安装了JDK。

在windows下解压后配置如下的环境变量:

HADOOP_HOME:D:\soft\dev\hadoop-2.7.2

HADOOP_BIN_PATH:%HADOOP_HOME%\bin

HADOOP_PREFIX:%HADOOP_HOME%

在Path后面加上%HADOOP_HOME%\bin;%HADOOP_HOME%\sbin;

alluxio和spark以及mapreduce性能对比

1. 介绍

alluxio看了很多资料,其性能让人十分期待。据说用alluxio的spark性能可以比没用的好10倍以上。用alluxio的MR和没用alluxio的MR相比肯定就提升更大了。

在开始测试前,我对结果还是比较有信心的。因为看了下alluxio在google group上有其他使用者已经对alluxio和spark性能做了测试。详情请点击:

Performance of running Spark/Mapreduce on Alluxio NO better than that on HDFS

PS: 不要被这个题目误导,这个网友一开始是提问的,觉得alluxio没有提升......