docker + ambari(hortonworks ) 快速搭建hadoop 环境

最近在搭建hadoop 环境的时候,最初尝试去写一些脚本去安装包以及修改配置,后来发现源软件https://ambari.apache.org/可以管理部署监控hadoop集群, 于是尝试用docker安装试验。
ambaris: 是 hortonworks  开发的一个自动 部署+管理+监控  HDP(Hortonworks Data Platform, http://hortonworks.com/hdp/,由hadoop生态环境中的一些开源软件组成)的开源软件。与之相对应的有cloudera manager, cloudera 发展时间更长,网上能搜到的资料更多, 但是其开源性好像没有hortonworks 好。
docker: 现在比较热门的一个虚拟运行环境,我的理解是其使用了cgroup, namespace, aufs 等实现了应用程序的运行环境隔离。


首先贴上Ambari 的架构,如下图, Ambari  Server 与agent 交互从而 管理集群节点,这里agent的注册可以是被动,也就是server 通过ssh连接到agent,然后启动agent 去注册,所以需要两个配置, agent上需要能够ssh 私钥 无密码登陆, 而且agent上要配置server的地址。 
  docker + ambari(hortonworks ) 快速搭建hadoop 环境_第1张图片

因为是通过docker安装,所以宿主机环境我使用了ubuntu 14.04(24G 内存, 4核8线程)

1. 创建一个基础image

这里使用了官方的ubuntu14 的docker 镜像为基础 创建所需要的镜像,这里我创建了两个基础镜像,Dockerfile 分别在如下链接, 

https://github.com/trumanz/dockerBuild/tree/v1.0.1/ubuntu14.04-dev
https://github.com/trumanz/dockerBuild/blob/v1.0.1/ambari/Dockerfile
1. trumanz/ubuntu14.04-dev  设置了 root ssh登陆许可。
2. trumanz/ambari:dev   在trumanz/ ubuntu14.04-dev的基础上安装了 ambari  server 和agent的包, 并且设置了 ssh 秘钥设置。



2. 创建container,配置server
执行 https://github.com/trumanz/dockerBuild/blob/v1.0.1/ambari/sample/start_cluster.sh  脚本,
这里启动了4个container , 
as是Ambari server 
ag1, ag2, ag3 是我们的ambari agent ,也就是模拟需要管理的host, 

这里有一个已知问题,当遇到下面的log
REASON: Ambari Server java process died with exitcode -1. Check /var/log/ambari-server/ambari-server.out for more information.
可以到as  container里面手动启动 Ambari server, 如下
truman@z600:~/work/ambari-deploy/dockernized$ docker exec -t -i as /bin/bash
root@as:/# ambari-server start
还是输出同样的失败log,不要管,执行jps 命令,看到AmbariServer 启动就可以了,
root@as:/# jps
477 AmbariServer
549 Jps


3.  firefox 中 管理 配置节点
在firefox 中输入 as container的地址,形如, http://172.17.0.1:8080, 出现登陆密码,使用admin/admin 登陆,
1. 点 ”Lanuch Install Wizard“
2. 输入Cluster 名,形如“test”, 点next
3. 选择HDP  respository ,这里点开Advanced Repository Options 去掉除ubuntu12 之外的OS, 并且在HDP-2.2中将2.6.6.0 替换为2.4.4.2(注意这个版本,测试中发现2.6.6.0 在安装ZooKeeper 会出现问题
4. Install Options,在Target Hosts 中输入我们用container模拟的节点,也就是三行分别为 ag1, ag2和ag3。
    在SSH Private Key 中 选择  https://github.com/trumanz/dockerBuild/tree/v1.0.1/ambari/ssh 中的 id_rsa
5. 进入Confirm Hosts, 这一阶段时间比较长,出现warning,告知NTP 没有安装(这里因为我们是运行在同一主机的container环境中,所以并不需要NTP时间同步)可以忽略掉。
     选中所有host ,点NEXt
6. Choose Services, 这一步骤,只选择 HDFS , YARN+MpReduce2,ZooKeeper 和 Ambari Metrics (这里仍以简单的mapreduce示例)既可以。
7. Assign Masters, 这一步,我将大部分master都安装在ag1上
8. Assign Slaves and Clients,我这一部主要选中ag2 和ag3,这样在三个container中存数和计算
9. Customize Services, 这一步比较讨厌,因为docker 的container 里面识别到的内存大小和cpu数量 跟宿主机是一样的,所以推荐值并不合适,需要根据需求修改,这里需要根据自己的内存与配置情况修改(这些配置参数也可以在安装完成后修改,通过管理界面修改), 
这里暂时使用默认参数
一直下一步,进入 安装界面, 等待时间比较长

最终进入如下界面
docker + ambari(hortonworks ) 快速搭建hadoop 环境_第2张图片



这样我们就可以在ag1上执行mapreduc 的示例代码,除了一下两点,其他同官方教程相同
1. JAVA_HOME的路径
docker  image 环境变量已经设置
2. 这里HDFS的跟目录只有hdfs用户具有创建目录的权限,所以要使用hdfs 用户去创建目录,
root@ag1:/local# su - hdfs -c 'hdfs dfs -mkdir /input'



总结:
Docker 提供了快速搭建环境的运行环境的方式,但是在container看到内存和cpu信息是跟host宿主机相同的(即使设置通过--cpuset 以及-m设置了资源限制),所以我们的例子中Ambari 的统计信息中,内存、cpu 在各个模拟host中是完全相同的。 现在的Docker 并不适用去模拟节点,但其在部署service上具有非常大的速度优势。 
Ambari 工具可以非常方便的配置管理hadoop集群,并且提供配置每个service的参数的管理界面。

docker container 的存储,这里没有做挂载,所以会有性能影响。






你可能感兴趣的:(hadoop)