Centos7部署HDP集群------

备注:此博客为转载,原作者地址请点击此处

之前安装大数据组件都是一个一个手动安装的,最多弄一个脚本自动安装。手动安装麻烦不说,还没有可以监控集群的可视化界面,而且组件的稳定性也是个问题。
所以我们应该试一试HDP和CDH这种企业级的hadoop技术栈。 CDH用的人最多,我本来想安装一个社区版的CDH,可惜社区版的官网打开之后样式乱了,根本没法儿看。所以我选择了HDP。HDP是完全免费的,而且基本上跟apache的hadoop保持同步。HDP使用ambari来安装,ambari虽然功能相对弱了一些,不过我感觉基本够用了。可以安装各种服务,可以监控集群状态,这正是我想要的功能。此外,它还可以二次开发,这就是开源的好处。

因为是个人学习用,所以我在自己的笔记本上装了3个虚拟机。

硬件要求

  • 固态硬盘可用空间>=105G,机械硬盘的话不要这样玩,因为实在是太卡了。
  • 内存>=8G
  • 系统最好是Win10,因为自带了open ssh的客户端。否则的话你就需要安装一个ssh客户端,比如开源版本的PuTTY

准备3台虚拟机

1.VMWare安装CentOS7.5(DVD版),注意安装的时候SEFTWARE SELECTION要选择GNOME Desktop版本,切记!不然装好系统后没有桌面!
每台虚拟机给2G内存。
装好之后打开terminal,切换到root用户:su - root注意本文所有操作均使用root用户,因为安装ambari需要root用户!
2.修改主机名echo "hdp001" > /etc/hostname。 重启后生效,先别重启,我们等下再重启。
3.配置桥接网络

ifconfig #查看一下网关的名字是ens33,有的是eth0
vim /etc/sysconfig/network-scripts/ifcfg-ens33
修改BOOTPROTO=static
添加IPADDR=192.168.0.104
添加PREFIX0=24
添加GATEWAY=192.168.0.1
添加DNS1=8.8.8.8
添加ONBOOT=yes

/etc/init.d/network restart #重启网络

右键虚拟机>>设置>>硬件>>网络适配器>>网络连接>>选择桥接模式
4.配置共享目录
先安装VMWare Tools(略)如果你在虚拟机里打不开那个DVD,右键虚拟机>>设置>>硬件>>CD/DVD>>连接>>勾选“使用物理驱动器(自动检测)
右键虚拟机>>设置>>选项>>共享文件夹>>右边勾选“总是启用”>>文件夹里点“添加”,添加一个文件夹,比如文件夹的名字叫CentOS_Share
弄好之后,虚拟机里是看不到共享的文件夹的

cd /mnt/hgfs/
# 查看一下有哪些共享的目录,显示CentOS_Share
vmware-hgfsclient
# 挂在共享文件夹,这一步显示错误
mount -t vmhgfs .host:/  /mnt/hgfs
# 安装一下这个工具
yum install open-vm-tools-devel -y
# 再次执行一下就好了
vmhgfs-fuse .host:/ /mnt/hgfs

5.重启系统
6.配置系统镜像源
备份一下:CentOS-Base.repo sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
下载淘宝镜像仓库:wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
更新软件包缓存:yum makecache
关机:shutdown
7.克隆2个虚拟机:虚拟机>>管理>>克隆>>完全复制
克隆后按照上面的步骤配置另两台虚拟机。另两台虚拟机的主机名为hdp002, hdp003,IP为192.168.0.105, 192.168.0.106
注意设置共享目录,只需要在hdp001上设置就可以了,这个是为了后面拷贝tar包方便。
至此3台虚拟机都已经准备完毕

准备安装环境

注意本文每一步都是有原因的,完全按照官方文档的要求来的。

1.配置ssh免密钥
hdp001上执行:

ssh-keygen
ssh-copy-id [email protected]
ssh-copy-id [email protected]
ssh-copy-id [email protected]

2.修改每台机器的hosts文件:

vim /etc/hosts
192.168.0.104 hdp001
192.168.0.105 hdp002
192.168.0.106 hdp003

3.每台机器安装ntp服务:
CentOS7默认已经安装了ntp服务。
查看服务状态:systemctl status ntpd, 默认没有开启该服务。
hdp001上配置ntp.conf:

vim /etc/ntp.conf
注释掉这几行:
#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
# 10~15都是可以的,表示网络时间服务提供者来自于局域网。0表示为顶级

另外两台机器同理:注释掉那4行,然后在末尾添加:

server hdp001
fudge 127.127.1.0 stratum 10

每台机器禁用CentOS自带的chronyd:

systemctl stop chronyd.service
systemctl disable chronyd.service

每台机器启动ntp服务:

systemctl start ntpd
systemctl enable ntpd.service #设置开机启动服务

4.每台机器禁用防火墙:

systemctl stop firewalld
systemctl disable firewalld

5.每台机器禁用SELinux和PackageKit,并检查umask Value
禁用SELinux:

setenforce 0
# 查看状态: current mode permissive 就对了
sestatus
# 永久禁用
vim /etc/selinux/config
SELINUX=disabled

禁止packagekit离线更新服务的办法:

systemctl status packagekit-offline-update.service  # 查看状态,默认就是关闭的
systemctl disable packagekit-offline-update.service # 关闭
# 也可以用下面这种方式禁用它
vim /etc/yum/pluginconf.d/refresh-packagekit.conf   
enabled=0

检查umask: umask, 默认就是0022,不用改了

6.每台机器修改ulimit

vim /etc/security/limits.conf 
* soft noproc 127093
* hard noproc 127093
* soft nofile 127093
* hard nofile 127093

vim /etc/security/limits.d/20-nproc.conf
#* soft nproc 4096
#root soft nproc unlimited

  •      soft    nproc     127098
    
  •      hard    nproc     204800</code></pre>
    

重启后生效,暂时先别重启

7.每台机器安装oracle jdk1.8
到这里下载jdk的安装包

# 安装
rpm -ivh jdk-8u171-linux-x64.rpm
# 配置JAVA_HOME
vim /etc/profile
JAVA_HOME=/usr/java/jdk1.8.0_171-amd64
PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME
source /etc/profile
# 选择默认jdk版本为oracle jdk
alternatives --config java

8.下载hdp安装包
网络不太好,很容易出问题,还是离线安装好一些。
ambari-2.6.2.0-centos7.tar.gz
HDP-2.6.5.0-centos7-rpm.tar.gz
HDP-UTILS-1.1.0.22-centos7.tar.gz
HDP-GPL-2.6.5.0-centos7-gpl.tar.gz
HDP-GPL是新出来的。新版hadoop使用了LZO数据压缩库,这个协议跟HDP栈的协议不相同,所以需要这玩意。

9.hdp001上搭建http服务器
可以安装apache的httpd。不过我觉得每必要,因为它只需要一个最简单的http服务器就可以了。我们可以做:

# 新建/var/www/html文件夹
mkdir -p /var/www/html
# 将第8步下载的tar包解压到这个目录下
tar -zxvf xxx.tar.gz -C /var/www/html
# 开启http服务
cd /var/www/html
python -m SimpleHTTPServer

就这样一句话就开启了一个http服务器,注意端口号是 8000

10.每台机器创建本地yum仓库

wget -O /etc/yum.repos.d/ambari.repo http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.6.2.0/ambari.repo
wget -O /etc/yum.repos.d/hdp.repo http://public-repo-1.hortonworks.com/HDP/centos7/2.x/updates/2.6.5.0/hdp.repo
wget -O /etc/yum.repos.d/hdp.gpl.repo http://public-repo-1.hortonworks.com/HDP-GPL/centos7/2.x/updates/2.6.5.0/hdp.gpl.repo

vim /etc/yum.repos.d/ambari.repo
[Updates-Ambari-2.6.2.0]
name=Ambari-2.6.2.0-Updates
baseurl=http://hdp001:8000/ambari/centos7/2.6.2.0-155
gpgcheck=0
gpgkey=http://public-repo-1.hortonworks.com/ambari/centos6/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1

yum update

11.每台机器重启
上面设置了ulimit和线程数还没有重启,所以这里重启一下。 如果不想重启,请自行百度解决办法。

至此,所有准备都齐全了

安装ambari

hdp001上安装ambari-server:
yum install ambari-server

启动server之前必须先配置:
ambari-server setup

  • Customize user account for ambari-server daemon: n (使用root用户)
    选择Custom JDK。因为我们已经提前在每台机器上安装好jdk了,这时候输入JAVA_HOME的地址:/usr/java/jdk1.8.0_171-amd64

  • LZO数据压缩库: n

  • Enter advanced database configuration: n (安装默认的PostgreSQL)
    默认的数据库名称是 ambari
    默认的用户名密码是 ambari/bigdata

  • Proceed with configuring remote database connection properties [y/n]: y (我安装的时候没有这一项,可能老版本有这一项)

配置结束之后先别急着启动,需要改几个配置,否则启动不起来。

每台机器做如下修改:

vim /etc/ambari-server/conf/ambari.properties
# 设置启动超时时间,默认是50秒,时间太短了,在虚拟机里跑50秒根本就不够
server.startup.web.timeout=300
vim /etc/ambari-agent/conf/ambari-agent.ini
# CentOS7.5自带的openssl版本是openssl-1.0.2,不加这一句,后面install ambari的时候总是失败。官方文档竟然没有提这个!
force_https_protocol=PROTOCOL_TLSv1_2

hdp001上启动ambari-server
ambari-server start
查看状态:ambari-server status

hdp001上登录ambari: http://localhost:8080 默认账户密码:admin/admin

Launch Install Wizard:
输入集群名称:hdpbd
选择版本2.6,选择本地仓库,输入base url:

http://hdp001:8000/HDP/centos7/2.6.5.0-292
http://hdp001:8000/HDP-UTILS/centos7/1.1.0.22

输入主机名:

hdp001
hdp002
hdp003

点下一步的时候提示不是全域名,没关系,我们是局域网本来就不需要配什么全域名

输入hdp001的私钥,让hdp001能够与另两台机器通信(明明配置过免密钥登录,不明白为什么这里还要输入hdp001的私钥):

cat /root/.ssh/id_rsa

配置好了之后就可以安装服务了。 安装服务的时候,有的服务会依赖其它的服务,提示你必须勾选,那就按照它要求的来就好了。
安装服务的时候会选择master和slave。我的master自然是hdp001这台主机了。
datanode我勾选了三台机器。
有的服务有必填的选项,会变红,输入一个用户名和密码就可以了
有的服务比如hive要求内存不小于512M,那就修改一下就好了,其它的就不管他了

验证服务

服务装好后,默认服务是没有启动的。点击"Actions"启动服务即可。
我启动了 zookeeper和kafka。

hdp001上执行:

cd /usr/hdp/2.6.5.0-292/kafka
# 创建topic
bin/kafka-topics.sh --zookeeper localhost:2181 --create --topic ttt --replication-factor 1 --partitions 1
# 发送数据,注意端口号是6667哟
bin/kafka-console-producer.sh --broker-list hdp001:6667 --topic ttt
# 另启一个terminal,接收数据
bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic ttt --from-beginning

安装这些东西很烦,这种事一般都由专业的运维人员来做。但是我们还是要熟悉一下linux的一些基本操作的。
我是仔细阅读官方文档一步一步做的,期间补了很多课,收获了很多,做完一遍感觉以后都不会再做这些事了。

希望本文对你有帮助。

« 上一篇: MapReduce论文学习
» 下一篇: 用antd和webview打造一款大数据客户端程序

猜你喜欢

转载自blog.csdn.net/weixin_41919236/article/details/84914768
今日推荐