一、平台环境

  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、 增加系统打开文件数和进程数
在每台服务器命令行执行:

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

JDK:http://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

JCE:http://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连接器jdbc:cd /usr/lib/ambari-server

上传jar包mysql-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)、进入主页面:

2、ambari搭建HDP集群-LMLPHP

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

安装过程

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

2、ambari搭建HDP集群-LMLPHP

填写集群名称并点击Next

选择安装包

进入如下页面:

2、ambari搭建HDP集群-LMLPHP

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

2、ambari搭建HDP集群-LMLPHP

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

配置连接服务器

进入如下页面:

2、ambari搭建HDP集群-LMLPHP

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

2、ambari搭建HDP集群-LMLPHP

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

2、ambari搭建HDP集群-LMLPHP

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

2、ambari搭建HDP集群-LMLPHP

当状态变为如下:

2、ambari搭建HDP集群-LMLPHP

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

2、ambari搭建HDP集群-LMLPHP

需要处理则点“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

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

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

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

2、ambari搭建HDP集群-LMLPHP

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

sudo yum remove 安装包

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

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

2、ambari搭建HDP集群-LMLPHP

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

在线安装:sudo yum install ntp

启动:sudo service ntp start

关闭:sudo service ntp stop

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

服务安装

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

2、ambari搭建HDP集群-LMLPHP

2、ambari搭建HDP集群-LMLPHP

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

2、ambari搭建HDP集群-LMLPHP

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

2、ambari搭建HDP集群-LMLPHP

2、ambari搭建HDP集群-LMLPHP

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

进入slaves和clients分配页面:

2、ambari搭建HDP集群-LMLPHP

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

2、ambari搭建HDP集群-LMLPHP

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

2、ambari搭建HDP集群-LMLPHP

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

2、ambari搭建HDP集群-LMLPHP

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

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

2、ambari搭建HDP集群-LMLPHP

打印集群配置信息如下:

2、ambari搭建HDP集群-LMLPHP

2、ambari搭建HDP集群-LMLPHP

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

2、ambari搭建HDP集群-LMLPHP

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

2、ambari搭建HDP集群-LMLPHP

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

2、ambari搭建HDP集群-LMLPHP

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

2、ambari搭建HDP集群-LMLPHP

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

异常解决

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

2、ambari搭建HDP集群-LMLPHP

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

HDFS异常

点击HDFS,进入页面:

2、ambari搭建HDP集群-LMLPHP

在图中NameNode、SNameNode、DataNode都有异常。

首先点击NameNode,进入界面:

2、ambari搭建HDP集群-LMLPHP

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

2、ambari搭建HDP集群-LMLPHP

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

2、ambari搭建HDP集群-LMLPHP

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

2、ambari搭建HDP集群-LMLPHP

统一改成:

2、ambari搭建HDP集群-LMLPHP

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

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

2、ambari搭建HDP集群-LMLPHP

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

2、ambari搭建HDP集群-LMLPHP

状态正常,HDFS问题解决。

MapReduce2异常

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

2、ambari搭建HDP集群-LMLPHP

启动“History Server”,启动正常。

2、ambari搭建HDP集群-LMLPHP

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

YARN异常

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

2、ambari搭建HDP集群-LMLPHP

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

2、ambari搭建HDP集群-LMLPHP

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

2、ambari搭建HDP集群-LMLPHP

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

Hive异常

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

2、ambari搭建HDP集群-LMLPHP

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

2、ambari搭建HDP集群-LMLPHP

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

2、ambari搭建HDP集群-LMLPHP

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

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

Hbase异常

点击Services页面进入Hbase服务:

2、ambari搭建HDP集群-LMLPHP

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

2、ambari搭建HDP集群-LMLPHP

 ZooKeeper异常

点击Services页面进入Zookeeper服务:

2、ambari搭建HDP集群-LMLPHP

启动完毕后状态如下:

2、ambari搭建HDP集群-LMLPHP

Storm异常

点击Services页面进入Storm服务

2、ambari搭建HDP集群-LMLPHP

启动各服务:

2、ambari搭建HDP集群-LMLPHP

Storm恢复正常。

Ambari Metrics异常

点击Services页面进入Ambari Metrics服务

2、ambari搭建HDP集群-LMLPHP

启动各服务

Kafka异常

点击Services页面进入Kafka服务

2、ambari搭建HDP集群-LMLPHP

启动Kafka Broker,问题解决:

2、ambari搭建HDP集群-LMLPHP

Spark异常

点击Services页面进入Spark服务

2、ambari搭建HDP集群-LMLPHP

启动各服务:

2、ambari搭建HDP集群-LMLPHP

Spark恢复正常。

一会我们再依次解决。先配置HA,点击“Services”、“HDFS”“Service Actions”、“Enable NameNode HA”

2、ambari搭建HDP集群-LMLPHP

配置高可用HA

配置HDFS

点击“Services”、“HDFS”“Service Actions”、“Enable NameNode HA”,进入如下页面:

2、ambari搭建HDP集群-LMLPHP

添加服务ID,点击“Next”,继续

2、ambari搭建HDP集群-LMLPHP

选择角色,点击继续

2、ambari搭建HDP集群-LMLPHP

使用默认配置,然后继续

2、ambari搭建HDP集群-LMLPHP

按照说明执行相关命令,Next会由不可用变为可用状态,点击继续

2、ambari搭建HDP集群-LMLPHP

各组件字段配置完成,点击继续

2、ambari搭建HDP集群-LMLPHP

按照说明执行命令,Next变为可用状态,点击继续

2、ambari搭建HDP集群-LMLPHP

等待执行完毕,点击继续

2、ambari搭建HDP集群-LMLPHP

按说明执行命令,点击继续,弹窗

2、ambari搭建HDP集群-LMLPHP

点击“OK”确认,进入HA Setup界面

2、ambari搭建HDP集群-LMLPHP

等待完成。点击“Done”结束

配置YARN

点击“Services”、“YARN”“Service Actions”、“Enable ResourceManager HA”,进入如下页面:

2、ambari搭建HDP集群-LMLPHP

点击Next继续,进入页面

2、ambari搭建HDP集群-LMLPHP

当前NameNode不可更改,选择一台机器做备份节点,点击继续:

2、ambari搭建HDP集群-LMLPHP

使用默认配置,点击继续:

2、ambari搭建HDP集群-LMLPHP

待服务全部启动,完成。

05-25 13:49