阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Hadoop 2.0 详细配置教程

191次阅读
没有评论

共计 21895 个字符,预计需要花费 55 分钟才能阅读完成。

PS:文章有部分参考资料来自网上,并经过实践后写出,有什么问题欢迎大家联系我。

大家可以尝试下 Ambari 来配置 Hadoop 的相关环境

快速的部署 Hadoop,Hbase 和 Hive 等并提供 Ganglia 和 Nagios 的监控功能, 强烈推荐使用.

http://www.linuxidc.com/Linux/2014-05/101531.htm 

Hadoop 2.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 分布式集群的主要任 务。

————————————– 分割线 ————————————–

相关阅读

Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm

Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm

Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm

Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm

单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm

Hadoop LZO 安装教程 http://www.linuxidc.com/Linux/2013-01/78397.htm

Hadoop 集群上使用 Lzo 压缩 http://www.linuxidc.com/Linux/2012-05/60554.htm

————————————– 分割线 ————————————–

为什么要使用 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 机器。

Hadoop 2.0 详细配置教程

创建账户

使用 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)

 

修改主机名

修改主机名,所有 节点均一样配置
1,连接到主节点 192.168.1.201,修改 network,执行 vim /etc/sysconfig/network,修改 HOSTNAME=hadoop1
2,修改 hosts 文件,执行 cd /etc 命令后 执行 vi hosts,在行末尾添加 :

192.168.1.201 hadoop1
192.168.1.202 hadoop2
192.168.1.203 hadoop3
192.168.1.204 hadoop4

3,执行 hostname hadoop1
4,执行 exit 后重新 连接可看到主机名以修改 OK

其他 节点 也修改主机名后添加 Host, 或者 host 文件可以在后面 执行 scp 覆盖操作

配置 SSH 无密码登陆

SSH 无密 码原理简介 :
首先在 hadoop1 上生成一个密 钥对,包括一个公钥和一个私钥,并将公钥复制到所有的 slave(hadoop2-hadoop4) 上。
然后当 master 通 过 SSH 连接 slave 时,slave 就会生成一个随机数并用 master 的公 钥对随机数进行加密,并发送给 master。
最后 master 收到加密数之后再用私 钥解密,并将解密数回传给 slave,slave 确 认解密数无误之后就允许 master 不 输入密码进行连接了

2,具体步 骤(在 root 用户和 hadoop 用户登陆情况下执行)
1、执行命令 ssh-keygen -t rsa 之后一路回 车,查看刚生成的无密码钥对:cd .ssh 后 执行 ll
2、把 id_rsa.pub 追加到授权的 key 里面去。执行命令 cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys
3、修改权限:执行 chmod 600 ~/.ssh/authorized_keys
4、确保 cat /etc/ssh/sshd_config 中存在如下内容

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
如需修改,则在修改后执行重启 SSH 服 务命令使其生效 :service sshd restart

5、将公 钥复制到所有的 slave 机器上 :scp ~/.ssh/id_rsa.pub 192.168.1.203:~/ 然后 输入 yes,最后 输入 slave 机器的密 码
6、在 slave 机器上 创建 .ssh 文件夹 :mkdir ~/.ssh 然后 执行 chmod 700 ~/.ssh(若文件夹以存在 则不需要创建)
7、追加到授权文件 authorized_keys 执行命令 :cat ~/id_rsa.pub >> ~/.ssh/authorized_keys 然后 执行 chmod 600 ~/.ssh/authorized_keys
8、重复第 4 步
9、验证命令 : 在 master 机器上 执行 ssh 192.168.1.203 发现主机名由 hadoop1 变成 hadoop3 即成功,最后 删除 id_rsa.pub 文件 :rm -r id_rsa.pub
按照以上步 骤分别配置 hadoop1,hadoop2,hadoop3,hadoop4,要求每个都可以无密 码登录

Hadoop 2.0 详细配置教程

源码下载

HADOOP 版本
最新版本 hadoop-2.0.0-alpha 安装包 为 hadoop-2.0.0-alpha.tar.gz
下 载官网地址 :http://www.apache.org/dyn/closer.cgi/hadoop/common/
下 载到 /home/hadoop/source 目录下
wget http://ftp.riken.jp/net/apache/hadoop/common/hadoop-2.0.0-alpha/hadoop-2.0.0-alpha.tar.gz
解压目录
tar zxvf hadoop-2.0.0-alpha.tar.gz

创建软连接
cd /home/hadoop
ln -s /home/hadoop/source/hadoop-2.0.0-alpha/ ./hadoop

Hadoop 2.0 详细配置教程

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2014-05/101532p2.htm

源码配置修改

/etc/profile

配置 环境变量:vim /etc/profile
添加
export Hadoop_DEV_HOME=/home/hadoop/hadoop
export PATH=$PATH:$HADOOP_DEV_HOME/bin
export PATH=$PATH:$HADOOP_DEV_HOME/sbin
export HADOOP_MAPARED_HOME=${HADOOP_DEV_HOME}
export HADOOP_COMMON_HOME=${HADOOP_DEV_HOME}
export HADOOP_HDFS_HOME=${HADOOP_DEV_HOME}
export YARN_HOME=${HADOOP_DEV_HOME}
export HADOOP_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop
export HDFS_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop
export YARN_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop

创建并配置 hadoop-env.sh

vim /usr/hadoop/hadoop-2.0.0-alpha/etc/hadoop/hadoop-env.sh
在末尾添加 export Java_HOME=/usr/java/jdk1.6.0_27

core-site.xml

在 configuration 节点 里面添加属性

<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.1.201:9000</value>
</property>

添加 httpfs 的 选项
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>192.168.1.201</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>

slave 配置

vim /home/hadoop/hadoop/etc/hadoop/slaves
添加 slave 的 IP
192.168.1.202
192.168.1.203
192.168.1.204

配置 hdfs-site.xml

vim /home/hadoop/hadoop/etc/hadoop/hdfs-site.xml
添加 节点

<property>
<name>dfs.replication</name>
<value>3</value>
</property>

<property>
<name>dfs.namenode.name.dir</name>
<value>file:/hadoop/hdfs/name</value>
<final>true</final>
</property>

<property>
<name>dfs.federation.nameservice.id</name>
<value>ns1</value>
</property>

<property>
<name>dfs.namenode.backup.address.ns1</name>
<value>192.168.1.201:50100</value>
</property>

<property>
<name>dfs.namenode.backup.http-address.ns1</name>
<value>192.168.1.201:50105</value>
</property>

<property>
<name>dfs.federation.nameservices</name>
<value>ns1</value>
</property>

<property>
<name>dfs.namenode.rpc-address.ns1</name>
<value>192.168.1.201:9000</value>
</property>
<property>
<name>dfs.namenode.rpc-address.ns2</name>
<value>192.168.1.201:9000</value>
</property>

<property>
<name>dfs.namenode.http-address.ns1</name>
<value>192.168.1.201:23001</value>
</property>

<property>
<name>dfs.namenode.http-address.ns2</name>
<value>192.168.1.201:13001</value>
</property>

<property>
<name>dfs.dataname.data.dir</name>
<value>file:/hadoop/hdfs/data</value>
<final>true</final>
</property>

<property>
<name>dfs.namenode.secondary.http-address.ns1</name>
<value>192.168.1.201:23002</value>
</property>

<property>
<name>dfs.namenode.secondary.http-address.ns2</name>
<value>192.168.1.201:23002</value>
</property>

<property>
<name>dfs.namenode.secondary.http-address.ns1</name>
<value>192.168.1.201:23003</value>
</property>

<property>
<name>dfs.namenode.secondary.http-address.ns2</name>
<value>192.168.1.201:23003</value>
</property>

配置 yarn-site.xml

添加 节点

<property>
<name>yarn.resourcemanager.address</name>
<value>192.168.1.201:18040</value>
</property>

<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>192.168.1.201:18030</value>
</property>

<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>192.168.1.201:18088</value>
</property>

<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>192.168.1.201:18025</value>
</property>

<property>
<name>yarn.resourcemanager.admin.address</name>
<value>192.168.1.201:18141</value>
</property>

<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce.shuffle</value>
</property>

配置 httpfs-site.xml

同步代码到其他机器

1. 同步配置代 码
先在 slaves 的机器上也 创 建
mkdir -p /home/hadoop/source
部署 hadoop 代 码,创 建 软连接,然后只要同步修改 过 的 etc/hadoop 下的配置文件即可
2. 同步 /etc/profile
3. 同步 /etc/hosts
scp -r /etc/profile root@hadoop2:/etc/profile
scp -r /etc/hosts root@hadoop2:/etc/hosts

其他机器以此操作

Hadoop 启动

格式化集群

hadoop namenode -format -clusterid clustername

启动 hdfs

执行
start-dfs.sh

开 启 hadoop dfs 服 务

启动 Yarn

开 启 yarn 资 源管理服 务
start-yarn.sh

 

启动 httpfs

开 启 httpfs 服 务
httpfs.sh start
使得 对外 可以提高 http 的 restful 接口服 务

测试

安装结果验证

验证 hdfs

在各台机器 执行 jps 看 进程 是否都已 经启动 了

[root@hadoop1 hadoop]# jps
7396 NameNode
24834 Bootstrap
7594 SecondaryNameNode
7681 ResourceManager
32261 Jps

[root@hadoop2 ~]# jps
8966 Jps
31822 DataNode
31935 NodeManager

进程启动 正常

验证 是否可以登 陆
hadoop fs -ls hdfs://192.168.1.201:9000/
hadoop fs -mkdir hdfs://192.168.1.201:9000/testfolder
hadoop fs -copyFromLocal ./xxxx hdfs://192.168.1.201:9000/testfolder
hadoop fs -ls hdfs://192.168.1.201:9000/ testfolder

Hadoop 2.0 详细配置教程

 

看以上 执行 是否正常

PS:文章有部分参考资料来自网上,并经过实践后写出,有什么问题欢迎大家联系我。

大家可以尝试下 Ambari 来配置 Hadoop 的相关环境

快速的部署 Hadoop,Hbase 和 Hive 等并提供 Ganglia 和 Nagios 的监控功能, 强烈推荐使用.

http://www.linuxidc.com/Linux/2014-05/101531.htm 

Hadoop 2.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 分布式集群的主要任 务。

————————————– 分割线 ————————————–

相关阅读

Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm

Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm

Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm

Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm

单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm

Hadoop LZO 安装教程 http://www.linuxidc.com/Linux/2013-01/78397.htm

Hadoop 集群上使用 Lzo 压缩 http://www.linuxidc.com/Linux/2012-05/60554.htm

————————————– 分割线 ————————————–

为什么要使用 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 机器。

Hadoop 2.0 详细配置教程

创建账户

使用 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)

 

修改主机名

修改主机名,所有 节点均一样配置
1,连接到主节点 192.168.1.201,修改 network,执行 vim /etc/sysconfig/network,修改 HOSTNAME=hadoop1
2,修改 hosts 文件,执行 cd /etc 命令后 执行 vi hosts,在行末尾添加 :

192.168.1.201 hadoop1
192.168.1.202 hadoop2
192.168.1.203 hadoop3
192.168.1.204 hadoop4

3,执行 hostname hadoop1
4,执行 exit 后重新 连接可看到主机名以修改 OK

其他 节点 也修改主机名后添加 Host, 或者 host 文件可以在后面 执行 scp 覆盖操作

配置 SSH 无密码登陆

SSH 无密 码原理简介 :
首先在 hadoop1 上生成一个密 钥对,包括一个公钥和一个私钥,并将公钥复制到所有的 slave(hadoop2-hadoop4) 上。
然后当 master 通 过 SSH 连接 slave 时,slave 就会生成一个随机数并用 master 的公 钥对随机数进行加密,并发送给 master。
最后 master 收到加密数之后再用私 钥解密,并将解密数回传给 slave,slave 确 认解密数无误之后就允许 master 不 输入密码进行连接了

2,具体步 骤(在 root 用户和 hadoop 用户登陆情况下执行)
1、执行命令 ssh-keygen -t rsa 之后一路回 车,查看刚生成的无密码钥对:cd .ssh 后 执行 ll
2、把 id_rsa.pub 追加到授权的 key 里面去。执行命令 cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys
3、修改权限:执行 chmod 600 ~/.ssh/authorized_keys
4、确保 cat /etc/ssh/sshd_config 中存在如下内容

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
如需修改,则在修改后执行重启 SSH 服 务命令使其生效 :service sshd restart

5、将公 钥复制到所有的 slave 机器上 :scp ~/.ssh/id_rsa.pub 192.168.1.203:~/ 然后 输入 yes,最后 输入 slave 机器的密 码
6、在 slave 机器上 创建 .ssh 文件夹 :mkdir ~/.ssh 然后 执行 chmod 700 ~/.ssh(若文件夹以存在 则不需要创建)
7、追加到授权文件 authorized_keys 执行命令 :cat ~/id_rsa.pub >> ~/.ssh/authorized_keys 然后 执行 chmod 600 ~/.ssh/authorized_keys
8、重复第 4 步
9、验证命令 : 在 master 机器上 执行 ssh 192.168.1.203 发现主机名由 hadoop1 变成 hadoop3 即成功,最后 删除 id_rsa.pub 文件 :rm -r id_rsa.pub
按照以上步 骤分别配置 hadoop1,hadoop2,hadoop3,hadoop4,要求每个都可以无密 码登录

Hadoop 2.0 详细配置教程

源码下载

HADOOP 版本
最新版本 hadoop-2.0.0-alpha 安装包 为 hadoop-2.0.0-alpha.tar.gz
下 载官网地址 :http://www.apache.org/dyn/closer.cgi/hadoop/common/
下 载到 /home/hadoop/source 目录下
wget http://ftp.riken.jp/net/apache/hadoop/common/hadoop-2.0.0-alpha/hadoop-2.0.0-alpha.tar.gz
解压目录
tar zxvf hadoop-2.0.0-alpha.tar.gz

创建软连接
cd /home/hadoop
ln -s /home/hadoop/source/hadoop-2.0.0-alpha/ ./hadoop

Hadoop 2.0 详细配置教程

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2014-05/101532p2.htm

验证 map/reduce

在 master1 上,创建输入目录 :Hadoop fs -mkdir hdfs://192.168.1.201:9000/input
将 /usr/hadoop/hadoop-2.0.1-alpha/ 目 录下的所有 txt 文件复制到 hdfs 分布式文件系 统的目录里,执行以下命令
hadoop fs -put /usr/hadoop/hadoop-2.0.1-alpha/*.txt hdfs://192.168.1.201:9000/input

在 hadoop1 上,执行 HADOOP 自 带的例子,wordcount 包,命令如下
cd /usr/hadoop/hadoop-2.0.1-alpha/share/hadoop/mapreduce
hadoop jar hadoop-mapreduce-examples-2.0.1-alpha.jar wordcount hdfs://192.168.1.201:9000/input hdfs://192.168.1.201:9000/output

hadoop fs -put /usr/hadoop/hadoop-2.0.1-alpha/*.txt hdfs://192.168.1.201:9000/input

在 hadoop1 上,查看结果命令如下 :
[root@master1 hadoop]# hadoop fs -ls hdfs://192.168.1.201:9000/output
Found 2 items
-rw-r–r– 2 root supergroup 0 2012-06-29 22:59 hdfs://192.168.1.201:9000/output/_SUCCESS
-rw-r–r– 2 root supergroup 8739 2012-06-29 22:59 hdfs://192.168.1.201:9000/output/part-r-00000

[root@hadoop1 hadoop]# hadoop fs -cat hdfs://192.168.1.201:9000/output/part-r-00000 即可看到每个 单词的数量

验证 httpfs

HTTPFS 操作:

OPEN,GETFILESTATUS,LISTSTATUS,GETHOMEDIRECTORY,GETCONTENTSUMMARY,GETFILECHECKSUM,GETDELEGATIONTOKEN,GETFILEBLOCKLOCATIONS,INSTRUMENTATION

GETHOMEDIRECTORY 路径无关,返回根 节点路径
http://192.168.1.201:14000/webhdfs/v1/yxq?op=GETHOMEDIRECTORY&user.name=root

Path: “/user/root”

http://192.168.1.201:14000/webhdfs/v1/yxq/bitfoldersub0/bitwaretestfile0.bt?op=GETHOMEDIRECTORY&user.name=root

打开 / 下 载一个文件
http://192.168.1.201:14000/webhdfs/v1/yxq/bitfoldersub0/bitwaretestfile0.bt?op=open&user.name=root

LISTSTATUS 现实目录状态

http://192.168.1.201:14000/webhdfs/v1/yxq/bitfoldersub0?op=LISTSTATUS&user.name=root
http://192.168.1.201:14000/webhdfs/v1/yxq/bitfoldersub0/bitwaretestfile0.bt?op=LISTSTATUS&user.name=root

Hadoop 2.0 详细配置教程

GETFILESTATUS 显示文件的状态
http://192.168.1.201:14000/webhdfs/v1/yxq/bitfoldersub0/bitwaretestfile0.bt?op=GETFILESTATUS&user.name=root

如果是路径 则现实路径信息
http://192.168.1.201:14000/webhdfs/v1/yxq/bitfoldersub0/?op=GETFILESTATUS&user.name=root
http://192.168.1.201:14000/webhdfs/v1/yxq/bitfoldersub0/bitwaretestfile0.bt?op=GETFILESTATUS&user.name=root

GETCONTENTSUMMARY 获取路径下的信息
http://192.168.1.201:14000/webhdfs/v1/yxq?op=GETCONTENTSUMMARY&user.name=root

GETFILECHECKSUM 获取文件的校验值
http://192.168.1.201:14000/webhdfs/v1/yxq/bitfoldersub0/bitwaretestfile0.bt?op=GETFILECHECKSUM&user.name=root

 

以下 实现 方法 还 有 错误现 在:
———————————————————————————————————————————————————————————————————-

GETDELEGATIONTOKEN ERROR

http://192.168.1.201:14000/webhdfs/v1/yxq/bitfoldersub0/bitwaretestfile0.bt?op=GETDELEGATIONTOKEN&user.name=root

GETFILEBLOCKLOCATIONS error

http://192.168.1.201:14000/webhdfs/v1/yxq/bitfoldersub0/bitwaretestfile0.bt?op=GETFILEBLOCKLOCATIONS&user.name=root

INSTRUMENTATION error

http://192.168.1.201:14000/webhdfs/v1/yxq/bitfoldersub0/bitwaretestfile0.bt?op=INSTRUMENTATION&user.name=root

 

性能测试

使用内部的 benchmark 测试 不同文件大小及不同 append 大小的写入情况
hadoop jar /home/hadoop/hadoop/bin/BitwareHadoopBenchmark.jar BitwareHadoopBenchmark hdfs://192.168.1.201:9000 /bitwaretest01/ 0 20 200 4 0

Hadoop 2.0 详细配置教程

 

Hadoop 2.0 详细配置教程

结语

hadoop 的配置及使用在不断的更新中

更多 Hadoop 相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计21895字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中