规划

OS:


Ambari-yumrepo   公网 

Ambari-server    内网  

hadoop-master1   内网   

hadoop-master2    内网   

hadoop-slave1     内网  

hadoop-slave2     内网   

hadoop-slave3     内网 


             

准备工作

(1)修改主机名

    • Ambari-server、master1、master2、slave1、slave2、slave3
    $ hostname XXX && echo XXX >/etc/hostname
    $ cat >> /etc/hosts << EOF
     master1
     master2
     slave1
     slave2
     slave3
     ambari-server
     ambari-yumrepo
    EOF


    (2)关闭selinux和防火墙

      • Ambari-server、master1、master2、slave1、slave2、slave3
      $ setenforce 0
      $ service iptables stop
      $ chkconfig iptables off


      (3)主从节点ssh互信

      • slave1、slave2、slave3
      $ echo sshd:  >>/etc/
       
      • master1、master2
      $ ssh-keygen -t rsa
      $ ssh-copy-id -i ~/.ssh/id_ root@slave1
      $ ssh-copy-id -i ~/.ssh/id_ root@slave2
      $ ssh-copy-id -i ~/.ssh/id_ root@slave3


      (4)安装jdk

        • Ambari-server、master1、master2、slave1、slave2、slave3
        $ wget /otn-pub/java/jdk/8u111-b14/jdk-8u111-linux-
        $ rpm -ivh jdk-8u111-linux-

        (5)格式化硬盘

          • Ambari-server、master1、master2、slave1、slave2、slave3
          $ yes| /dev/sdb
          $ mkdir /data
          $ mount /dev/sdb /data
          $ echo "mount /dev/sdb /data" >>/etc/



          (6)系统参数调优

            • Ambari-server、master1、master2、slave1、slave2、slave3
            $ cat >>/etc/ <<EOF
            _fin_timeout = 30
            _keepalive_time = 1200 
            _syncookies = 1 
            _tw_reuse = 1 
            _tw_recycle = 1 
            _local_port_range = 1024 65000
            _max_syn_baklog = 8192
            _max_tw_bukets = 5000
            EOF


            文件打开数


            $ cat >> /etc/security/ <<EOF
            *             soft    nofile          65535*             hard    nofile          65535
            EOF


            重启


            二:搭建内网yum源

            注意:因为考虑到hadoop集群的机器可能是内网机器,没有公网访问权限,那么选择搭建一个内网的yum源,这个yum源的机器需要有公网权限。如果你的机器都可以出公网,也可以跳过这一步。


            (1)添加yum源

            • Ambari-yumrepo
            $ cd /opt
            $ wget public-repo-/ambari/centos6//updates//
            $ cp  /etc//




            (2)同步yum源的包

            • Ambari-yumrepo
            $ reposync  -r HDP-UTILS-
            $ reposync  -r Updates-ambari-
            $ reposync  -r ambari-


            会在当前目录生成三个目录。


            (3)发布yum源

            • Ambari-yumrepo

            需要一个web服务器来发布,已经安装了nginx,将上面下载包的三个目录移动到nginx发布目录下。


            $ yum install nginx
            $ mkdir /usr/share/nginx/html/ambari
            $ cp -R ambari-    /usr/share/nginx/html/ambari/
            $ cp -R HDP-UTILS-   /usr/share/nginx/html/ambari/
            $ cp -R Updates-ambari-  /usr/share/nginx/html/ambari/


            (4)创建repo

            • Ambari-yumrepo

            安装createrepo命令


            $ yum install createrepo
            $ cd  /usr/share/nginx/html/ambari/
            $ createrepo ./



            (5)添加HDP源

            • Ambari-yumrepo
            $ vim /etc//
            [HDP-]
            name=HDP
            baseurl=public-repo-/HDP/centos6//updates/
            enabled=1
            gpgcheck=0
             
             
            $ mkdir /usr/share/nginx/html/hdp
            $ cd /usr/share/nginx/html/hdp
            同步网络源的包,1G左右。
            $ reposync -r HDP-
            $ createrepo ./


            这样就本地yum源就OK了!


            (6)配置配置文件,放在web目录下。

            • Ambari-yumrepo

            注意:这个配置是给其他机器来使用的,不是本机的配置。


            $ mkdir /usr/share/nginx/html/hadoop
            $ cd /usr/share/nginx/html/hadoop
            $ vim 
            [ambari-]
            name=Ambari 
            baseurl=/ambari/
            gpgcheck=0
            enabled=1
            [HDP-UTILS-]
            name=Hortonworks Data Platform Utils Version - HDP-UTILS-
            baseurl=/ambari/
            gpgcheck=0
            enabled=1
            [Updates-ambari-]
            name=ambari- - Updates
            baseurl=/ambari/
            gpgcheck=
            enabled=1
             
            $ vim 
            [HDP-]
            name=HDP
            baseurl=/hdp
            path=/
            enabled=1
            gpgcheck=0



            三:安装Ambari

            (1)添加yum源

            • Ambari-server、master1、master2、slave1、slave2、slave3

            $ cd /etc//  $ wget /hadoop/   #上面搭建的内网yum源 $ wget /hadoop/      #上面搭建的内网yum源



            (2)ambari主机ssh信任hadoop各机器

            • master1、master2、slave1、slave2、slave3
            $ echo sshd:  >>/etc/
             
            • Ambari-server
            $ ssh-keygen -t rsa
            $ ssh-copy-id -i ~/.ssh/id_ root@master1
            $ ssh-copy-id -i ~/.ssh/id_ root@master2
            $ ssh-copy-id -i ~/.ssh/id_ root@slave1
            $ ssh-copy-id -i ~/.ssh/id_ root@slave2
            $ ssh-copy-id -i ~/.ssh/id_ root@slave3

            (3)安装ambari

            • Ambari-server

            $ yum -y install ambari-server



            (4)初始化ambari

            • Ambari-server

            下载需要的jdk文件(必须用这个文件)


            $ wget public-repo-/ARTIFACTS/jdk-6u31-linux-
            $ mv jdk-6u31-linux- /var/lib/ambari-server/resources/
            
            $ ambari-server setup  #初始化配置



            (5)启动ambari

            • Ambari-server

            $ ambari-server start



            (6)给ambari配置本地的hadoop源

            • Ambari-server
            $ cd /var/lib/ambari-server/resources/stacks/HDPLocal//repos/
            $ vim 
            将centos6的
            <baseurl>public-repo-/HDP/centos6//updates/</baseurl>
            替换成
            <baseurl>/hdp/centos6//updates/</baseurl>



            (7)进入ambari

            • 访问::8080进入ambari,user:admin,passwd:admin
            • 输入集群名
            • 选择 stack 版本
            • Target Hosts输入hadoop机器的列表,需要添加ambari-server这台机器的/root/.ssh/id_rsa文件。
            • 会自动安装ambari-agent
            • 选择那个服务安装在哪个机器上。
            • 配置客户端和slaves
            • 配置各个系统
            • 开始安装

            通过Ambari部署hadoop集群成功!




            部署过程中遇到的问题:

            1:执行os_type_脚本执行失败导致的Local OS is not compatible with cluster primary OS报错,这是一个BUG,可以直接修改该os_type_,输出正确的结果。


            2:ambari没有复制过去正确的hdp源,所以手动将hdp源配置到hadoop的集群


            $ vim  [HDP-] name=HDP baseurl=/hdp path=/ enabled=1 gpgcheck=0


            3:nagios输入正确密码和用户名无法登陆,密码文件httpd用户没有权限,设置777后可以正常访问。

            -rw-r----- 1 nagios nagios 26 Jun  9 11:54 /etc/nagios/


            4:jourenode无法启动报错

            直接执行yum会报错

            $ yum  -d 0 -e 0 -y install net-snmp-utils
            rpmdb: Thread/process 12500/139757427676928 failed: Thread died in Berkeley DB library
            error: db3 error(-30974) from dbenv->failchk: DB_RUNRECOVERY: Fatal error, run database recovery
            error: cannot open Packages index using db3 -  (-30974)
            error: cannot open Packages database in /var/lib/rpm
            CRITICAL::
            解决办法:
            $ rm -rf /var/lib/rpm/__db.*