新手搭建Hadoop测试环境摘要

2016-12-19 13:04:08 2 3177
Hadoop的生产环境通常跟大数据有关,平时很少能碰到,要想摸一摸这个系统,只能本地搭建环境。
在环境搭建过程中,参考了网上很多的文章,跳了不少坑,几乎每一个步骤都会出错。现在把搭建过程中碰到的问题都写一写,方便别人参考。

0x00 方案选择
我们利用Ambari来部署Hadoop,门槛最低也最方便使用。
然后是环境的选择,为了能让模拟的环境最接近真实,我们需要准备至少3个节点,可以选择:
A.找3个物理主机
B.做3个虚拟机
C.利用docker建立3个容器
这里就选择最后一种方式。如果想要体验hadoop分布式的优势,需要找多台物理主机来部署。B和C都仅仅是将hadoop环境搭建好,由于所有节点都运行在一个物理主机上,因此是没有什么性能优势的。

最后,是版本的选择,这里就采用下面的版本进行部署:
Ambari 2.4.2.0
HDP 2.4.3.0
HDPUTILS1.1.0.20
注意,一般情况下Ambari可以用来部署版本号比他小的HDP环境,HDP最新的版本是2.5,但是截至目前ambari还没更新到2.5

0x01 环境准备
方案C要求主机有至少8G内存和30G硬盘空间,安装Ubuntu 16.04。可以在虚拟机里配置。我这里分配了16G内存和40G硬盘。
一、安装docker
最好不要直接用apt安装docker,因为那样的话docker版本比较低,而且拉取镜像会使用国外的源,速度非常慢。推荐去DaoCloud或者阿里云上注册一个账号,使用它们的Docker加速器。例如:https://yq.aliyun.com/articles/29941
二、建立本地的安装源
Hadoop的部署过程中需要用到大量软件包,直接使用官网的源,速度会非常慢,而且容易出错,所以要建立本地源。
1、从官网上下载Ambari和Hadoop的离线包,注意版本号对应:
http://docs.hortonworks.com/HDPDocuments/Ambari-2.4.2.0/bk_ambari-installation/content/obtaining_the_repositories.html
只需要这三个文件即可:

下载完后把三个文件解压到同一个目录下,然后在根目录下创建两个repo文件,其内容分别为:(ip地址以实际情况为准,每一个节点都要能访问到这个ip)
ambari.repo
#VERSION_NUMBER=2.4.2.0-136

[Updates-ambari-2.4.2.0]
name=ambari-2.4.2.0 - Updates
baseurl=http://192.168.1.10/AMBARI-2.4.2.0/centos7/2.4.2.0-136
gpgcheck=1
gpgkey=http://192.168.1.10/AMBARI-2.4.2.0/centos7/2.4.2.0-136/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1
hdp.repo
#VERSION_NUMBER=2.4.3.0-227
[HDP-2.4.3.0]
name=HDP Version - HDP-2.4.3.0
baseurl=http://192.168.1.10/HDP/centos7/2.x/updates/2.4.3.0
gpgcheck=1
gpgkey=http://192.168.1.10/HDP/centos7/2.x/updates/2.4.3.0/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1


[HDP-UTILS-1.1.0.20]
name=HDP Utils Version - HDP-UTILS-1.1.0.20
baseurl=http://192.168.1.10/HDP-UTILS-1.1.0.20/repos/centos7
gpgcheck=1
gpgkey=http://192.168.1.10/HDP-UTILS-1.1.0.20/repos/centos7/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1
最后看起来是这样的:

stat.bat是一个批处理,内容“python -m SimpleHTTPServer 80”,就是启动一个http服务,这样本地源就搭建好了。

三、下载ambari-docker辅助脚本:
在github上逛了一圈,发现几个项目可以利用docker自动化部署hadoop环境,我基本上都试了一遍,最后发现这个项目是比较接近成功的。
在安装了docker的主机上执行:
wget https://raw.githubusercontent.com/sequenceiq/docker-ambari/master/ambari-functions
执行source ambari-functions
然后执行amb-start-cluster 4生成包含4个节点的集群,最好4个及以上,因为有一个节点要做dns服务器(amb-consul)。
最后的环境是这样的:

四、替换docker容器里centos7的源为阿里云:
利用docker exec -it $NAME bash,建立一个shell来配置docker,$NAME是容器名称,在这里分别是:amb1,amb2,amb3,amb-server。四个都要配置。
1、备份默认源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
mv /etc/yum.repos.d/ambari.repo /etc/yum.repos.d/ambari.repo.backup
2、下载新的CentOS-Base.repo 到/etc/yum.repos.d/
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/ambari.repo http://192.168.1.10/ambari.repo
3、之后运行yum makecache生成缓存

五、配置ssh证书登录
1、利用docker exec在amb-server节点上执行:
ssh-keygen
cd ~/.ssh/
cat id_rsa.pub >>authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
然后把id_rsa里的内容保存到本地文件里。
2、在节点amb1,amb2,amb3上执行:
mkdir ~/.ssh/
将id_rsa.pub里的内容写到从节点的authorized_keys文件内,保存后重启sshd服务:
systemctl restart sshd
在主节点上测试ssh证书登陆情况:ssh root@amb1

六、配置从节点
重命名每个从节点的/usr/lib/hadoop文件夹,或者删除。

七、安装ntp(可选,本地测试有问题)
时间同步对分布式系统很重要,但是我在配置的时候一直出问题,服务启动不了,由于docker环境时间本身就是一致的,所以这一步可以跳过。
在所有节点上执行:
yum  install ntp
systemctl is-enabled ntpd
systemctl enable ntpd
systemctl start ntpd
八、升级ambari-server
因为截至目前,docker镜像里的ambari-server版本是2.4.0.0有点低,所以要手动升级一下。
1、进入主节点,先执行yum remove postgresql*,删除旧的服务
2、执行rm -rf /var/lib/pqsql清空旧的数据库
3、执行yum install postgresql-server安装服务,然后执行
postgresql-setup initdb
systemctl start postgresql
启动服务
4、执行yum install ambari-server,安装新的服务
5、执行ambari-server setup -s -j /usr/jdk64/jdk1.7.0_67,重新配置服务
6、执行ambari-start启动服务

0x02 部署Hadoop
到这一步相关的资料就非常多了,可以参考别人的做法:http://blog.csdn.net/lochy/article/details/51733911

浏览器访问amb-server的8080端口,这里是http://172.17.0.5:8080,用账号admin:admin登陆
选择HDP 2.4,具体版本2.4.3.0,选择本地源,删除其他系统仅保留redhat7,然后分别配置为:
http://192.168.1.10/HDP/centos7/2.x/updates/2.4.3.0/
http://192.168.1.10/HDP-UTILS-1.1.0.20/repos/centos7/
下一步
填写主机列表:
amb1.service.consul
amb2.service.consul
amb3.service.consul
ssh证书就选择之前在ambari-server上生成的id_rsa。
下一步会有warning,因为ntp服务没启动,可以忽略。
然后,选择要安装的组件,如果机器配置够强的话可以全部选上,这里就选择了最常见的:
HDFS,YARN+MapReduce2,Hive,ZooKeeper,Ambari Metrics,有些组件有依赖关系,系统会自动提示。
在配置Hive和Ambari Metrics的时候,系统要求提供密码,根据提示输入密码即可。

一切配置好后就可以开始安装了。要注意,如果配置Hive组件的时候选择了安装新的Mysql Server,系统会自动下载mysql-community-server,这个包大约有380MB,需要下载一会,中间可能会出错,只要点击Retry就行,实在过不去就到对应的节点里手动安装,然后从上一步开始配置就行。
如果看到下面的画面,就说明部署成功了。

如果有错误,可以点开链接,查看具体的日志,解决问题后重新从上一步开始配置。Aambari这一点比较方便。
另外,在浏览器里访问Ambari的时候,使用shift+ctrl+r来刷新页面,可以避免缓存的影响。

关于作者

intosec27篇文章419篇回复

评论2次

要评论?请先  登录  或  注册