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、 增加系统打开文件数和进程数
在每台服务器命令行执行:
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不可更改,选择一台机器做备份节点,点击继续:

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

待服务全部启动,完成。
2、ambari搭建HDP集群的更多相关文章
- 基于Ambari Server部署HDP集群实战案例
基于Ambari Server部署HDP集群实战案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.部署Ambari Server端 博主推荐阅读: https://www.c ...
- 使用Ambari部署hadoop集群
准备工作 1. 设置sudo免密码登陆 由于CentOS安装之后,普通用户无sudo权限,故应该设置sudo权限. 参考文章:http://www.cnblogs.com/maybob/p/32988 ...
- 手把手教你通过Ambari新建Hadoop集群图解案例
手把手教你通过Ambari新建Hadoop集群图解案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 登陆系统之后,会看到Ambari空空如也的欢迎界面,接下来我们就需要介绍如何通 ...
- Ambari2.7.3 和HDP3.1.0搭建Hadoop集群
一.环境及软件准备 1.集群规划 hdp01/10.1.1.11 hdp02/10.1.1.12 hdp03/10.1.1.13 hdp04/10.1.1.14 hdp05/10.1.1.15 a ...
- AMBARI部署HADOOP集群(4)
通过 Ambari 部署 hadoop 集群 1. 打开 http://192.168.242.181:8080 登陆的用户名/密码是 : admin/admin 2. 点击 “LAUNCH INS ...
- ambari部署Hadoop集群(2)
准备本地 repository 1. 下载下面的包 wget http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.7.3 ...
- MongoDB 搭建分片集群
在MongoDB(版本 3.2.9)中,分片是指将collection分散存储到不同的Server中,每个Server只存储collection的一部分,服务分片的所有服务器组成分片集群.分片集群(S ...
- 分布式缓存技术redis学习系列(四)——redis高级应用(集群搭建、集群分区原理、集群操作)
本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用( ...
- 使用Windows Azure的VM安装和配置CDH搭建Hadoop集群
本文主要内容是使用Windows Azure的VIRTUAL MACHINES和NETWORKS服务安装CDH (Cloudera Distribution Including Apache Hado ...
随机推荐
- RabbitMQ消息队列(十)RPC应用2
基于RabbitMQ RPC实现的主机异步管理 地址原文:http://blog.51cto.com/baiying/2065436,作者大大,我把原文贴出来了啊.不要告我 root@ansible: ...
- JS中将对象转化为数组
前言 其实这本来应该是一个很基础的问题了,但我之做一想记录一下是因为之前因为对象转数组的时候卡住了后来弄了出来,但最近再遇到这个问题时竟然又卡主了,所以,关于这个问题,如何把一个对象{'未完成':5, ...
- Spring源码解析-IOC容器的实现
1.IOC容器是什么? IOC(Inversion of Control)控制反转:本来是由应用程序管理的对象之间的依赖关系,现在交给了容器管理,这就叫控制反转,即交给了IOC容器,Spring的IO ...
- 转载:【Oracle 集群】RAC知识图文详细教程(二)--Oracle 集群概念及原理
文章导航 集群概念介绍(一) ORACLE集群概念和原理(二) RAC 工作原理和相关组件(三) 缓存融合技术(四) RAC 特殊问题和实战经验(五) ORACLE 11 G版本2 RAC在LINUX ...
- dilworth定理+属性排序(木棍加工)
P1233 木棍加工 题目描述 一堆木头棍子共有n根,每根棍子的长度和宽度都是已知的.棍子可以被一台机器一个接一个地加工.机器处理一根棍子之前需要准备时间.准备时间是这样定义的: 第一根棍子的准备时间 ...
- New Concept English there (6)
30w/m The expensive shops in a famous arcade near Piccadilly were just opening. At this time of the ...
- PostgreSQL统计信息挖掘
PG提供了丰富的统计信息,但是没有将这些统计信息使用的简单查询搞成存储过程,需要我们自己根据需要灵活的去挖掘,最近做了数据库监控,用了一些简单的东西,于是想往深了挖一下. 首先看看系统表和视图,他们都 ...
- 在初次安vs2008时设置的为C#现在怎么将其改为其他类型的界面
如将C#改成C++, 工具 -> 导入和导出设置 -> 重置所有设置 -> 否,仅重置设置,从而覆盖我的当前设置 -> 重新选一个设置 -> 完成 选择完毕后,如新建MF ...
- (转)MapReduce Design Patterns(chapter 7 (part 1))(十三)
CHAPTER 7.Input and Output Patterns 本章关注一个最经常忽略的问题,来改进MapReduce 的value:自定义输入和输出.我们并不会总使用Mapreduce本身的 ...
- [置顶]
Isolation Forest算法实现详解
本文算法完整实现源码已开源至本人的GitHub(如果对你有帮助,请给一个 star ),参看其中的 iforest 包下的 IForest 和 ITree 两个类: https://github.co ...