2ambari搭建HDP集群

Posted netbloomy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2ambari搭建HDP集群相关的知识,希望对你有一定的参考价值。

一、平台环境

  1. 操作系统:CentOS release 6.5 (Final)
  2. Java版本:jdk1.8.0_60
  3. Ambari版本:2.2.1.0
  4. HDP版本:2.4.0
  5. mysql版本:MySQL-5.6.25-1
  6. 用户权限:cent,sudo无密码
  7. 主机IP:192.168.234.145
  8. 安装包路径:~/packages

二、环境准备
1、 增加系统打开文件数和进程数
在每台服务器命令行执行:ulimit -n
显示当前可以打开的最大文件数
sudo vim /etc/security/limits.conf
在文件中添加
  * - nofile 655350
  * - nproc 655350
然后保存
断开服务器重新连接,再次执行:ulimit -n
显示:  655350

2、永久关闭linux swap

    执行:cat /proc/sys/vm/swappiness

    结果为0表示已经关闭,否则执行

        sudo sysctl -w vm.swappiness=0

        sudo vi /etc/sysctl.conf

    在最后添加: vm.swappiness=0

    然后执行: sudo sysctl -p /etc/sysctl.conf

    可以看到刚才设置的vm.swappiness=0,设置成功

3、永久关闭防火墙

    执行关闭命令:sudo service iptables stop

    执行关闭开机启动命令:sudo chkconfig iptables off

    查看防火墙当前状态:sudo service iptables status

4、永久关闭selinux

    执行立即关闭命令:setenforce 0

    查看状态:getenforce

    显示:Permissive

    表示已经关闭

    永久关闭:sudo vim /etc/selinux/config

    SELINUX=enforcing改成SELINUX=disabled

    保存,然后需要重启系统

    查看selinux状态,执行:sestatus -v  

    显示:SELinux status:       disabled

    表示已经关闭。

5、取消CPU节能运行模式

6、修改主机名

    查看当前主机名:hostname

    修改当前主机名:hostname 主机名

    断开重连后查看主机名:hostname

    将主机名写入/etc/sysconfig/network: vi /etc/sysconfig/network

    修改:HOSTNAME=主机名

    然后保存。

7、关闭THP

    /etc/rc.local文件中添加

if test -f /sys/kernel/mm/transparent_hugepage/enabled; then 

  echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled 

fi 

if test -f /sys/kernel/mm/transparent_hugepage/defrag; then 

  echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag 

fi    

    然后重新启动服务器

8、配置/etc/hosts

    在每台服务器的/etc/hosts进行配置,配置方式为: IP    hostname

    格式,示例如下

        192.168.4.202    hostname1

        192.168.4.203    hostname2

9、配置互通无密码连接

    执行: ssh-keygen

    然后一路回车

        cd ~/.ssh

        cat id_rsa.pub

    将需要免密码登录到其他服务器的公钥复制,然后在每台要连接到的机器上执行

        cd ~/.ssh

        vim authorized_keys

    将复制好的公钥粘贴上去,保存。然后执行: chmod 600 authorized_keys

    然后执行:ssh 主机名

 

    然后按照提示输入yes,所有的服务器都做一遍。

10、配置启动ntp服务

    执行

        sudo yum install ntp

        sudo chkconfig ntpd on

        sudo service ntpd start

    结束

三、创建本地源

    1 下载源文件

        Ambari:http://public-repo-1.hortonworks.com/ambari/centos6/2.x/updates/2.2.1.0/ambari-2.2.1.0-centos6.tar.gz

        HDP:http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.4.0.0/HDP-2.4.0.0-centos6-rpm.tar.gz

        HDP_UTILS:http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/centos6/HDP-UTILS-1.1.0.20-centos6.tar.gz

        JDKhttp://download.oracle.com/otn/java/jdk/8u60-b27/jdk-8u60-linux-x64.tar.gz

                http://public-repo-1.hortonworks.com/ARTIFACTS/jdk-8u60-linux-x64.tar.gz

        JCEhttp://public-repo-1.hortonworks.com/ARTIFACTS/jce_policy-8.zip

    2、下载源配置文件

        Ambari:

        sudo wget -nv http://public-repo-1.hortonworks.com/ambari/centos6/2.x/updates/2.2.1.1/ambari.repo -O /etc/yum.repos.d/ambari.repo

        HDP:

        sudo wget -nv http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.4.0.0/hdp.repo -O /etc/yum.repos.d/hdp.repo

    3、创建本地源服务

        1)安装httpd

            sudo yum install httpd

            sudo chkconfig httpd on

            sudo service httpd start

        2)创建源

            sudo yum install yum-utils createrepo

            sudo mkdir -p /var/www/html

            切换到安装包目录

            sudo tar xzvf ambari-2.2.1.0-centos6.tar.gz -C /var/www/html/

            sudo tar xzvf HDP-2.4.0.0-centos6-rpm.tar.gz -C /var/www/html/

            sudo tar xzvf HDP-UTILS-1.1.0.19-centos6.tar.gz -C /var/www/html/

            sudo mkdir -p /var/www/html/java

            sudo mv jdk-8u60-linux-x64.gz /var/www/html/java/

            sudo mv jce_policy-8.zip /var/www/html/java/

        3)重启httpd服务

            sudo service httpd restart

        4)配置repos文件

            sudo vim /etc/yum.repos.d/ambari.repo

            修改如下:

            #VERSION_NUMBER=2.2.1.1-161

            baseurl=http://192.168.234.145/AMBARI-2.2.1.0/centos6/2.2.1.0-161

            gpgkey=http://192.168.234.145/AMBARI-2.2.1.0/centos6/2.2.1.0-161/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins

            保存。

            sudo vim /etc/yum.repos.d/hdp.repo

            [HDP-2.4.0.0]下修改如下:

            #VERSION_NUMBER=2.4.0.0-161

            baseurl=http://192.168.234.145/HDP/centos6/2.x/updates/2.4.0.0

            gpgkey=http://192.168.234.145/HDP/centos6/2.x/updates/2.4.0.0/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins

            [HDP-UTILS-1.1.0.20]下修改如下:

            baseurl=http://192.168.234.145/HDP-UTILS-1.1.0.19/repos/centos6

            gpgkey=http://192.168.234.145/HDP-UTILS-1.1.0.19/repos/centos6/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins

            保存。

四、MySQL安装

    1、下载安装包

        wget http://mirrors.sohu.com/mysql/MySQL-5.6/MySQL-5.6.30-1.linux_glibc2.5.x86_64.rpm-bundle.tar -P ~/packages

    2、安装过程

        cd ~/packages

        tar xvf MySQL-5.6.30-1.linux_glibc2.5.x86_64.rpm-bundle.tar 

        sudo rpm -qa | grep mysql

        sudo rpm -e --nodeps mysql-libs-5.1.71-1.el6.x86_64

        sudo yum search libaio

        sudo yum install libaio-devel.x86_64

        sudo rpm -ivh MySQL-client-5.6.25-1.linux_glibc2.5.x86_64.rpm

        sudo rpm -ivh MySQL-devel-5.6.25-1.linux_glibc2.5.x86_64.rpm

        sudo rpm -ivh MySQL-server-5.6.25-1.linux_glibc2.5.x86_64.rpm

    3、配置过程(配置文件/etc/my.cnf

        [client]

        default-character-set=utf8        

        [mysqld]

        datadir=/data/mysql

        socket=/var/lib/mysql/mysql.sock

        user=mysql

        # Disabling symbolic-links is recommended to prevent assorted security risks

        symbolic-links=0

        #default-character-set=utf8

        character_set_server=utf8

        init_connect=\'SET NAMES utf8\'

        innodb_buffer_pool_size=64M

        max_connections=800

        wait_timeout=86400

        [mysqld_safe]

        default-character-set=utf8

        log-error=/var/log/mysql/mysql.log

        pid-file=/var/run/mysql/mysql.pid

   4、初始化设置

        sudo mkdir -p /data/mysql

        sudo chown mysql:mysql /data/mysql

        sudo mkdir -p /var/lib/mysql

        sudo chown mysql:mysql /var/lib/mysql

        sudo mkdir -p /var/log/mysql

        sudo chown mysql:mysql /var/log/mysql

        sudo mkdir -p /var/run/mysql

        sudo chown mysql:mysql /var/run/mysql

        sudo mysql_install_db

        sudo service mysql start

        sudo /usr/bin/mysql_secure_installation

        Set root password? [Y/n]Y

        输入两次密码

        New password: 

        Re-enter new password: 

        Remove anonymous users? [Y/n]Y

        Disallow root login remotely? [Y/n]n

        Remove test database and access to it? [Y/n]Y

        Reload privilege tables now? [Y/n]Y

    5、可能问题

        执行: sudo /usr/bin/mysql_secure_installation

        报错

            Enter current password for root (enter for none): 

            ERROR 2002 (HY000): Can\'t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock\' (2)

        这是由于: /var/lib/mysql/mysql.sock

        在该命令文件里写死了,可以手工设置

            mysql -uroot

            mysql> set password=PASSWORD("sdfsad#23234$");

            mysql> flush privileges;

五、Ambari安装部署(在ambari-server服务器上部署)

    1、安装ambari-server

        sudo yum search ambari-server

        sudo yum install ambari-server 

    2 配置java发布源(默认网上下载地址)

        sudo vim /etc/ambari-server/conf/ambari.properties

        jdk1.8.url=http://192.168.234.145/java/jdk-8u60-linux-x64.tar.gz

        jdk1.8.jcpol-url=http://192.168.234.145/java/jce_policy-8.zip

    3、配置ambari-server

        sudo ambari-server setup

        Customize user account for ambari-server daemon [y/n] (n)?y

        Enter user account for ambari-server daemon (root):ambari

        Checking JDK...

       [1] Oracle JDK 1.8 + Java Cryptography Extension (JCE) Policy Files 8

       [2] Oracle JDK 1.7 + Java Cryptography Extension (JCE) Policy Files 7

       [3] Custom JDK

       ==============================================================================

       Enter choice (1):1

       Do you accept the Oracle Binary Code License Agreement [y/n] (y)? y

       Enter advanced database configuration [y/n] (n)?y

       ==============================================================================

       Choose one of the following options:

       [1] - PostgreSQL (Embedded)

       [2] - Oracle

       [3] - MySQL

       [4] - PostgreSQL

       [5] - Microsoft SQL Server (Tech Preview)

       [6] - SQL Anywhere

       ==============================================================================

       Enter choice (1):3

       Hostname (localhost): cent00

       Port (3306): 3306

       Database name (ambari): ambari

       Username (ambari): ambari

       Enter Database Password (bigdata): 

       Re-enter password:

       WARNING: Before starting Ambari Server, you must copy the MySQL JDBC driver JAR file to /usr/share/java.

       新开窗口,单独执行:

           sudo mkdir -p /usr/share/java

           cd /usr/share/java

           sudo rz -y

           添加mysql-connector-java-5.1.35-bin.jar

       返回点击Enter继续

       WARNING: Before starting Ambari Server, you must run the following DDL against the database to create the schema: /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql

       新开窗口,执行

           mysql -uroot -p123456

           mysql>create database ambari;

           mysql>grant all privileges on ambari.* to ambari@cent00 identified by \'123456\';

           mysql>flush privileges;

           mysql>use ambari;

           mysql>source /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql;

       返回原窗口

       Proceed with configuring remote database connection properties [y/n] (y)? y

        若返回: Ambari Server \'setup\' completed successfully.

        安装成功

        添加MySQ连接器jdbccd /usr/lib/ambari-server

        上传jarmysql-connector-java-5.1.35-bin.jar 

    4、启动ambari-server

        sudo service ambari-server start

        返回:Ambari Server \'start\' completed successfully.

        启动成功

    5、修改ambari-server访问端口

        在部署server的服务器上执行:sudo vim /etc/ambari-server/conf/ambari.properties 

        在文件末尾添加:client.api.port=端口号

        保存,重启生效。   

六、配置部分

1)、登录server,登录地址:http://192.168.234.145:8080/#/login

2)、初始用户名密码:admin/admin

3)、进入主页面:

4)、点击Users,可以进入用户管理页面,此处可以添加用户或进行密码修改。

安装过程

点击launch Install Wizard,进入如下页面

填写集群名称并点击Next

选择安装包

进入如下页面:

选择HDP2.4,高级选项,展开如下页面:

配置HDPHDP-UTILS本地源路径,然后Next

配置连接服务器

进入如下页面:

添加服务器列表ubt202-ubt206,下载ubt202/home/Ubuntu/.ssh/id_rsa文件到本地,然后点击“选择文件”上传,填写登录名,然后点击“Register and Confirm,出现如下弹框:

点击“OK,出现以下对话框

我们不管他,点“OK继续。跳转到:

当状态变为如下:

先点击“Click here to see the warnings看警告是否要紧。如果不要紧点击“Next继续。如果有警告未处理,会弹窗:

需要处理则点“Cancel,否则“OK,这里我们选择处理警告。

警告处理

关闭THP,执行如下命令:

vi /etc/init.d/disable-transparent-hugepages

复制如下内容到该文件并保存:

#!/bin/sh

### BEGIN INIT INFO

# Provides:  disable-transparent-hugepages

# Required-Start:$local_fs

# Required-Stop:

# X-Start-Before:mongod mongodb-mms-automation-agent

# Default-Start: 2 3 4 5

# Default-Stop:  0 1 6

# Short-Description: Disable Linux transparent huge pages

# Description:   Disable Linux transparent huge pages, to improve

#database performance.

### END INIT INFO

case $1 in

  start)

    if [ -d /sys/kernel/mm/transparent_hugepage ]; then

      thp_path=/sys/kernel/mm/transparent_hugepage

    elif [ -d /sys/kernel/mm/redhat_transparent_hugepage ]; then

      thp_path=/sys/kernel/mm/redhat_transparent_hugepage

    else

      return 0

    fi

    echo \'never\' > ${thp_path}/enabled

    echo \'never\' > ${thp_path}/defrag

    unset thp_path

  ;;

esac

然后执行命令:

sudo chmod 755 /etc/init.d/disable-transparent-hugepages

sudo update-rc.d disable-transparent-hugepages defaults

然后重启服务器(这部一定要提前做)

之后从页面登录开始把前面做的部分重新做一遍

卸载多余安装包使用命令,具体如下图所示:

图中黄色三角形的部分为有警告,点开可以看到详情。详情部分Package对应的列为安装包,后面host表示当前有多少台机器安装了该安装包,鼠标悬浮可以看到具体的服务器。然后到对应服务器上执行命令:

sudo yum remove 安装包

然后点击“Return Checks需要注意的是,如果对服务用途不了解,千万不要轻易清理,否则可能导致系统异常。上图中除了pure-ftpdpure-ftpd-commonlrzsz服务外,其他基本都与系统有关。尤其zlibc服务一旦卸载,所有的ambari-agent会全部宕掉,导致部署无法继续。

处理ntp服务警告,点开警告显示:

机器上都没有安装ntp服务.

在线安装:sudo yum install ntp

启动:sudo service ntp start

关闭:sudo service ntp stop

点击“close关闭警告窗口,然后点击“Next继续

服务安装

选择服务,进入如下页面:

然后点击“Next继续。这时会提示所选服务对PigTez有依赖,要求添加,如下图所示:

这时点击“OK即可,然后进入下一页,为各个节点分配不同角色,如下图:

为各服务器分配不同角色及服务,然后点击“Next继续。

进入slavesclients分配页面:

选定个角色,点击“Next继续。进入如下页面:

图中红圈部分表示有异常,需要手工处理。

登录MySQL库,创建库并分配权限,如下:

填充上图中的Database Password,并点击“Test Connection 

链接测试结束后,点击最下方“Next会有报错如下:

打印集群配置信息如下:

然后点击“Deploy,进入安装进度页面,系统自动安装部署刚才选择的服务,具体显示如下:

安装状态并不正常,有5处警告。接下来处理警告,点开warings entered查看:

红色叹号的地方是报异常的服务,点击查看异常原因,如下:

在当前页面无法处理告警异常,我们可以点击OK关闭,回到“InstallStart and Test页面,点击“Next继续。进入“Summary页面:

此处显示有5处告警,且服务启动失败。异常可以之后再调,点击“Complete完成安装。

异常解决

完成安装过程后,进入HDP管理界面,如下图所示:

图中红色部分均包含异常,下面依次解决各异常:

HDFS异常

点击HDFS,进入页面:

在图中NameNodeSNameNodeDataNode都有异常。

首先点击NameNode,进入界面:

选择NameNode下的start,点击启动,弹出确认框,点击“OK,进入界面:

当启动失败,会显示进度条为红色。此时点击三次跳转即可进入启动日志,如下:

红色箭头部分标注的就是错误位置。通过跟踪,发现是由于我们设置的数据库密码是数字“123456,正常情况下是字符串正常,此处被解析成int型报错,解决方法,打开文件/var/lib/ambari-agent/cache/stacks/HDP/2.0.6/hooks/before-START/scripts/params.py,定位141行找到如下代码块:

统一改成:

保存。然后重新启动NameNode成功。

同理,SNameNodeDataNode节点的服务器也都是同样的问题,对应改一下,重新启动就OK了。返回ServicesHDFS界面如下:

红箭头处查看一下,因为问题刚刚处理完,有一些信息尚未刷新过来,会有一点延迟,延迟过后状态显示如下:

状态正常,HDFS问题解决。

MapReduce2异常

Services页面点击MapReduce2,进入页面:

启动“History Server,启动正常。

查看右上角“alters,半分钟左右自动变为正常。

YARN异常

Services页面点击MapReduce2,进入页面:

启动各服务,查看“alerts,结果显示如下:

此为ResourceManagerWeb访问端口连接不了。查看ubt202上的ResourceManager日志,报错:

Zookeeper异常,可以先解决完,再回来看ResourceManager。结果ResourceManager状态也正常了。

Hive异常

点击Services页面的Hive,进入页面:

启动服务,启动Hive MetaStore如下:

启动结果显示失败,查看日志:

将文件mysql-connector-java-5.1.35-bin.jar上传到ubt202服务器的/var/lib/ambari-server/resources目录,重命名为mysql-jdbc-driver.jar,然后重新启动Hive Metastore,成功。

其他两个服务直接启动后,Hive正常。

Hbase异常

点击Services页面进入Hbase服务:

启动各服务之后Hbase状态恢复正常,如下:

 ZooKeeper异常

点击Services页面进入Zookeeper服务:

启动完毕后状态如下:

Storm异常

点击Services页面进入Storm服务

启动各服务:

Storm恢复正常。

Ambari Metrics异常

点击Services页面进入Ambari Metrics服务

启动各服务

Kafka异常

点击Services页面进入Kafka服务

启动Kafka Broker,问题解决:

Spark异常

点击Services页面进入Spark服务

启动各服务:

Spark恢复正常。

以上是关于2ambari搭建HDP集群的主要内容,如果未能解决你的问题,请参考以下文章

Ambari2.7.3 + HDP3.1.0 集群搭建

Ambari2.7.3 + HDP3.1.0 集群搭建 ambari-hdp-1.repo中baseurl无值

Ambari2.7.3 + HDP3.1.0 集群搭建 ambari-hdp-1.repo中baseurl无值

Ambari2.7.3 和HDP3.1.0搭建Hadoop集群

Ambari 2.6.0 HDP 2.6.3集群搭建

Ambari HDP集群搭建文档_zhoujp