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

CentOS下Hadoop-2.2.0集群安装配置

442次阅读
没有评论

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

对于一个刚开始学习 Spark 的人来说,当然首先需要把环境搭建好,再跑几个例子,目前比较流行的部署是 Spark On Yarn,作为新手,我觉得有必要走一遍 Hadoop 的集群安装配置,而不仅仅停留在本地 (local) 模式下学习,因为集群模式下跨多台机器,环境相对来说更复杂,许多在本地 (local) 模式下遇不到的问题在集群模式下往往出现,下面将结合实际详细介绍在 CentOS-6.x 系统上 hadoop-2.2.0 的集群安装(其他 Linux 发行版无太大差别),最后运行 WordCount 程序以验证 Hadoop 集群安装是否成功。

机器准备

假设集群中有三台机器,机器可以为三台物理机或虚拟机,保证三台机器可以互相通信,其中一台机器作为 master(运行 NameNode 和 ResourceManager),另外两台机器作为 slave 或 worker(运行 DataNode 和 NodeManager)。下面我准备的机器相关配置如下,注意每台机器要保证用户名一致。

主机名 用户名 IP 地址
master hadoop 192.168.100.10
slave1 hadoop 192.168.100.11
slave2 hadoop 192.168.100.12

工具准备

为了避免在三台机器中重复安装配置工作,我们可以只在 master 机器上做安装配置,然后直接将配置好的软件打包发到每台 slave 机器上解压即可,首先我们应配置 master 机器到其他机器 ssh 免密码登陆,这是所有后续安装工作的前提。

1. 配置 host

在 master 机器中配置 host,在 /etc/hosts 文件中添加以下配置:

192.168.100.10     master
192.168.100.11     slave1
192.168.100.12     slave2

2. 配置 master 免密码登录

首先运行如下命令生成公钥:

[hadoop@master ~]$ ssh-keygen -t  rsa

将公钥拷贝到每台机器中,包括本机,以使得 ssh localhost 免密码登录:

[hadoop@master ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub  hadoop@master
[hadoop@master ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub  hadoop@slave1
[hadoop@master ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub  hadoop@slave2

为了更好的管理集群,切换到 root 身份,重复上述 ssh 无密码设置过程,保证 root 身份也无能密码登录:

[root@master ~]$ su root
[root@master ~]$ ssh-keygen -t  rsa
[root@master ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub  root@master
[root@master ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub  root@slave1
[root@master ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub  root@slave2

完成上述操作后,切换回 hadoop 用户,现在 master 机器可以 ssh 免密码的登录集群中每台机器,下面我们开始现在 master 机器中开始安装配置 hadoop。

JDK 安装

从 Oracle 官网下载 jdk,放到 /home/hadoop 目录下(后续所有安装包默认安装在 /home/hadoop 目录下),我下载的版本为 jdk1.7.0_40,解压后设置 jdk 的环境变量,环境变量最好不要设置为全局的(在 /etc/profile 中),只设置当前用户的环境变量即可.

[hadoop@master ~]$ pwd
/home/hadoop
[hadoop@master ~]$ vim .bash_proflie
 # Java ENVIRONMENT
 export JAVA_HOME=$HOME/jdk1.7.0_40
 export PATH=$JAVA_HOME/bin:$PATH
 export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
[hadoop@master ~]$ source .bash_proflie

Hadoop 安装

从 Apache 官网下载 hadoop 发行版,放到 /home/hadoop 目录下,我下载的版本为 hadoop-2.2.0,解压软件包后,首先设置 hadoop 的环境变量。

[hadoop@master ~]$ vim .bash_proflie
 # HADOOP ENVIRONMENT
 export HADOOP_HOME=$HOME/hadoop-2.2.0
 export HADOOP_MAPRED_HOME=$HADOOP_HOME
 export HADOOP_COMMON_HOME=$HADOOP_HOME
 export HADOOP_HDFS_HOME=$HADOOP_HOME
 export YARN_HOME=$HADOOP_HOME
 export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
 export HDFS_CONF_DIR=$HADOOP_HOME/etc/hadoop
 export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
 export HADOOP_LOG_DIR=$HADOOP_HOME/logs
[hadoop@master ~]$ source .bash_proflie

下面我们开始配置 hadoop,进入 hadoop 的配置目录,首先我们先在 hadoop-env.shyarn-env.sh中设置好 jdk 的路径,然后开始修改 hadoop 相关配置文件。

配置 hdfs

在配置文件 hdfs-site.xml 中添加以下内容。

1
2
3
4
5
6

7

8
9
10
11
12
13
14

15
16
17
<configuration>
<property>
<!-- hdfs 地址 -->
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<!-- hdfs 中每一个 block 所存的份数,我这里设置 1 份,默认是 3 份 -->
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<!-- 开启 hdfs web 访问 -->
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>

配置 yarn

为了能够运行 MapReduce 程序,需要让各个 NodeManager 在启动时加载 shuffle server,Reduce Task 通过该 server 从各个 NodeManager 上远程拷贝 Map Task 产生的中间结果。在配置文件 yarn-site.xml 中添加以下内容。

1
2
3
4
5
6

7

8
9
10
11
12
13
14
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>

配置 MapReduce 计算框架

为了利用 MapReduce 中的 WordCount 验证 hadoop 集群是否安装成功,需要为 hadoop 配置 MapReduce 计算框架。在配置文件 mapred-site.xml 中添加以下内容。

1
2
3
4
5
6

7
<configuration>
<property>
<!-- 指定 yarn 为 MapReduce 的资源调度平台 -->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

配置 slaves

在配置文件 slaves 中添加以下内容。

slave1
slave2

到这里为止,我们已经完成 master 机器上 hadoop 的配置,更多关于 hadoop 的配置参数说明请查看官方文档)左侧的 Configuration 一栏,下面我们要将 master 机器上所有的安装配置操作同步到集群中所有节点上,为了避免挨个节点的重复劳动,我们前面也设置好了 ssh 无密码登录,现在我们简单写几个脚本,完成同步安装操作。

同步配置

首先同步 /etc/hosts 文件,这个需要切换到 root 用户下来完成,运行如下脚本:

1
2
3
4
5
6

7

8
#! /bin/bash
for SLAVE in `cat /home/hadoop/hadoop-2.2.0/etc/hadoop/slaves`; do
if test `expr match $SLAVE "*slave*"` -eq 0; then
rsync /etc/hosts $SLAVE:/etc/hosts
#清空防火墙配置
iptables -F
fi
done

其中 rsync 为文件同步命令,每次配置作修改后可以通过 rsync 命令进行文件的同步操作。完成上述操作后,切换回 hadoop 用户下,运行如下脚本,完成 hadoop 的同步安装:

1
2
3
4
5
6

7

8
9
10
11
12
13
14

15
16
17

18
19
20
#! /bin/bash

for SLAVE in `cat $HADOOP_CONF_DIR/slaves`; do
if test `expr match $SLAVE "*slave*"` -eq 0; then
#拷贝 jdk
scp /home/hadoop/jdk-7u40-linux-i586.gz hadoop@$SLAVE:/home/hadoop/
#拷贝 hadoop
scp /home/hadoop/hadoop-2.2.0.tar.gz hadoop@$SLAVE:/home/hadoop/
#拷贝环境变量配置
scp /home/hadoop/.bash_profile hadoop@$SLAVE:/home/hadoop/

echo "set up ${SLAVE}..."
ssh $SLAVE "cd /home/hadoop;
tar zxvf jdk-7u40-linux-i586.gz;
tar zxvf hadoop-2.2.0.tar.gz;
source /home/hadoop/.bash_profile;
exit"
rsync -r /home/hadoop/hadoop-2.2.0/etc/hadoop $SLAVE:/home/hadoop/hadoop-2.2.0/etc/hadoop
fi
done

每次修改 hadoop 配置后,运行如下脚本同步到集群所有节点:

1
2
3
4
5
6
#! /bin/bash
for SLAVE in `cat $HADOOP_CONF_DIR/slaves`; do
if test `expr match $SLAVE "*slave*"` -eq 0; then
rsync -r /home/hadoop/hadoop-2.2.0/etc/hadoop $SLAVE:/home/hadoop/hadoop-2.2.0/etc/hadoop
fi
done

到这里,hadoop 的集群安装就完成了,我们启动 hadoop 环境,通过 WordCount 来测试一下集群,一次运行如下命令以启动 hdfs 和 yarn。

WordCount 测试

在 master 集群上启动 hdfs 和 yarn 后台进程:

[hadoop@master ~]$ $HADOOP_HOME/bin/hadoop namenode -format
[hadoop@master ~]$ $HADOOP_HOME/sbin/start-dfs.sh
[hadoop@master ~]$ $HADOOP_HOME/sbin/start-yarn.sh

启动后可以通过 http://master:50070 地址访问 hdfs,通过 http://master:8088 地址访问 yarn,如果不能访问,请检查 master 机器上的 iptables 配置,将相关配置清除。另外,在启动集群过程中可能会遇到 DataNode、NodeManager 启动不起来的现象,这也可能是 slave 机器上的防火墙配置导致集群间 RPC 通信失败的缘故,比较暴力的做法是把集群中所有机器的防火墙服务直接给停掉,相关 iptables 防火墙操作请自行 google,下面我们运行 hadoop 自带的 WordCount 实例来验证 hadoop 是否能正常工作。

首先准备输入文件,上传到 hdfs:

[hadoop@master ~]$ mkdir input
[hadoop@master ~]$ sh -c 'echo"hello hadoop"> input/f1.txt'
[hadoop@master ~]$ sh -c 'echo"hello java"> input/f2.txt'
[hadoop@master ~]$ sh -c 'echo"hello world"> input/f3.txt'
[hadoop@master ~]$ $HADOOP_HOME/bin/hdfs -mkdir /input
[hadoop@master ~]$ $HADOOP_HOME/bin/hdfs -put input/* /input/

运行 WordCount Mapreduce 实例:

[hadoop@master ~]$ $HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-examples-2.2.0.jar wordcount /input /output

作业提交后,可以访问 web ui 页面,观察 MapReduce 作业的运行情况。

下面关于 Hadoop 的文章您也可能喜欢,不妨看看:

集群安装完毕,该如何测试和使用集群 -Hadoop 单机(伪分布)http://www.linuxidc.com/Linux/2016-06/132220.htm

Ubuntu14.04 下 Hadoop2.4.1 单机 / 伪分布式安装配置教程  http://www.linuxidc.com/Linux/2015-02/113487.htm

CentOS 安装和配置 Hadoop2.2.0  http://www.linuxidc.com/Linux/2014-01/94685.htm

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 相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-06/132559.htm

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

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19350
评论数
4
阅读量
7963499
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
在Windows系统中通过VMware安装苹果macOS15

在Windows系统中通过VMware安装苹果macOS15

在 Windows 系统中通过 VMware 安装苹果 macOS15 许多开发者和爱好者希望在 Window...
星哥带你玩飞牛NAS-2:飞牛配置RAID磁盘阵列

星哥带你玩飞牛NAS-2:飞牛配置RAID磁盘阵列

星哥带你玩飞牛 NAS-2:飞牛配置 RAID 磁盘阵列 前言 大家好,我是星哥之前星哥写了《星哥带你玩飞牛 ...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-4:飞牛NAS安装istore旁路由,家庭网络升级的最佳实践

星哥带你玩飞牛NAS-4:飞牛NAS安装istore旁路由,家庭网络升级的最佳实践

星哥带你玩飞牛 NAS-4:飞牛 NAS 安装 istore 旁路由,家庭网络升级的最佳实践 开始 大家好我是...
免费领取huggingface的2核16G云服务器,超简单教程

免费领取huggingface的2核16G云服务器,超简单教程

免费领取 huggingface 的 2 核 16G 云服务器,超简单教程 前言 HuggingFace.co...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击 PHP-FPM(FastCGl Process M...
150元打造低成本NAS小钢炮,捡一块3865U工控板

150元打造低成本NAS小钢炮,捡一块3865U工控板

150 元打造低成本 NAS 小钢炮,捡一块 3865U 工控板 一块二手的熊猫 B3 工控板 3865U,搭...
安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装 Black 群晖 DSM7.2 系统安装教程(在 Vmware 虚拟机中、实体机均可)! 前言 大家好,...
免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

  免费无广告!这款跨平台 AI RSS 阅读器,拯救你的信息焦虑 在算法推荐主导信息流的时代,我们...
星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛 NAS 硬件 03:五盘位 +N5105+ 双网口的成品 NAS 值得入手吗 前言 大家好,我...