2、ambari搭建HDP集群
一、平台环境
- 操作系统:CentOS release 6.5 (Final)
- Java版本:jdk1.8.0_60
- Ambari版本:2.2.1.0
- HDP版本:2.4.0
- MySQL版本:MySQL-5.6.25-1
- 用户权限:cent,sudo无密码
- 主机IP:192.168.234.145
- 安装包路径:~/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
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)、进入主页面:
4)、点击Users,可以进入用户管理页面,此处可以添加用户或进行密码修改。
安装过程
点击launch Install Wizard,进入如下页面
填写集群名称并点击Next
选择安装包
进入如下页面:
选择HDP2.4,高级选项,展开如下页面:
配置HDP和HDP-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-ftpd、pure-ftpd-common、lrzsz服务外,其他基本都与系统有关。尤其zlibc服务一旦卸载,所有的ambari-agent会全部宕掉,导致部署无法继续。
处理ntp服务警告,点开警告显示:
机器上都没有安装ntp服务.
在线安装:sudo yum install ntp
启动:sudo service ntp start
关闭:sudo service ntp stop
点击“close”关闭警告窗口,然后点击“Next”继续
服务安装
选择服务,进入如下页面:
然后点击“Next”继续。这时会提示所选服务对Pig和Tez有依赖,要求添加,如下图所示:
这时点击“OK”即可,然后进入下一页,为各个节点分配不同角色,如下图:
为各服务器分配不同角色及服务,然后点击“Next”继续。
进入slaves和clients分配页面:
选定个角色,点击“Next”继续。进入如下页面:
图中红圈部分表示有异常,需要手工处理。
登录MySQL库,创建库并分配权限,如下:
填充上图中的Database Password,并点击“Test Connection”
链接测试结束后,点击最下方“Next”会有报错如下:
打印集群配置信息如下:
然后点击“Deploy”,进入安装进度页面,系统自动安装部署刚才选择的服务,具体显示如下:
安装状态并不正常,有5处警告。接下来处理警告,点开warings entered查看:
红色叹号的地方是报异常的服务,点击查看异常原因,如下:
在当前页面无法处理告警异常,我们可以点击OK关闭,回到“Install,Start and Test”页面,点击“Next”继续。进入“Summary”页面:
此处显示有5处告警,且服务启动失败。异常可以之后再调,点击“Complete”完成安装。
异常解决
完成安装过程后,进入HDP管理界面,如下图所示:
图中红色部分均包含异常,下面依次解决各异常:
HDFS异常
点击HDFS,进入页面:
在图中NameNode、SNameNode、DataNode都有异常。
首先点击NameNode,进入界面:
选择NameNode下的start,点击启动,弹出确认框,点击“OK”,进入界面:
当启动失败,会显示进度条为红色。此时点击三次跳转即可进入启动日志,如下:
红色箭头部分标注的就是错误位置。通过跟踪,发现是由于我们设置的数据库密码是数字“123456”,正常情况下是字符串正常,此处被解析成int型报错,解决方法,打开文件/var/lib/ambari-agent/cache/stacks/HDP/2.0.6/hooks/before-START/scripts/params.py,定位141行找到如下代码块:
统一改成:
保存。然后重新启动NameNode成功。
同理,SNameNode、DataNode节点的服务器也都是同样的问题,对应改一下,重新启动就OK了。返回Services、HDFS界面如下:
红箭头处查看一下,因为问题刚刚处理完,有一些信息尚未刷新过来,会有一点延迟,延迟过后状态显示如下:
状态正常,HDFS问题解决。
MapReduce2异常
在Services页面点击MapReduce2,进入页面:
启动“History Server”,启动正常。
查看右上角“alters”,半分钟左右自动变为正常。
YARN异常
在Services页面点击MapReduce2,进入页面:
启动各服务,查看“alerts”,结果显示如下:
此为ResourceManager的Web访问端口连接不了。查看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恢复正常。
一会我们再依次解决。先配置HA,点击“Services”、“HDFS”“Service Actions”、“Enable NameNode HA”
配置高可用HA
配置HDFS
点击“Services”、“HDFS”“Service Actions”、“Enable NameNode HA”,进入如下页面:
添加服务ID,点击“Next”,继续
选择角色,点击继续
使用默认配置,然后继续
按照说明执行相关命令,Next会由不可用变为可用状态,点击继续
各组件字段配置完成,点击继续
按照说明执行命令,Next变为可用状态,点击继续
等待执行完毕,点击继续
按说明执行命令,点击继续,弹窗
点击“OK”确认,进入HA Setup界面
等待完成。点击“Done”结束
配置YARN
点击“Services”、“YARN”“Service Actions”、“Enable ResourceManager HA”,进入如下页面:
点击Next继续,进入页面
当前NameNode不可更改,选择一台机器做备份节点,点击继续:
使用默认配置,点击继续:
待服务全部启动,完成。