安装步骤
- 集群规划
- 前置条件
- 集群搭建
- 提交服务到集群
集群规划
目标搭建一个 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 hadoop001192.168.10.100 hadoop002192.168.10.101 hadoop003wq #保存文件reboot #重启生效
配置SSH免密登录
ssh-keygen -t rsa #生成公钥和私钥 按提示输入enterssh-copy-id hadoop001 #公钥复制目标服务器ssh-copy-id hadoop002ssh-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.confrestrict 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 iburstserver 127.127.1.0 #添加一个默认的内部时钟数据,使它为局域网用户提供服务fudge 127.127.1.0 stratum 10
vi /etc/sysconfig/ntpdSYNC_HWCLOCK=yes #添加内容:让硬件时间与系统时间一起同步
service ntpd restartchkconfig ntpd on #ntp开机自启动
crontab -e*/10 * * * * /usr/sbin/ntpdate hadoop001
集群搭建
文件解压-编辑环境变量
tar -zxvf hadoop-2.10.1.tar.gzvi /etc/profileexport HADOOP_HOME=/root/hadoop-2.10.1 #增加内容export PATH=${HADOOP_HOME}/bin:$PATH:wqsource /etc/profile #执行 `source` 命令,使得配置立即生效:
修改配置
进入 ${HADOOP_HOME}/etc/hadoop 目录下,修改配置文件。各个配置文件内容如下:
hadoop-env.sh
vi hadoop-env.shexport 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/slaveshadoop001hadoop002hadoop003
关闭防火墙
不关闭防火墙可能导致无法访问 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。
