Skip to content

Latest commit

 

History

History
57 lines (37 loc) · 3.9 KB

README.md

File metadata and controls

57 lines (37 loc) · 3.9 KB

docker--ambari

#Containerization of ambari

将ambari-server 和ambari-agent 容器化,并利用ambari提供的blueprint,自动完成hadoop集群搭建。此项目可以用于测试ambari 功能,只需要简单更新安装源就可以

##0. 环境初始化 0.1 搭建本地的安装源包括ambari和ambari的依赖包 0.2 下载源码,在目录images中可以获取制作ambari-server 和ambari-agent镜像的源码,只需要更新镜像仓库地址 0.3 docker build 分别制作ambari-server 和ambari-agent镜像 0.4 创建docker overlay 网络:docker network create --driver overlay --subnet 172.18.0.0/24 overlay (若不使用swarmkit,需要先配置kv存储) 0.5 测试场景下,可以不搭建DNS,使用配置hosts文件方式(可以通过卷挂载方式,多容器共享hosts文件)

##1. ambari 集群节点创建 docker run -itd --name ambari-server.test.com --hostname ambari-server.test.com --ip 172.18.0.2 --net overlay -v /root/ambari/hosts:/etc/hosts --privileged=true 10.110.17.138:5000/iop/ambari-server:v2.0 /usr/local/bin/start.sh

 docker run -itd --name emr-master1.test.com --hostname emr-master1.test.com --ip 172.18.0.3 --net overlay --env AMBARI_SERVER_HOSTNAME=ambari-server.test.com -v /root/ambari/hosts:/etc/hosts --memory 2G   --privileged=true 10.110.17.138:5000/iop/ambari-agent:v2.0 /usr/local/bin/start.sh

docker run -itd --name emr-master2.test.com --hostname emr-master2.test.com --ip 172.18.0.4 --net overlay --env AMBARI_SERVER_HOSTNAME=ambari-server.test.com -v /root/ambari/hosts:/etc/hosts  --memory 2G      --privileged=true 10.110.17.138:5000/iop/ambari-agent:v2.0 /usr/local/bin/start.sh

docker run -itd --name emr-edge.test.com --hostname emr-edge.test.com --ip 172.18.0.5 --net overlay --env AMBARI_SERVER_HOSTNAME=ambari-server.test.com -v /root/ambari/hosts:/etc/hosts --memory 2G    --privileged=true  10.110.17.138:5000/iop/ambari-agent:v2.0 /usr/local/bin/start.sh

docker run -itd --name emr-worker1.test.com --hostname emr-worker1.test.com --ip 172.18.0.6 --net overlay --env AMBARI_SERVER_HOSTNAME=ambari-server.test.com -v /root/ambari/hosts:/etc/hosts --memory 2G --privileged=true 10.110.17.138:5000/iop/ambari-agent:v2.0 /usr/local/bin/start.sh

 docker run -itd --name emr-worker2.test.com --hostname emr-worker2.test.com --ip 172.18.0.7 --net overlay --env AMBARI_SERVER_HOSTNAME=ambari-server.test.com -v /root/ambari/hosts:/etc/hosts  --memory 2G   --privileged=true 10.110.17.138:5000/iop/ambari-agent:v2.0 /usr/local/bin/start.sh

##2.ambari 集群创建 在可以访问ambari-server 容器的服务器上执行 python service_init.py (需要安装python依赖requests)

##3.ambari集群访问 http://172.18.0.2:8080 也可以做端口映射或者走haproxy代理,使用主机IP访问

##已知Bug:

1、由于安装hdfs组件时需要切换到hdfs用户,ambari代码应该限制了hdfs用户的切换(参考文件/etc/security/limits.d/hdfs.conf),所以创建容器需要增加 --privileged=true 参数
2、创建容器时,虽然限制了容器内存,但是ambari manager界面查看到的节点内存仍为宿主机内存

#在K8s环境部署Ambrai

##K8s环境: 1. K8s环境支持dns解析 2. k8s环境支持部署petset     3. k8s 环境使用flannel网络或者其他sdn网络 4. k8s环境允许创建Privileged的容器

##创建Ambrai Pod 1. 创建bigdata命名空间 kubectl create namespace     2. 创建ambari-server:'kubectl create -f k8s/master.yaml' 3. 创建ambari-agent:'kubectl create -f k8s/agent.yaml'

##部署Ambrai 集群   1. 修改blueprint配置文件(主要为域名,由于使用PetSet,所以每个Pod的域名都是确定的)   2. 修改 k8s/service_init.py 中,指定ambrai-server的pod地址   3. 执行python service_init.py,等待安装完成,(需要在ambari 禁止 ip和hostname检查)