设为首页 收藏本站
查看: 644|回复: 0

[经验分享] 通过docker部署hadoop集群

[复制链接]

尚未签到

发表于 2018-5-27 12:14:40 | 显示全部楼层 |阅读模式
  初学者,利用docker部署hadoop集群。
  

  根据他人的思路自己操作了一遍。
  原作者文章地址:
  http://blog.csdn.net/xu470438000/article/details/50512442
  作者将镜像分了好几个层次,这里可以只做成一个镜像系统。
  

  系统是centos7。hadoop版本2.6.0。
  *********************************************************

  先创建一个基础镜像。
  一、安装docker,通过yum直接装默认版
  yum -y install docker
  

  二、启动docker服务
  service docker start
  

  三、关闭防火墙,重启系统,启动镜像
  systemctl stop firewalld.service
  systemctl disable firewalld.service
  重启虚拟机reboot -h
  开启镜像:
  docker run -it centos /bin/bash
  可以正常进入,就说明镜像没有问题。
  ********************************************************
  四、再创建一个具有ssh的镜像,使用dockerfile的方式。
  在宿主机上(不是容器里)
  mkdir centos-ssh
  cd centos-ssh
  vi dockerfile    将如下内容编辑进去。
      #选择一个已有的镜像
      from docker.io/centos
      #安装openssh-server和sudo软件包,并且将sshd的UsePAM参数设置成no
      run yum install -y openssh-server sudo
      run sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config
      #安装poenssh-clients
      run yum install -y openssh-clients
      #添加用户root,密码是123456,将用户添加到sudoers中
      run echo "root:123456" | chpasswd
      run echo "rootALL=(ALL)ALL" >> /etc/sudoers
      # 下面这两句比较特殊,在centos6上必须要有,否则创建出来的容器sshd不能登录  
      # 我的是centos7,但是也添加了这句。
      run ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
      run ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
      #启动ssh,并且设置端口为22
      run mkdir /var/run/sshd
      expose 22
      CMD ["/usr/sbin/sshd", "-D"]
  保存退出。创建镜像。
  docker build -t="centos-ssh" .
  名字自己起。要注意后面的那个点,由此才能执行到dockerfile。
  docker images一下,可以看到镜像构建成功。
  *****************************************************
  五、再构建带有jdk的镜像
  在宿主机上,同样通过dockerfile的方式,步骤也一样,很容易记住。
  mkdir centos-ssh-jdk
  cd centos-ssh-jdk
  vi dockerfile
      from crxy/centos-ssh-root
      add jdk-8u11-linux-x64.tar.gz /usr/local/
      run mv /usr/local/jdk1.8.0_11 /usr/local/jdk1.8
      env JAVA_HOME /usr/local/jdk1.8
      env PATH $JAVA_HOME/bin:$PATH
  保存退出。创建镜像。
  docker build -t"centos-ssh-jdk" .
  查看下镜像中是否创建成功。
  ******************************************************
  六、再构建一个带hadoop的镜像。
  mkdir centos-ssh-jdk-hadoop
  cd centos-ssh-jdk-hadoop
      vi dockerfile
      vim dockerfile
      from crxy/centos-ssh-root-jdk
      add hadoop-2.6.0-cdh5.5.2.tar.gz /usr/local/
      run mv /usr/local/hadoop-2.6.0-cdh5.5.2 /usr/local/hadoop
      env HADOOP_HOME /usr/local/hadoo
      env PATH $HADOOP_HOME/bin:$PATH
保存退出。创建镜像。
docker build -t"centos-ssh-jdk-hadoop" .
查看下镜像中是否创建成功。
  **************************************************************
  七、最后,构建hadoop集群(容器没做持久化,并重启了的话,需要重新在此步开始)
  基于hadoop镜像,开启三个容器,也就是三个节点了,这里一主二从。
  hadoop0,hadoop1,hadoop2
  [root@qpf00 ~]# docker run --name hadoop0 --hostname hadoop0 -d -P -p 50070:50070 centos-ssh-jdk-hadoop
  [root@qpf00 ~]# docker run --name hadoop1 --hostname hadoop1 -d -P centos-ssh-jdk-hadoop
  [root@qpf00 ~]# docker run --name hadoop2 --hostname hadoop2 -d -P centos-ssh-jdk-hadoop
  

  八、利用pipework给容器设置固定的IP地址。
  自己百度一个pipework工具。当时的下载链接忘了,把这个传到51CTO了。
  http://down.51cto.com/data/2328511
  将工具传到宿主机上,
  [root@qpf00 ~]# unzip pipework-master.zip
  [root@qpf00 ~]# mv pipework-master pipework
  将pipework命令复制一份到/usr/local/bin/这个目录下
  [root@qpf00 pipework]# cp pipework /usr/local/bin/
  

  九、安装bridge-utils
  yum -y install bridge-utils
  十、创建网络
  这里需要建立一个逻辑网段(网桥),用来连接网络。
  brctl addbr br0
  修改br0的属性状态为开启
  ip link set dev br0 up
  设置宿主机:192.168.44.1\24 这表示一个网段。网络地址 192.168.1.0 、广播地址192.168.1.255可用地址 192.168.1.1--254
  ip addr add 192.168.44.130/24 dev br0
  至此,宿主机的IP地址就是192.168.44.130
  十一、给三个容器(节点)分配IP地址
  [root@qpf00 pipework]# pipework br0 hadoop0 192.168.44.10/24
  [root@qpf00 pipework]# pipework br0 hadoop1 192.168.44.11/24
  [root@qpf00 pipework]# pipework br0 hadoop2 192.168.44.12/24
  相互ping通的话,说明集群没问题。
  但是,无法连接外网。这个配置了好久,都没能连上外网。。。哎。前期还是可以连上的呢。配置完就不能了。
  十二、给三个节点(容器)做ssh
  先进入主节点:在hadoop1和hadoop2中,做同样的操作。
  先做IP与主机名的映射
  docker ecec -it hadoop0 /bin/bash
  vi /etc/hosts
  192.168.44.130    qpf00
  192.168.44.10   hadoop0
  192.168.44.11   hadoop1
  192.168.44.12   hadoop2
  创建秘钥
  [root@hadoop0 ~]# mkdir .ssh
  [root@hadoop0 ~]# cd .ssh
  [root@hadoop0 .ssh]# ssh-keygen -t rsa(一直按回车即可)
  [root@hadoop0 .ssh]# ssh-copy-id -i qpf00(这个是宿主机主机名,记住输入yes)
  [root@hadoop0 .ssh]# ssh-copy-id -i hadoop0(配置三个从节点的秘钥)
  [root@hadoop0 .ssh]# ssh-copy-id -i hadoop1
  [root@hadoop0 .ssh]# ssh-copy-id -i hadoop2
  在hadoop1和hadoop2中,做同样的操作。
  十三、配置hadoop集群
  进入hadoop0,即主节点上.
  配置core-site.xml/yarn-site.xml/mapred.xml/hdfs-site.xml/hadoop-env.sh
  1,vi core-site.xml
  <property>
  <name>fs.defaultFS</name>
  <value>hdfs://hadoop0:9000</value>
  </property>
  <property>
  <name>hadoop.tmp.dir</name>
  <value>/usr/local/hadoop/tmp</value>
  </property>
  <property>
  <name>fs.trash.interval</name>
  <value>1440</value>
  </property>
  2,vi yarn-site.xml
  <property>
  <name>yarn.nodemanager.aux-services</name>
  <value>mapreduce_shuffle</value>
  </property>
  <property>
  <name>yarn.log-aggregation-enable</name>
  <value>true</value>
  </property>
  <property>
  <description>The hostname of the RM.</description>
  <name>yarn.resourcemanager.hostname</name>
  <value>hadoop0</value>
  </property>
  3,先mv mapred-site.xml.template mapred-site.xml,再vi mapred-site.xml
  <property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
  </property>
  4,vi dhfs-site.xml
  <property>
  <name>dfs.replication</name>
  <value>1</value>
  </property>
  <property>
  <name>dfs.permissions</name>
  <value>false</value>
  </property>
  5,vi hadoop-env.sh
  export JAVA_HOME=/usr/local/jdk1.8
  6,vi slaves
  hadoop1
  hadoop2
  7,在hadoop0中执行命令:将hadoop拷贝给从节点
  scp  -rq /usr/local/hadoop   hadoop1:/usr/local
  scp  -rq /usr/local/hadoop   hadoop2:/usr/local
  8,还要在三个容器中安装which工具
  安装的是rpm包,包下载地址:
  https://centos.pkgs.org/7/centos-x86_64/which-2.20-7.el7.x86_64.rpm.html
  先传到宿主机上,再传到三个容器中
  [root@qpf00 ~]# docker cp which-2.20-7.el7.x86_64.rpm hadoop0:/usr/local/
  [root@qpf00 ~]# docker cp which-2.20-7.el7.x86_64.rpm hadoop1:/usr/local/
  [root@qpf00 ~]# docker cp which-2.20-7.el7.x86_64.rpm hadoop2:/usr/local/
  之后,rpm -ivh which-2.20-7.el7.x86_64.rpm就好了。
  十四、全部配置完,就可以格式化hadoop集群,然后启动了。

  在主节点上,执行
  cd /usr/local/hadoop
  bin/hdfs namenode -format
  出现successfully formatted。集群搭建成功。
  接着启动集群
  sbin/start-all.sh
  10,检测集群是否好用。
  jps一下看看
  主节点:
  
  762 NameNode
  926 SecondaryNameNode
  1055 ResourceManager
  1455 Jps
  从节点:
  354 NodeManager
  259 DataNode
  471 Jps
  到/usr/local/hadoop中,
  创建个HDFS目录/bin/hadoop fs -mkdir /user目录
查看是否有刚才建的目录/bin/hadoop fs -ls /
  然后上传一个字频文档,利用hadoop自身带的wordcount跑一下mapreduce,成功,就说明好用。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-481771-1-1.html 上篇帖子: 利用Swarmkit构建Windows/Linux混合Docker集群 下篇帖子: docker配置overlay存储
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表