Hadoop 集群搭建

Hadoop 集群搭建


2019-01-03

配置 HDFS

环境预先安装 Java 并配置 JAVA_HOME 环境变量。下载 Hadoop 的二进制包,解压并移动至 /usr/local ,一般情况下我会去掉文件夹上的版本号。配置 HADOOP_HOME 环境变量并把 HADOOP_HOME 下的 bin 和 sbin 加入PATH 。

设置所有机器的 core-site.xml 指定 master 机器和 tmp 目录。

1
2
3
4
5
6
7
8
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/var/hadoop</value>
</property>

格式化 HDFS ,master 格式化为 Namenode ,slave 为 Datanode

1
2
hdfs namenode -format
hdfs datanode -format

设置 ssh 免密登录后,将所有 slave 的 hostname 加入 /usr/local/hadoop/etc/hadoop/slaves 文件当中,这个时候 HDFS 系统就可启动了,执行:start-dfs.sh ,可在 http://master:50070 中查看相关信息。

如果需要在其他客户端机器访问 HDFS ,会遇到权限问题,暂时关闭可以配置为:

1
2
3
4
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>

Yarn 配置

指定 ResourceManagerNodeManager 即可。

master 的 yarn-site.xml 配置如下:

1
2
3
4
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>

slave 的 yarn-site.xml 配置如下:

1
2
3
4
5
6
7
8
9
10
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>

<!-- Shuffle service that needs to be set for Map Reduce applications. -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>

启动 start-yarn.sh ,在 http://master:8088 查看 yarn 集群状态。

MapReduce 配置

HDFS、Yarn 和 MapReduce 三者是低耦合的,虽然可以一起使用,但并不互相依赖。

可以指定 MapReduce 使用 Yarn 调度计算资源,可以设置为 local 即本机运行,也可以指定为 yarn

1
2
3
4
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

测试

新建一个文件,例如:

1
2
3
4
hello hadoop
hello hdfs
hello yarn
hello mapreduce

把它放入 HDFS 文件系统,使用 Hadoop 例子测试 Word Count ,测试结果为:

1
2
3
4
5
hadoop	1
hdfs 1
hello 4
mapreduce 1
yarn 1