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 root@192.168.0.104 ssh-copy-id root@192.168.0.105 ssh-copy-id root@192.168.0.106
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
重启后生效,暂时先别重启
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/bigdataProceed 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的一些基本操作的。
我是仔细阅读官方文档一步一步做的,期间补了很多课,收获了很多,做完一遍感觉以后都不会再做这些事了。
希望本文对你有帮助。
- centos7安装redis3.2.5集群
- Ambari 2.1安装HDP2.3.2 之 六、安装部署HDP集群 详细步骤
- centos7 部署Elasticsearch单机/集群并安装head插件实现ES集群的可视化管理
- CentOS7安装、配置MariaDB集群问题总结
- hadoop学习之HDFS(2.2):centOS7安装高可用(HA)完全分布式集群hadoop2.7.2
- 【elasticsearch】(2)centos7 超简单安装elasticsearch 的监控、测试的集群工具elasticsearch head
- linux服务器(centos7)Apache+Tomcat 安装配置以及集群实现(上)
- CentOS7安装Consul集群
- Ambari2.5.0与HDP2.6.0集群安装配置
- Centos7的安装、Docker1.12.3的安装,以及Docker Swarm集群的简单实例
- 基于【CentOS-7+ Ambari 2.7.0 + HDP 3.0】搭建HAWQ数据仓库——安装配置NTP服务,保证集群时间保持同步
- [置顶] CentOS7安装配置zookeeper集群
- centos7(vm)下hadoop2.7.2完全分布式安装验证(x86)-hadoop3节点集群(2副本)
- CentOS7上本地源方式安装Ambari-2.5.2.0+HDP-2.6.2.0
- centos7安装redis-4.0.1集群
- centos7安装redis4集群服务
- Centos7安装部署Kubernetes(K8s)集群
- Centos7.3安装Ambari2.4.2+HDP2.5.3搭建Hadoop集群
- Centos7安装hadoop2.X集群
- centos7 安装hadoop 集群遇到的问题