本文主要是记录使用yum安装CDH Hadoop集群的过程,包括HDFS、Yarn、Hive和HBase。本文使用CDH5.4版本进行安装,故下文中的过程都是针对CDH5.4版本的。
0. 环境说明系统环境:
集群各节点角色规划为:
192.168.56.121 cdh1 NameNode、ResourceManager、HBase、Hive metastore、Impala Catalog、Impala statestore、Sentry 192.168.56.122 cdh2 DataNode、SecondaryNameNode、NodeManager、HBase、Hive Server2、Impala Server 192.168.56.123 cdh3 DataNode、HBase、NodeManager、Hive Server2、Impala Server
cdh1作为master节点,其他节点作为slave节点。
1. 准备工作安装 Hadoop 集群前先做好下面的准备工作,在修改配置文件的时候,建议在一个节点上修改,然后同步到其他节点,例如:对于 hdfs 和 yarn ,在 NameNode 节点上修改然后再同步,对于 HBase,选择一个节点再同步。因为要同步配置文件和在多个节点启动服务,建议配置 ssh 无密码登陆。
1.1 配置hostsCDH 要求使用 IPv4,IPv6 不支持,禁用IPv6方法:
$ vim /etc/sysctl.conf #disable ipv6 net.ipv6.conf.all.disable_ipv6=1 net.ipv6.conf.default.disable_ipv6=1 net.ipv6.conf.lo.disable_ipv6=1
使其生效:
$ sysctl -p
最后确认是否已禁用:
$ cat /proc/sys/net/ipv6/conf/all/disable_ipv6 1
1、设置hostname,以cdh1为例:
$ hostname cdh1
2、确保/etc/hosts中包含ip和FQDN,如果你在使用DNS,保存这些信息到/etc/hosts不是必要的,却是最佳实践。
3、确保/etc/sysconfig/network中包含hostname=cdh1
4、检查网络,运行下面命令检查是否配置了hostname以及其对应的ip是否正确。
运行uname -a查看hostname是否匹配hostname命令运行的结果:
$ uname -a Linux cdh1 2.6.32-358.23.2.el6.x86_64 #1 SMP Wed Oct 16 18:37:12 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux $ hostname cdh1
运行/sbin/ifconfig查看ip:
$ ifconfig eth1 Link encap:Ethernet HWaddr 08:00:27:75:E0:95 inet addr:192.168.56.121 Bcast:192.168.56.255 Mask:255.255.255.0 ......
先安装bind-utils,才能运行host命令:
$ yum install bind-utils -y
运行下面命令查看hostname和ip是否匹配:
$ host -v -t A `hostname` Trying "cdh1" ... ;; ANSWER SECTION: cdh1. 60 IN A 192.168.56.121
5、hadoop的所有配置文件中配置节点名称时,请使用hostname和不是ip
1.2 关闭防火墙$ setenforce 0 $ vim /etc/sysconfig/selinux #修改SELINUX=disabled #清空iptables $ iptables -F
1.3 时钟同步 搭建时钟同步服务器这里选择 cdh1 节点为时钟同步服务器,其他节点为客户端同步时间到该节点。安装ntp:
$ yum install ntp
修改 cdh1 上的配置文件 /etc/ntp.conf :
restrict default ignore //默认不允许修改或者查询ntp,并且不接收特殊封包 restrict 127.0.0.1 //给于本机所有权限 restrict 192.168.56.0 mask 255.255.255.0 notrap nomodify //给于局域网机的机器有同步时间的权限 server 192.168.56.121 # local clock driftfile /var/lib/ntp/drift fudge 127.127.1.0 stratum 10
启动 ntp:
#设置开机启动 $ chkconfig ntpd on $ service ntpd start
ntpq用来监视ntpd操作,使用标准的NTP模式6控制消息模式,并与NTP服务器通信。
ntpq -p 查询网络中的NTP服务器,同时显示客户端和每个服务器的关系。
$ ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== *LOCAL(1) .LOCL. 5 l 6 64 1 0.000 0.000 0.000
”* “:响应的NTP服务器和最精确的服务器。
”+”:响应这个查询请求的NTP服务器。
“blank(空格)”:没有响应的NTP服务器。
“remote” :响应这个请求的NTP服务器的名称。
“refid “:NTP服务器使用的更高一级服务器的名称。
“st”:正在响应请求的NTP服务器的级别。
“when”:上一次成功请求之后到现在的秒数。
“poll”:当前的请求的时钟间隔的秒数。
“offset”:主机通过NTP时钟同步与所同步时间源的时间偏移量,单位为毫秒(ms)。
客户端的配置在cdh2和cdh3节点上执行下面操作:
$ ntpdate cdh1