安装步骤
- 集群规划
- 前置条件
- 集群搭建
- 提交服务到集群
集群规划
目标搭建一个 3 节点的 Hadoop 集群。对所有角色尽量做到均衡分配。对集群服务规划如下:
hadoop001(192.168.10.99) | hadoop002(192.168.10.100) | hadoop003(192.168.10.101) | |
---|---|---|---|
HDFS | namenode、datenode | datenode | secondarynamenode、 namenode |
YARN | nodemanager | resourcemanager、nodemanager | nodemanager |
前置条件
安装JDK 配置主机映射 配置SSH免密登录 配置时间同步
安装JDK
请参照以往文章:安装JDK-Centos7
配置主机映射
vi /etc/hosts #修改映射文件-每个节点上设置
192.168.10.99 hadoop001
192.168.10.100 hadoop002
192.168.10.101 hadoop003
wq #保存文件
reboot #重启生效
配置SSH免密登录
ssh-keygen -t rsa #生成公钥和私钥 按提示输入enter
ssh-copy-id hadoop001 #公钥复制目标服务器
ssh-copy-id hadoop002
ssh-copy-id hadoop003
.ssh文件下文件功能解释:
known_hosts 记录ssh访问过计算机的公钥
id_rsa 生成的私钥
id_rsa.pub 生成的公钥
authorized_keys 存放授权过的免密登录服务器公钥
注:如配置映射时对应关系错误,可能导致ssh-copye-id 处操作失败。更改为正确的ip和hostname对应即可。
配置时间同步
如已经安装ntp,即进行修改配置文件即可。
rpm -qa|grep ntp
yum install ntp
vi /etc/ntp.conf
restrict 192.168.10.0 mask 255.255.255.0 nomodify notrap 如已安装,即解开此条注释
#server 0.centos.pool.ntp.org iburst #注释掉这四条
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server 127.127.1.0 #添加一个默认的内部时钟数据,使它为局域网用户提供服务
fudge 127.127.1.0 stratum 10
vi /etc/sysconfig/ntpd
SYNC_HWCLOCK=yes #添加内容:让硬件时间与系统时间一起同步
service ntpd restart
chkconfig ntpd on #ntp开机自启动
crontab -e
*/10 * * * * /usr/sbin/ntpdate hadoop001
集群搭建
文件解压-编辑环境变量
tar -zxvf hadoop-2.10.1.tar.gz
vi /etc/profile
export HADOOP_HOME=/root/hadoop-2.10.1 #增加内容
export PATH=${HADOOP_HOME}/bin:$PATH
:wq
source /etc/profile #执行 `source` 命令,使得配置立即生效:
修改配置
进入 ${HADOOP_HOME}/etc/hadoop
目录下,修改配置文件。各个配置文件内容如下:
hadoop-env.sh
vi hadoop-env.sh
export JAVA_HOME=/root/jdk1.8.0_321/ #增加内容
core-site.xml
<configuration>
<property>
<!--指定 namenode 的 hdfs 协议文件系统的通信地址-->
<name>fs.defaultFS</name>
<value>hdfs://hadoop001:8020</value>
</property>
<property>
<!--指定 hadoop 集群存储临时文件的目录-->
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/tmp</value>
</property>
</configuration>
hdfs-site.xml
<property>
<!--指定HDFS存储内容的副本个数-->
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<!--配置secondarynamenode-->
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop003:50090</value>
</property>
</configuration>
yarn-site.xml
<configuration>
<property>
<!--配置 NodeManager 上运行的附属服务。需要配置成 mapreduce_shuffle 后才可以在 Yarn 上运行 MapReduce 程序。-->
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<!--resourcemanager 的主机名-->
<name>yarn.resourcemanager.hostname</name>
<value>hadoop002</value>
</property>
</configuration>
mapred-site.xml
<configuration>
<property>
<!--指定 mapreduce 作业运行在 yarn 上-->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
slaves
slaves文件用来配置hadoop分布式集群中各台从节点服务器的角色。
将3台节点服务器全部指定为从节点服务器
vi /root/hadoop-2.10.1/etc/hadoop/slaves
hadoop001
hadoop002
hadoop003
关闭防火墙
不关闭防火墙可能导致无法访问 Hadoop 的 Web UI 界面:
#查看防火墙状态
sudo firewall-cmd --state
#关闭防火墙:
sudo systemctl stop firewalld.service
初始化
在 Hadoop001
上执行 namenode 初始化命令:
hdfs namenode -format
分发程序
将 Hadoop 安装包分发到其他两台服务器,分发后建议在这两台服务器上也配置一下 Hadoop 的环境变量。
scp -r /root/hadoop-2.10.1/ hadoop002:/root/
scp -r /root/hadoop-2.10.1/ hadoop003:/root/
启动集群
进入到 节点 的 ${HADOOP_HOME}/sbin
目录下,启动 Hadoop。此时 hadoop002
和 hadoop003
上的相关服务也会被启动:
# 启动dfs服务
start-dfs.sh
# 启动yarn服务
start-yarn.sh
jps
#查看服务启动情况
查看WEB页面
http://hadoop001:50070
http://hadoop002:8088
提交服务到集群
这里以提交 Hadoop 内置的计算 Pi 的示例程序为例,在任何一个节点上执行都可以,命令如下
hadoop jar /root/hadoop-2.10.1/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.10.1.jar pi 3 3
显示结果如下。成功提交。
注:如提示没有hadoop命令。则需要配置环境变量即可。
如提交失败,则可能是集群的防火墙导致,可尝试关闭防火墙。service firewalld stop。