Hadoop2.0详细配置教程

Windows 炫龙网 2个月前 (08-13) 24次浏览 已收录 0个评论 扫描二维码

前言

Hadoop2.0介绍

Hadoop是 apache 的开源项目,开发的主要目的是为了构建可靠,可拓展 scalable ,分布式的系统, hadoop 是一系列的子工程的总和,其中包含

1. hadoop common :为其他项目提供基础设施

2. HDFS :分布式的文件系统

3. MapReduce : A software framework for distributed processing of large data sets on compute clusters 。一个简化分布式编程的框架。

4. 其他工程包含: Avro( 序列化系统 ) , Cassandra( 数据库项目 ) 等

Hadoop,以 Hadoop 分布式文件系统( HDFS ,Hadoop Distributed Filesystem )和 MapReduce ( Google MapReduce 的开源实现)为核心的 Hadoop 为用户提供了系统底层细节透明的分布式基础架构。

对于 Hadoop 的集群来讲,可以分成两大类角色: Master 和 Salve 。一个 HDFS 集群是由一个 NameNode 和若干个 DataNode 组成的。其中 NameNode 作为主服务器,管理文件系统的命名空间和客户端对文件系统的访问操作;集群中的 DataNode 管理存储的数据。 MapReduce 框架是由一个单独运行在主节点上的 JobTracker 和运行在每个集群从节点的 TaskTracker 共同组成的。主节点负责调度构成一个作业的所有任务,这些任务分布在不同的从节点上。主节点监控它们的执行情况,并且重新执行之前的失败任务;从节点仅负责由主节点指派的任务。当一个 Job 被提交时, JobTracker 接收到提交作业和配置信息之后,就会将配置信息等分发给从节点,同时调度任务并监控 TaskTracker 的执行。

从上面的介绍可以看出, HDFS 和 MapReduce 共同组成了 Hadoop 分布式系统体系结构的核心。 HDFS 在集群上实现分布式文件系统, MapReduce 在集群上实现了分布式计算和任务处理。 HDFS 在 MapReduce 任务处理过程中提供了文件操作和存储等支持, MapReduce 在 HDFS 的基础上实现了任务的分发、跟踪、执行等工作,并收集结果,二者相互作用,完成了 Hadoop 分布式集群的主要任务。

为什么要使用2.0版本(来自董的博客)

该版本提供了一些新的、重要的功能,包括:

? HDFS HA ,当前只能实现人工切换。

Hadoop HA 分支 merge 进了该版本,并支持热切,主要特性包括:

( 1 ) NN 配置文件有改变,使得配置更加简单

( 2 ) NameNode 分为两种角色: active NN 与 standby NN , active NN 对外提供读写服务,一旦出现故障,便切换到 standby NN 。

( 3 )支持 Client 端重定向,也就是说,当 active NN 切换到 standby NN 过程中, Client 端所有的进行时操作都可以无缝透明重定向到 standby NN 上, Client 自己感觉不到切换过程。

( 4 ) DN 同时向 active NN 和 standby NN 汇报 block 信息。

具体设计文档参考: https://issues.apache.org/jira/browse/HDFS-1623

当前 Hadoop HA 只能实现人工切换,该功能在某些情况下非常有用,比如,对 NN 进行升级时,先将 NN 切换到 standby NN ,并对之前的 active NN 进行升级,升级完成后,再将 NN 切换至升级后的 NN 上,然后对 standby NN 进行升级。

? YARN ,下一代 MapReduce 这是一套资源统一管理和调度平台,可管理各种计算框架,包括 MapReduce 、 Spark 、 MPI 等。

YARN 是一套资源统一管理和调度平台,可管理各种计算框架,包括 MapReduce , Spark , MPI 等。尽管它是完全重写而成,但其思想是从 MapReduce 衍化而来的,并克服了它在扩展性和容错性等方面的众多不足。具体参考:

http://hadoop.apache.org/common/docs/r0.23.0/hadoop-yarn/hadoop-yarn-site/YARN.html

? HDFS Federation ,允许 HDFS 中存在多个 NameNode ,且每个 NameNode 分管一部分目录,而 DataNode 不变,进而缩小了故障带来的影响范围,并起到一定的隔离作用。

传统 HDFS 是 master/slave 结构,其中, master (也就是 NameNode )需要存储所有文件系统的元数据信息,且所有文件存储操作均需要访问多次 NameNode ,因而 NameNode 成为制约扩展性的主要瓶颈所在。为了解决该问题,引入了 HDFS Federation ,允许 HDFS 中存在多个 NameNode ,且每个 NameNode 分管一部分目录,而 DataNode 不变,也就是 “ 从中央集权专政变为各个地方自治 ” ,进而缩小了故障带来的影响范围,并起到一定的隔离作用。具体参考:

http://dongxicheng.org/mapreduce-nextgen/nextgen-mapreduce-introduction/

? 基准性能测试

该版本中为 HDFS 和 YARN 添加了性能的基准测试集,其中 HDFS 测试包括:

( 1 ) dfsio 基准测试 HDFS I/O 读写性能

( 2 ) slive 基准测试 NameNode 内部操作的性能

( 3 ) scan 基准测试 MapReduce 作业访问 HDFS 的 I/O 性能

( 4 ) shuffle 基准测试 shuffle 阶段性能

( 5 ) compression 基准测试 MapReduce 作业中间结果和最终结果的压缩性能

( 6 ) gridmix-V3 基准测试集群吞吐率

YARN 测试包括 :

( 1 ) ApplicationMaster 扩展性基准测试

主要测试调度 task/container 的性能。与 1.0 版本比较,大约快 2 倍。

( 2 ) ApplicationMaster 恢复性基准测试

测试 YARN 重启后,作业恢复速度。稍微解释一下 ApplicationMaster 恢复作业的功能:在作业执行过程中, Application Master 会不断地将作业运行状态保存到磁盘上,比如哪些任务运行完成,哪些未完成等,这样,一旦集群重启或者 master 挂掉,重启后,可复原各个作业的状态,并只需重新运行未运行完成的哪些任务。

( 3 ) ResourceManager 扩展性基准测试

通过不断向 Hadoop 集群中添加节点测试 RM 的扩展性。

( 4 )小作业基准测试

专门测试批量小作业的吞吐率

具体参考:

http://hortonworks.com/blog/delivering-on-hadoop-next-benchmarking-performance/

? 通过 protobufs 来提供HDFS 和YARN 的兼容性

Wire-compatibility for both HDFS & YARN

Hadoop RPC采用了Hadoop自己的一套序列化框架对各种对象进行序列化反序列,但存在一个问题:扩展性差,很难添加新的数据类型同时保证版本兼容性。为此,Hadoop 2.0将数据类型模块从RPC中独立出来,成为一个独立的可插拔模块,这样允许用户根据个人爱好使用各种序列化/反序列化框架,比如thrift,arvo,protocal Buffer等,默认情况采用Protocal Buffer。

http://hortonworks.com/blog/rpc-improvements-and-wire-compatibility-in-apache-hadoop/

除了以上五个特性外,还有两个非常重要的特性正在研发中,分别是:

? HDFS快照

用户可在任意时间对 HDFS做快照,这样,在HDFS出现故障时,可将数据恢复到某个时间点的状态。具体参考:

http://hortonworks.com/blog/snapshots-for-hdfs/

? HDFS HA自动切换

前面介绍的第一个功能“HDFS HA”当前只能实现人工切换,也就是说,管理员运行某个命令,使得acitve NN切换到standby NN上。以后将支持自动切换,也就是说,监控模块可检测出active NN何时出现故障,并自动将之切换到standby NN上,这样可大大较小Hadoop集群运维人员的工作量。具体参考:

http://s.apache.org/hdfs-autofailover

准备

机器准备

物理机器总共4台,想配置基于物理机的hadoop集群中包括 4 个节点: 1 个 Master , 3 个 Salve ,节点之间局域网连接,可以相互 ping 通

Ip分布为

192.168.1.201 hadoop1

192.168.1.202 hadoop2

192.168.1.203 hadoop3

192.168.1.204 hadoop4

操作系统为 CentOS 5.6 64bit

Master机器主要配置NameNode和JobTracker的角色,负责总管分布式数据和分解任务的执行;3个Salve机器配置DataNode和TaskTracker的角色,负责分布式数据存储以及任务的执行。其实应该还应该有1个Master机器,用来作为备用,以防止Master服务器宕机,还有一个备用马上启用。后续经验积累一定阶段后补上一台备用Master机器。

创建账户

使用root登陆所有机器后,所有的机器都创建 hadoop 用户

useradd hadoop

passwd hadoop

此时在 /home/ 下就会生成一个 hadoop 目录,目录路径为 /home/hadoop

创建相关的目录

定义需要数据及目录的存放路径

定义代码及工具存放的路径

mkdir -p /home/hadoop/source

mkdir -p /home/hadoop/tools

定义数据节点存放的路径到跟目录下的hadoop文件夹, 这里是数据节点存放目录需要有足够的空间存放

mkdir -p /hadoop/hdfs

mkdir -p /hadoop/tmp

mkdir -p /hadoop/log

设置可写权限

chmod -R 777 /hadoop

定义 java安装程序路径

mkdir -p /usr/java

安装

安装JDK

http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u32-downloads-1594644.html

在以上连接下载 linux 64 下的 jdk 的安装文件: jdk-6u32-linux-x64.bin

1 ,将下载好的 jdk-6u32-linux-x64.bin 通过 SSH 上传到 /usr/java 下

scp -r ./jdk-6u32-linux-x64.bin root@hadoop1:/usr/java

2 ,进入 JDK 安装目录 cd /usr/java 并且执行 chmod +x jdk-6u32-linux-x64.bin

3 ,执行 ./jdk-6u32-linux-x64.bin

4 ,配置环境变量,执行 cd /etc 命令后执行 vi profile ,在行末尾添加

export JAVA_HOME=/usr/java/jdk1.6.0_32

export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:/lib/dt.jar

export PATH=$JAVA_HOME/bin:$PATH

5 ,执行 chmod +x profile 将其变成可执行文件

6 ,执行 source profile 使其配置立即生效

source /etc/profile

7 ,执行 java -version 查看是否安装成功

这个步骤所有机器都必须安装

[root@hadoop1 bin]# java -version

java version “1.6.0_32”

Java(TM) SE Runtime Environment (build 1.6.0_32-b05)

Java HotSpot(TM) 64-Bit Server VM (build 20.7-b02, mixed mode)


炫龙网络 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Hadoop2.0详细配置教程
喜欢 (0)
[1353713598@qq.com]
分享 (0)
关于作者:
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址