安装及部署Hadoop
2019-09-18
安装及部署Hadoop
本文着重介绍如何安装Ambari,并简单描述如何使用Ambari部署Hadoop服务。
操作系统:CentOS 7
网络:内部局域网
Ambari版本:2.6.1.0
HDP版本:2.6.4.0
在不能连接外网的情况下,我需要预先下载相应的Ambari安装源和HDP安装源以及HDP-UTILS安装源。
如果在一个可以连接外网的环境中,也可以直接使用Hortonworks提供的线上源,不过一般来说,使用线上源安装比较慢,你懂的。
机器信息
共5台机器,信息如下:
主机名 | IP |
---|---|
xwd1 | 192.168.0.101 |
xwd2 | 192.168.0.102 |
xwd3 | 192.168.0.103 |
xwd4 | 192.168.0.104 |
xwd5 | 192.168.0.105 |
以下操作用户均为root用户。
添加主机映射信息
操作机器:xwd1
编辑/etc.hosts
文件,填写以下内容:
1 | 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.0.101 xwd1192.168.0.102 xwd2192.168.0.103 xwd3192.168.0.104 xwd4192.168.0.105 xwd5 |
设置免密登录
操作机器:xwd1
创建密钥
1 | ssh-keygen |
设置免密登录
1 | ssh-copy-id xwd1ssh-copy-id xwd2ssh-copy-id xwd3ssh-copy-id xwd4ssh-copy-id xwd5 |
同步主机映射文件
操作机器:xwd1
1 | scp /etc/hosts root@xwd2:/etc/hostsscp /etc/hosts root@xwd3:/etc/hostsscp /etc/hosts root@xwd4:/etc/hostsscp /etc/hosts root@xwd5:/etc/hosts |
创建本地系统源
如果在一个可以连接外网的环境中,则可以跳过这一步。
分别在五台机器上备份系统自带系统源:
1 | mkdir /opt/reposmv /etc/yum.repos.d/* /opt/repos/ |
操作机器:xwd2
经过查找发现,xwd2主机的/run/media/root/CentOS 7 x86_64
目录挂载了系统源,但是重启之后,这个挂载目录就会消失,为了方便,决定在xwd2机器上提供http的局域网本地系统源服务。
创建本地系统源文件:
1 | cd /etc/yum.repos.d/touch CentOS-Local.repo |
编辑CentOS-Local.repo
,写入如下内容:
1 | [Local]name=CentOS=$releasever - Localbaseurl=file:///run/media/root/CentOS\ 7\ x86_64/gpgcheck=1enabled=1gpgkey=file:///run/media/root/CentOS\ 7\ x86_64/RPM-GPG-KEY-CentOS-7 |
安装http服务
1 | yum -y install httpdsystemctl start httpdsystemctl enable httpd |
拷贝源文件
1 | mkdir /var/www/html/centos7cd /run/media/root/CentOS\ 7\ x86_64/cp -r Packages RPM-GPG-KEY-CentOS-7 /var/www/html/centos7/ |
生成源信息
1 | cd /var/www/html/centos7createrepo ./ |
操作机器:xwd1
编辑CentOS-Local.repo
,写入如下内容:
1 | [Local]name=CentOS=$releasever - Localbaseurl=http://xwd2/centos7/gpgcheck=1enabled=1gpgkey=http://xwd2/centos7/RPM-GPG-KEY-CentOS-7 |
同步本地系统源文件
1 | scp /etc/yum.repos.d/CentOS-Local.repo root@xwd2:/etc/yum.repos.d/scp /etc/yum.repos.d/CentOS-Local.repo root@xwd3:/etc/yum.repos.d/scp /etc/yum.repos.d/CentOS-Local.repo root@xwd4:/etc/yum.repos.d/scp /etc/yum.repos.d/CentOS-Local.repo root@xwd5:/etc/yum.repos.d/ |
环境配置
关闭防火墙
操作机器:所有
1 | systemctl stop firewalldsystemctl disable firewalld |
设置selinux配置
操作机器:所有
vim /etc/selinux/config
将SELINUX的参数值修改为disabled
设置redhat_transparent_hugepage
操作机器:所有
1 | echo never > /sys/kernel/mm/transparent_hugepage/enabled |
配置jdk
jdk使用1.8,当前环境使用的是jdk-8u162-linux-x64
操作机器:所有
创建
/opt/software
目录将jdk的tar包上传到
/opt/software
目录下解压tar zxvf jdk-*.tar.gz,然后删除tar包
建立软链
1
ln -s /opt/software/jdk* /opt/software/jdk
建立软链的目的是方便更换jdk,使用的时候使用jdk这个目录,而不使用真实的jdk目录。
时间同步
时间同步对HBase服务影响最大。
操作机器:所有
安装ntp服务
1 | yum -y install ntp |
局域网时间同步设计:
服务器 | 角色 |
---|---|
xwd1 | 作为时间服务器,其他服务器以此服务器为标准同步时间 |
xwd2 | 使用ntpdate xwd1 命令同步时间 |
xwd3 | 使用ntpdate xwd1 命令同步时间 |
xwd4 | 使用ntpdate xwd1 命令同步时间 |
xwd5 | 使用ntpdate xwd1 命令同步时间 |
操作机器:xwd1
编辑 /etc/ntp.conf 文件如下部分:
1 | # Use public servers from the pool.ntp.org project.# Please consider joining the pool (http://www.pool.ntp.org/join.html).#server 0.rhel.pool.ntp.org iburst#server 1.rhel.pool.ntp.org iburst#server 2.rhel.pool.ntp.org iburst#server 3.rhel.pool.ntp.org iburstserver 127.127.1.0fudge 127.127.1.0 stratum 10 |
如上,注释原有配置:
1 | #server 0.rhel.pool.ntp.org iburst#server 1.rhel.pool.ntp.org iburst#server 2.rhel.pool.ntp.org iburst#server 3.rhel.pool.ntp.org iburst |
添加新配置,让本机的ntpd和本地硬件时间同步:
1 | server 127.127.1.0fudge 127.127.1.0 stratum 10 |
启动ntp服务:
1 | systemctl start ntpdsystemctl enable ntpd |
操作机器:xwd2,xwd3,xwd4,xwd5
关闭ntp服务:
1 | systemctl stop ntpdsystemctl disable ntpd |
同步时钟:
1 | ntpdate xwd1 |
定时同步,编辑 /etc/crontab 文件,追加内容:
1 | */5 * * * * root /usr/sbin/ntpdate xwd1 |
这里表示每5分钟同步一次。
然后重启crond服务:
1 | systemctl restart crond |
部署Ambari
操作机器:xwd1
安装http服务
1 | yum -y install httpdsystemctl start httpdsystemctl enable httpd |
上传之前下载的三个安装源的tar包到/var/www/html/xwd
目录下
解压后,分别进入目录执行:
1 | createrepo ./ |
创建并编辑/etc/yum.repo.d/ambari.repo
文件,添加如下内容:
1 | [xwd]name=ambaribaseurl=http://xwd1/xwd/ambarienabled=1gpgcheck=0 |
安装ambari
1 | yum clean allyum install ambari-server |
初始化ambari,jdk选择本地目录/opt/software/jdk
1 | ambari-server setup |
启动ambari
1 | ambari-server start |
部署Hadoop和ZooKeeper
这里需要确认安装源中是否有 snappy-devel 这个包,Hadoop安装时会依赖这个包,而这个包不在系统默认的安装源中。也可以手动安装,使用
rpm -ivh 包名
。如果在一个可以连接外网的环境中,则不必担心这个问题。
浏览器访问 http://192.168.0.101:8080。
登录账号密码:admin/admin
启动安装向导
集群名:xwd
版本:HDP2.6
操作系统:redhat7
Base URL:
配置 | 值 |
---|---|
HDP | http://xwd1/xwd/HDP |
HDP-UTILS | http://xwd1/xwd/HDP-UTILS |
目标主机:
1 | xwd1xwd2xwd3xwd4xwd5 |
私钥:使用xwd1主机的/root/.ssh/id_rsa
文件内容。
选择服务:HDFS,ZooKeeper
安装HDFS和ZooKeeper
分配Masters:默认
分配Slaves和Clients:DataNode和Client全选
定制服务:
假定数据盘挂在到
/data
目录。
Ambari配置 | 对应的服务配置 | 值 |
---|---|---|
NameNode directories | dfs.namenode.name.dir | /data/hadoop/hdfs/namenode |
DataNode directories | dfs.datanode.data.dir | /data/hadoop/hdfs/data |
安装YARN+MapReduce2
添加服务
选择YARN+MapReduce2
分配Master:默认
分配Slaves和Clients:NodeManager全选
定制服务:
Ambari配置 | 对应的服务配置 | 值 |
---|---|---|
yarn.nodemanager.local-dirs | yarn.nodemanager.local-dirs | /data/hadoop/yarn/local |
yarn.nodemanager.log-dirs | yarn.nodemanager.log-dirs | /data/hadoop/yarn/log |
开启NameNode HA
在HDFS服务中,点击操作服务
选择开启 NameNode HA
Nameservice ID:xwdha
按照提示操作
开启ResourceManager HA
在YARN服务中,点击操作服务
选择开启 ResourceManager HA
按照提示操作