共计 5001 个字符,预计需要花费 13 分钟才能阅读完成。
首先说明,本文记录的是搭建的 3 节点的完全分布式 Hadoop 集群的过程,环境是 CentOS 7,1 个 nameNode,2 个 dataNode,如下:
1、首先,创建好 3 个 CentOS 7 的虚拟机.
2、完成虚拟机的 Java 环境的搭建,可以参考 https://www.linuxidc.com/Linux/2018-11/155296.htm
3、关闭或者禁用防火墙,systemctl stop firewalld.service 关闭防火墙;systemctl disable firewalld.service 关闭防火墙
firewall-cmd –state 查看状态
4、修改 hosts 文件,vim /etc/hosts,注释原有的内容,加入如下内容,ip 地址为你自己的虚拟机的 IP 地址:
192.168.10.128 master.hadoop
192.168.10.129 slave1.hadoop
192.168.10.130 slave2.hadoop
more /etc/hosts 查看是否正确,需要重启后方能生效。重启命令 reboot now
此处可以添加 ssh key,创建无密码的公钥
a、在 master 机器上输入 ssh-keygen -t dsa -P ” -f ~/.ssh/id_dsa 创建一个无密码的公钥,- t 是类型的意思,dsa 是生成的密钥类型,- P 是密码,’’表示无密码,- f 后是秘钥生成后保存的位置
b、在 master 机器上输入 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys 将公钥 id_dsa.pub 添加进 keys,这样就可以实现无密登陆 ssh
c、在 master 机器上输入 ssh master 测试免密码登陆
d、在 slave1.hadoop 主机上执行 mkdir ~/.ssh
e、在 slave2.hadoop 主机上执行 mkdir ~/.ssh
f、在 master 机器上输入 scp ~/.ssh/authorized_keys root@slave1.hadoop:~/.ssh/authorized_keys 将主节点的公钥信息导入 slave1.hadoop 节点,导入时要输入一下 slave1.hadoop 机器的登陆密码
g、在 master 机器上输入 scp ~/.ssh/authorized_keys root@slave2.hadoop:~/.ssh/authorized_keys 将主节点的公钥信息导入 slave2.hadoop 节点,导入时要输入一下 slave2.hadoop 机器的登陆密码
h、在三台机器上分别执行 chmod 600 ~/.ssh/authorized_keys 赋予密钥文件权限
i、在 master 节点上分别输入 ssh slave1.hadoop 和 ssh slave2.hadoop 测试是否配置 ssh 成功
5、进入 home 目录,mkdir hadoop 创建一个 hadoop 的文件夹。上传下载好的 hadoop 包到该目录,hadoop2.9 下载地址;
http://hadoop.apache.org/-> 左边点 Releases-> 点 mirror site-> 点 http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common-> 下载 hadoop-2.9.0.tar.gz;
tar -zxvf hadoop-2.9.0.tar.gz 解压 tar 包
6、配置 hadoop,此节点可暂时先配置 128master,然后通过 scp 的方式复制到两个从节点
a、vim /home/hadoop/hadoop-2.9.0/etc/hadoop/core-site.xml,在 <configuration> 节点中增加如下内容:
<property>
<name>fs.default.name</name>
<value>hdfs://master.hadoop:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131702</value>
</property>
b、vim /home/hadoop/hadoop-2.9.0/etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///home/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///home/hadoop/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master.hadoop:50090</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
c、cp /home/hadoop/hadoop-2.9.0/etc/hadoop/mapred-site.xml.template /home/hadoop/hadoop-2.9.0/etc/hadoop/mapred-site.xml
vim /home/hadoop/hadoop-2.9.0/etc/hadoop/mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<final>true</final>
</property>
<property>
<name>mapreduce.jobtracker.http.address</name>
<value>master.hadoop:50030</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master.hadoop:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master.hadoop:19888</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>http://master.hadoop:9001</value>
</property>
</configuration>
d、vim /home/hadoop/hadoop-2.9.0/etc/hadoop/yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property> <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master.hadoop:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master.hadoop:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master.hadoop:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master.hadoop:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master.hadoop:8088</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master.hadoop</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>2048</value>
</property>
</configuration>
7、配置 /home/hadoop/hadoop-2.9.0/etc/hadoop 目录下 hadoop.env.sh、yarn-env.sh 的 JAVA_HOME
取消 JAVA_HOME 的注释,设置为 export JAVA_HOME=/home/java/jdk1.8.0_11
8、配置 /home/hadoop/hadoop-2.9.0/etc/hadoop 目录下的 slaves,删除默认的 localhost,添加 2 个 slave 节点:
slave1.hadoop
slave2.hadoop
9、将 master 服务器上配置好的 Hadoop 复制到各个节点对应位置上,通过 scp 传送:
scp -r /home/hadoop 192.168.10.129:/home/
scp -r /home/hadoop 192.168.10.130:/home/
10、启动 hadoop。在 master 节点启动 hadoop 服务,各个从节点会自动启动,进入 /home/hadoop/hadoop-2.9.0/sbin/ 目录,hadoop 的启动和停止都在 master 上进行;
a、初始化,输入命令:hdfs namenode -format
b、启动命令:start-all.sh
c、输入 jps 命令查看相关信息,master 上截图如下:
d、slave 节点上输入 jps 查看:
e、停止命令:stop-all.sh
11、访问,输入 http://192.168.10.128:50070,看到如下界面:
输入 http://192.168.10.128:8088,看到如下界面:
好了。如果以上都成功,那么基本上完成了 hadoop 集群的搭建。
更多 Hadoop 相关信息见 Hadoop 专题页面 https://www.linuxidc.com/topicnews.aspx?tid=13
: