目录:
(1).docker部署ambari
(2).配置SSH免密登陆
(3).配置ambari基础repo
(4).辅助repo配置
(5).创建集群
(6).资源耗费
附录1.ambari相关的yum repo
附录2.参考文章
(1).docker部署ambari
git clone https://github.com/hepyu/docker-ambari-2.7.git
(我fork自:git clone https://github.com/cuongvomanh/docker-ambari-2.7.git,做了一点更改,也做个人备案)
cd docker-ambari-2.7
下载镜像用的yum源文件:
cd ambari-base-local
wget -O local.repo http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.7.3.0/ambari.repo
cd ambari-server-local
wget -O local.repo http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.7.3.0/ambari.repo
制作镜像:时间有点长,稍等。
./scripts/build-image.sh
git工程下有一个文件nohup-image.out是笔者一次的image-build记录。
本地启动:
./scripts/create-local.sh
docker ps查看容器:
获得web ip:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' amb-server
浏览器访问:你需要配置ecs的安全组开发8088端口
http://ecs-ip:8088/
通过下述命令获取3个节点的ip进行集群部署:
docker inspect 容器id | grep -i ip
三个节点IP是:
172.17.0.4--容器id(7153911bede2)--ambari-base-local
172.17.0.3--器id(673bdc7ecffb)--ambari-base-local
172.17.0.2--器id(7e8902bae9a2)--ambari-server-local
(2).配置SSH免密登陆
对这3台机器进行免密设置:172.17.0.7,172.17.0.6,172.17.0.2
1.首先root权限下分别对3台虚拟机进行修改
修改的命令如下:
sudo hostnamectl set-hostname node1
我这里是把3台主机名分别修改为node1、node,实际部署时只会全部部署到一个docker(节约资源)。
172.17.0.4--容器id(7153911bede2)--ambari-base-local::node1
172.17.0.3--器id(673bdc7ecffb)--ambari-base-local::node2
172.17.0.2--器id(7e8902bae9a2)--ambari-server-local::node3
修改完成后可以用指令 hostname 查询当前主机名确认修改成功。
2.分别在3台虚拟机上编辑 /etc/hosts 文件,添加IP和主机名
(每一台都要加这三行,别忘了加自己)
172.17.0.4 node1
172.17.0.3 node2
172.17.0.2 node3
这里的目的是实现3台虚拟机之间的互联,并且缩短了它们在连接时解析主机名的时间。
同时要注释掉:
#172.17.0.3 amb1.service.consul amb1
#172.17.0.4 amb2.service.consul amb2
3.生成密钥
首先分别在这3个节点执行指令:ssh-keygen ,然后一直按回车键直到结束。此时你可以发现在 /root/.ssh/ 文件夹下生成了id_rsa(私钥) 、 id_rsa.pub (公钥),这是生成的秘钥对。
4.公钥分享
同步公钥到所有节点需要输入root的密码,3个节点都设置root密码为123456
sudo passwd
把自己的公钥发送给其它节点,包括自己。指令如下:
ssh-copy-id node1
ssh-copy-id node2
ssh-copy-id node3
(3).配置ambari基础repo
从如下地址找到hdp3.1.4的yum repo地址
http://public-repo-1.hortonworks.com/HDP/hdp_urlinfo.json
hdp-3.1.4的yum repo地址:
http://public-repo-1.hortonworks.com/HDP/centos7/3.x/updates/3.1.4.0/HDP-3.1.4.0-315.xml
打开可以看到hdp, hdp-gpl, hdp-utils的repo:
(4).辅助repo配置
1.Timeline Service V1.5需要配置repo
否则报错:
Error: Package: hadoop_3_1_4_0_315-3.1.1.3.1.4.0-315.x86_64 (HDP-3.1-repo-1)
Requires: psmisc
Error: Package: hadoop_3_1_4_0_315-hdfs-3.1.1.3.1.4.0-315.x86_64 (HDP-3.1-repo-1)
Requires: libtirpc-devel
Error: Package: hadoop_3_1_4_0_315-3.1.1.3.1.4.0-315.x86_64 (HDP-3.1-repo-1)
Requires: nc
Error: Package: hadoop_3_1_4_0_315-3.1.1.3.1.4.0-315.x86_64 (HDP-3.1-repo-1)
Requires: redhat-lsb
配置repo:
进入ambari的docker容器节点,
cd /etc/yum.repos.d/
cp backup_repo/CentOS-Base.repo .
(5).创建集群
开始创建集群,点击:LAUNCH INSTALL WIZARD
下一步需要输入ambari-server所在机器的私钥,这样ambari-server才能把组件部署到其他节点:
只能添加node1, node2
因为node3是ambari-server节点,如果添加会报错:
Ambari agent machine hostname (amb-server.service.consul) does not match expected ambari server hostname (node3). Aborting registration. Please check hostname, hostname -f and /etc/hosts file to confirm your hostname is setup correctly
进入组件选择页面,我按需选择如下组件:
HDFS:3.1.1
YARN + MapReduce2:3.1.1
Tez:0.9.1,Tez管理所有的离线jar包
Hive:3.1.0
HBase:2.0.2
ZooKeeper:3.4.6
Kafka:2.0.0
SmartSense:1.5.1.2.7.3.0-139
Ambari Metrics:0.1.0
密码都是:La123456
(6).耗费资源
我个人有一台8核32G的阿里云ECS,部署完本文的2节点集群后的资源情况:
虽然我还装了k8s和istio,但是大数据必然是占大头:
附录1.ambari相关的yum repo
hdp不同版本的yum仓库的url地址:
http://public-repo-1.hortonworks.com/HDP/hdp_urlinfo.json
hdp3.1.4的yum仓库的url地址:
http://public-repo-1.hortonworks.com/HDP/centos7/3.x/updates/3.1.4.0/HDP-3.1.4.0-315.xml
附录2.参考文章
1.制作Ambari本地yum源
https://www.jianshu.com/p/3597bf155e99
2.Ambari搭建Hadoop集群之配置SSH免密登录
https://blog.csdn.net/qq_28757391/article/details/82724919
3.Apache Ambari Installation
https://docs.cloudera.com/HDPDocuments/Ambari-2.7.4.0/bk_ambari-installation/content/hdp_314_repositories.html