先明确几个概念:
1. Ambari只能安装Hortonworks Data Platform,即Hortonworks的开源Hadoop,不支持Apach的Hadoop平台;
2. 对于已经安装了Apach Hadoop或者其他Hadoop平台的,不能使用Ambari来管理;
再说几个注意事项:
1. Ambari默认的安装方式是使用yum,从远程下载HDP组件安装,而HDP平台安装包都非常大(本例中使用的HDP-2.4.1安装包为6G),Ambari平台有又30分钟的Timeout限制,如果在30分钟内下载不完HDP,就会造成安装失败。建议修改下载源文件,配置为本地源;
2. Ambari安装过程为自动安装,自动安装脚本会创建很多用户和其他组件(如系统自带的Java和数据库),建议使用一套干净的环境来安装。
3. 系统请关闭Selinux、防火墙和THP;
4. 集群机器请事先配置ssh互信;还是建议使用root用户来互信;
操作系统:CentOS 6.6
集群机器情况:
机器名
IP
功能
备注
Namenode1
172.26.5.21
NameNode and JobTracker
以下可能简称为主机
Data01
172.26.5.22
Second Namenode
以下可能简称为节点
Data02
172.26.5.23
DataNode and TaskTracker
以下可能简称为节点
Data03
172.26.5.24
DataNode and TaskTracker
以下可能简称为节点
2.1 配置本地源
上文提到,为了加快安装速度和防止超时错误,建议为HDP配置本地源,请在事先在网上下载HDP、HDP-UTILS和Ambari,本例中几个组件版本为HDP-2.5.0,HDP-UTILS-1.1.0.21和Ambari-2.4.1.0。我们把namenode1服务器做为源服务器。以下操作在namenode1机器运行。
1、下载压缩包
首先下载包含必要软件的压缩包(tarball)到本地,以centOS6、centOS7,Ambari 2.4.1和HDP2.5.0.0为例:
Ambari-2.4.1.0 压缩包地址:
http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.4.1.0/ambari-2.4.1.0-centos7.tar.gz
http://public-repo-1.hortonworks.com/ambari/centos6/2.x/updates/2.4.1.0/ambari-2.4.1.0-centos6.tar.gz
HDP-2.5.0.0压缩包地址:
http://public-repo-1.hortonworks.com/HDP/centos7/2.x/updates/2.5.0.0/HDP-2.5.0.0-centos7-rpm.tar.gz
http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.5.0.0/HDP-2.5.0.0-centos6-rpm.tar.gz
HDP UTILS压缩包下载地址:
http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.21/repos/centos7/HDP-UTILS-1.1.0.21-centos7.tar.gz
http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.21/repos/centos6/HDP-UTILS-1.1.0.21-centos6.tar.gz
其他版本,下载地址请参考:
Ambari:
http://docs.hortonworks.com/HDPDocuments/Ambari-2.4.1.0/bk_ambari-installation/content/ambari_repositories.html
HDP和HDP UTILS:
http://docs.hortonworks.com/HDPDocuments/Ambari-2.4.1.0/bk_ambari-installation/content/hdp_stack_repositories.html
2.1.1 安装配置本地源需要的组件
yum install httpd
yum install yum-utils
yum repolist
yum install createrepo
2.1.2 安装httpd服务
1. 直接使用命令:yum install httpd;安装完成后,会生成 /var/www/html 目录。
2. 在/var/www/html目录下,分别建立ambari和hdp目录
[root@namenode1~]# mkdir /var/www/html/ambari
[root@namenode1~]# mkdir /var/www/html/hdp
[root@namenode1~]# tar -xf ambari-2.4.1.0-centos6.tar.gz -C /var/www/html/ambari/
[root@namenode1~]# tar -xf HDP-2.5.0.0-centos6-rpm.tar.gz -C /var/www/html/hdp/
3. 启动httpd服务
[root@namenode1~]# service httpd restart
4. 设置httpd服务开机自动启动
[root@namenode1 ~]# chkconfig httpd on
2.1.3 下载、配置Ambari本地源ambari.repo
1. 把下载的Ambari tar包解压后拷贝到刚才建立的/var/www/html/ambari/目录中,在浏览器中输入地址,就可以看到ambari目录结构
[root@namenode1 ~]# tar -xf ambari-2.4.1.0-centos6.tar.gz -C/var/www/html/ambari/
http://172.26.5.21/ambari/AMBARI-2.4.1.0/centos6/
域名后80为httpd服务配置的端口
2. 使用wget命令:
wget -nvhttp://public-repo-1.hortonworks.com/ambari/centos6/2.x/updates/2.4.1.0/ambari.repo -O/etc/yum.repos.d/ambari.repo
vi /etc/yum.repos.d/ambari.repo命令完成后,
修改ambari.repo文件
[Updates-ambari-2.4.1.0]
name=ambari-2.4.1.0 - Updates
baseurl=http://172.26.5.21/ambari/AMBARI-2.4.1.0/centos6/
gpgcheck=1
gpgkey=http://172.26.5.21/ambari/AMBARI-2.4.1.0/centos6/2.4.1.0-22/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1
红色字体为修改部分,把baseurl换成本地的url。
可以通过设置gpgcheck=0来禁用GPG检查,如果不禁用,我们也可以修改gpgkey成本地的库源。其中,INSERT-BASE-URL为之前设置好的本地镜像Ambari的URL地址。以我为例,我是安装在机器系统为centOS6的172.26.5.21上,所以,我的INSERT-BASE-URL为http://172.26.5.21/ambari/AMBARI-2.4.1.0/centos6,gpgkey为http://172.26.5.21/ambari/AMBARI-2.4.1.0/centos6/2.4.1.0-22/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
2.1.2 配置HDP本地源
把下载的HDP-2.5.0.0-centos6-rpm.tar.gz包拷贝到/var/www/html/hdp/目录下,用浏览器输入网址http://172.26.5.21/hdp/HDP-2.5.0/centos6/ ,查看HDP目录结构
[root@namenode1 ~]# tar -xf HDP-2.5.0.0-centos6-rpm.tar.gz -C/var/www/html/hdp
http://172.26.5.21/hdp/HDP/centos6/
这个地址,就是本地源的地址
在/etc/yum.repo.d目录中,修改HDP.repo文件
VERSION_NUMBER=2.5.0.0-1245
[HDP-2.5.0.0]
name=HDP Version - HDP-2.5.0.0
baseurl=http://172.26.5.21/hdp/HDP/centos6/
gpgcheck=1
gpgkey=http://172.26.5.21/hdp/HDP/centos6/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1
黄色字体为修改部分,把baseurl换成本地的url。
2.1.3 配置HDP-UTILS
同样,把下载的HDP-UTILS-1.1.0.20-centos6.tar.gz包拷贝到/var/www/html/hdp/ HDP-UTILS-1.1.0.21目录下
[root@namenode1 ~]#mkdir /var/www/html/hdp/HDP-UTILS-1.1.0.21
root@namenode1 ~]# tar -xf HDP-UTILS-1.1.0.21-centos6.tar.gz -C /var/www/html/hdp/HDP-UTILS-1.1.0.21
用浏览器输入网址http://172.26.5.21/hdp/HDP-UTILS-1.1.0.20/centos6/ ,查看HDP-UTILS目录结构
在/etc/yum.repo.d目录中,修改HDP.repo文件
[HDP-UTILS-1.1.0.21]
name=HDP-UTILS Version - HDP-UTILS-1.1.0.21
baseurl=http://172.26.5.21/hdp/HDP-UTILS-1.1.0.21/
gpgcheck=1
gpgkey=http://172.26.5.21/hdp/HDP-UTILS-1.1.0.21/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1
红色字体为修改部分,把baseurl换成本地的url。
2.1.4 生成本地源
使用createrepo命令,生成本地源
[root@namenode1 ~]# mkdir -p/var/www/html/hdp/HDP/centos6/
[root@namenode1 ~]# mkdir -p/var/www/html/hdp/HDP-UTILS-1.1.0.21/
[root@namenode1 ~]# mkdir -p /var/www/html/ambari/AMBARI-2.2.1.0/centos6/[root@namenode1 ~]# createrepo /var/www/html/hdp/HDP/centos6/
[root@namenode1 ~]# createrepo /var/www/html/hdp/HDP-UTILS-1.1.0.21/
2.2 关闭Selinux和THP
1.2.1 修改hostname
vi/etc/sysconfig/network
NETWORKING=yes
HOSTNAME=namenode1
NOZEROCONF=yes
把所有要添加到集群中的主机都要加入hosts中,格式如下:
[root@ namenode1 ~]# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomainlocalhost6 localhost6.localdomain6
172.26.5.21 namenode1
172.26.5.22 data01
172.26.5.23 data02
172.26.5.24 data03
for i in {21,22,23,24};do scp /etc/hostsroot@172.26.5.$i:/etc;done
2.2.2安装java软件
[root@namenode1 ~]# mkdir/usr/java
[root@namenode1 ~]# chown hadoop:hadoop /usr/java
1)解压java软件包
[root@namenode1 hadoop]$ tar xvfjdk-7u79-linux-x64.tar.gz -C /usr/java/
2)编辑环境变量
[root@namenode1 ~]# cat/etc/profile
export JAVA_HOME=/usr/java/jdk1.7.0_79
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
关闭Selinux
注意,在集群的每个节点,都要关闭Selinux。
使用sestatus -v 命令,查看Selinux状态。
如果不是disable状态,编辑/etc/sysconfig/selinux 文件
vi /etc/sysconfig/selinux
把里边的一行改为
SELINUX=disabled
保存,然后重启机器。
2.2.3 关闭THP
在集群的每个节点,都要关闭。编辑/etc/grub.conf文件,在kernel 行后面加入
transparent_hugepage=never,保存退出,重启机器。
2.2.4 配置NTP时间同步
⑴ vi /etc/ntp.conf
restrict 127.0.0.1
restrict -6 ::1
restrict 172.26.5.21 mask 255.255.255.0 nomodify notrap
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
⑵ 启动ntp服务
#/etc/init.d/ntpd start
添加到自启动
所有节点执行如下命令,让每次系统启动的时候自动启动ntp服务:
chkconfig --level 35 ntpd on
⑶客户端设置
[root@namenode1 ~]#vi /etc/ntp.conf
driftfile /var/lib/ntp/drift 文件里有
server 172.26.5.21
restrict 172.26.5.21 nomodify notrap noquery
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
Npt主服务器ip要去掉,只是针对客户的而言
[root@namenode1 ~]# for i in {32,33,34,35,36,37,38,39,40,41,42};do scp/etc/ntp.conf root@10.88.4.1$i:/etc/ntp.conf; done
启动服务
/etc/init.d/ntpd start
添加到自启动
所有节点执行如下命令,让每次系统启动的时候自动启动ntp服务:
chkconfig --level 35 ntpd on
所有客户端手动同步时间
[root@data01 ~]#ntpdate -u manager
[root@data02 ~]# crontab -e
*/5 * * * * root /usr/sbin/ntpdate 172.26.5.21; /sbin/hwclock -w
[root@masternode02 ~]# service crond restart ;chkconfig --level 35crond on
三、Ambari安装
使用命令查看案例列表:
yum clean all
yum list|grep ambari
直接使用命令yum install ambari-server安装即可,由于配置了本地源,安装过程非常快,可比网络资源节省一半以上的时间。
安装完成后,使用命令, ambari-server setup 设置Ambari,基本都可以一路回车使用默认设置。为了演示完整的安装过程,本例中做了一些特殊设置。请同学们根据环境的实际情况自行选择配置。
1.设置JDK
[root@namenode1~]# ambari-server setup
Usingpython /usr/bin/python
Setupambari-server
CheckingSELinux...
SELinuxstatus is 'disabled'
Customizeuser account for ambari-server daemon [y/n] (n)? y
Enter useraccount for ambari-server daemon (root):
Adjustingambari-server permissions and ownership...
Checkingfirewall status...
CheckingJDK...
[1] OracleJDK 1.8 + Java Cryptography Extension (JCE) Policy Files 8
[2] OracleJDK 1.7 + Java Cryptography Extension (JCE) Policy Files 7
[3] CustomJDK
==============================================================================
Enter choice(1): 3
WARNING: JDKmust be installed on all hosts and JAVA_HOME must be valid on all hosts.
WARNING: JCEPolicy files are required for configuring Kerberos security. If you plan to useKerberos,please make sure JCE Unlimited Strength Jurisdiction Policy Files arevalid on all hosts.
Path toJAVA_HOME: /usr/java/jdk1.7.0_79
ValidatingJDK on Ambari Server...done.
Completingsetup...
2.设置数据库,Ambari默认使用的是PostgreSQL,也可指定其他数据库
Configuringdatabase...
Enteradvanced database configuration [y/n] (n)? y
Configuringdatabase...
==============================================================================
Choose oneof the following options:
[1] -PostgreSQL (Embedded)
[2] - Oracle
[3] - MySQL/ MariaDB
[4] -PostgreSQL
[5] -Microsoft SQL Server (Tech Preview)
[6] - SQLAnywhere
[7] - BDB
==============================================================================
Enter choice(1): 3
Hostname(localhost): namenode1
Port (3306):
Databasename (ambari):
Username(ambari):
EnterDatabase Password (bigdata):
Re-enterpassword:
Configuringambari database...
Copying JDBCdrivers to server resources...
Configuringremote database connection properties...
WARNING:Before starting Ambari Server, you must run the following DDL against thedatabase to create the schema:/var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql
Proceed withconfiguring remote database connection properties [y/n] (y)? y
Extractingsystem views...
.....ambari-admin-2.4.1.0.22.jar
......
Adjustingambari-server permissions and ownership...
AmbariServer 'setup' completed successfully.
将Ambari数据库脚本导入到数据库
如果使用自己定义的数据库,必须在启动Ambari服务之前导入Ambari的sql脚本
用Ambari用户(上面设置的用户)登录mysql
[root@namenode1~]# mysql -u ambari -pambari -hnamenode1
CREATE USER'ambari' IDENTIFIED BY 'ambari';
grant allprivileges on *.* to 'ambari'@'namenode1' identified by 'ambari' with grantoption;
grant allprivileges on *.* to 'ambari'@'%' identified by 'ambari' with grant option;
mysql>create database ambari DEFAULT CHARSET utf8;
mysql>use ambari
mysql>source /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql
9)启动Amabri
[root@namenode1~]# ambari-server start
Usingpython /usr/bin/python
Startingambari-server
AmbariServer running with administrator privileges.
Organizingresource files at /var/lib/ambari-server/resources...
Ambaridatabase consistency check started...
No errorswere found.
Ambaridatabase consistency check finished
Server PIDat: /var/run/ambari-server/ambari-server.pid
Server outat: /var/log/ambari-server/ambari-server.out
Server logat: /var/log/ambari-server/ambari-server.log
Waiting forserver start....................
AmbariServer 'start' completed successfully.
Ambari默认使用的是8080端口,如果端口被占用,可修改配置文件/etc/ambari-server/conf/ambari.properties,在文件中增加 client.api.port=<port_number>
配置完成后,使用命令 ambari-server start 启动Ambari。
启动成功后,在浏览器输入网址http://master:8080 ,看到如下界面,就说明安装成功了。
Ambari默认用户名/密码是:admin/admin
http://172.26.5.21:8080/#/login
安装Ambariagent
wget -nv http://public-repo-1.hortonworks.com/ambari/centos6/2.x/updates/2.4.1.0/ambari.repo-O /etc/yum.repos.d/ambari.repo
root@namenode1~]# mkdir -p /var/www/html/ambari/centos6/2.x/updates/2.4.1.0
[root@namenode1~]# createrepo /var/www/html/ambari/centos6/2.x/updates/2.4.1.0
[root@data01~]# cat /etc/yum.repos.d/ambari.repo
#VERSION_NUMBER=2.4.1.0-22
[Updates-ambari-2.4.1.0]
name=ambari-2.4.1.0- Updates
baseurl=http://172.26.5.21/ambari/centos6/2.x/updates/2.4.1.0
gpgcheck=1
gpgkey=http://172.26.5.21/ambari/centos6/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1
yum cleanall
yum listupdate
yummakecache
yum repolist
四、部署大数据平台
图文并茂
步骤一,点击运行安装向导
步骤二,输入你的集群名称
步骤三,选择HDP版本
注意: HDP资源默认是从网络下载,请点击下方的Advance Repository Options,把HDP和HDP-UTILS地址替换成我们上方配置的本地源,否则容易发生超时错误。
步骤四,输入安装选项,数据集群的机器host name,ssh互信的私钥和ssh用户;
请注意:在ssh user accout的地方,为了安装成功,我使用的是root用户
由于我的机器不在域中,系统会提示不是一个完整的FQDN(完整的FQDN类似于master.example.com这种格式),不用管他,直接点OK按钮。
步骤五,选择完机器后,Ambari会自动在其他的机器上安装ambari-agent代理
可能会出现的问题:
ambari-agent注册失败,日志显示端口被占用,网上查询结果是Agent使用的8670端口
手工连接到失败的服务器上,netstat -anp|grep8670,发现果然在监听状态,然后输入命令kill -9 [进程id],再Retry便可成功
安装成功后,界面如下:
请注意:画面下方的potential problems,这里系统在坚持潜在的问题,完成后,会有显示当前问题列表,检查完成后,系统会给出问题解决方法,请把列出的警告的problems也一一解决掉,否则安装可能会不成功
步骤六,选择需要安装的服务组件,已经包括了HDFS,Yarn,Hbase,Hive,Spark等等,的确非常方便,不用在一一部署了
步骤七,分配Master服务器,可以看到能做NameNode和2nd NameNode高可用,Hbase也是
步骤八,选择Slave节点,Client随便选一个Slave安装就可以了。
root@namenode1~]# ambari-server setup --jdbc-db=mysql --jdbc-driver=/opt/mysql-connector-java-5.1.36/mysql-connector-java.jar
步骤九,配置文件,可图形化配置core-site.xml,hdfs-site.xml等文件,有时候系统出现标记,如Hive组件,系统会要求你输入元数据库的用户名,密码和地址,输入完成后,点击下一步
点击下一步后,检查配置
步骤十,系统根据配置,开始部署
等待安装完成,因为我们配置了本地源,安装非常迅速
可能会出现的问题:
Too many levels of symbolic links
安装HDFS和HBASE的时候出现/usr/hdp/current/hadoop-client/conf doesn't exist
是由于/etc/hadoop/conf和/usr/hdp/current/hadoop-client/conf目录互相链接,造成死循环,所以要改变一个的链接
需要在失败的节点运行命令:
cd /etc/hadoop
rm -rf conf
ln -s/etc/hadoop/conf.backup /etc/hadoop/conf
HBASE也会遇到同样的问题,解决方式同上
cd /etc/hbase
rm -rf conf
ln -s/etc/hbase/conf.backup /etc/hbase/conf
ZooKeeper也会遇到同样的问题,解决方式同上
cd /etc/zookeeper
rm -rf conf
ln -s/etc/zookeeper/conf.backup /etc/zookeeper/conf
步骤十一、安装完成后,系统会自动系统大数据平台
大功告成。
---------------------