-
Notifications
You must be signed in to change notification settings - Fork 440
Ambari Installation for Distributed EasyML Cluster
Ambari 跟 Hadoop 等开源软件一样,也是 Apache Software Foundation 中的一个项目,并且是顶级项目。目前最新的发布版本是 2.6.0。就 Ambari 的作用来说,就是创建、管理、监视 Hadoop 的集群,但是这里的 Hadoop 是广义,指的是 Hadoop 整个生态圈(例如 Hive,Hbase,Sqoop,Zookeeper 等), 而并不仅是特指 Hadoop。用一句话来说,Ambari 就是为了让 Hadoop 以及相关的大数据软件更容易使用的一个工具。 Ambari 现在所支持的平台组件也越来越多,例如流行的 Spark,Storm 等计算框架,以及资源调度平台 YARN 等,我们都能轻松地通过 Ambari 来进行部署。 Ambari 自身也是一个分布式架构的软件,主要由两部分组成:Ambari Server 和 Ambari Agent。简单来说,用户通过 Ambari Server 通知 Ambari Agent 安装对应的软件;Agent 会定时地发送各个机器每个软件模块的状态给 Ambari Server,最终这些状态信息会呈现在 Ambari 的 GUI,方便用户了解到集群的各种状态,并进行相应的维护。
HDP是hortonworks的软件栈,里面包含了hadoop生态系统的所有软件项目,比如HBase,Zookeeper,Hive,Pig等等。
HDP-UTILS是工具类库。
操作系统: CentOS7 64位
JDK:1.8.0_40 64位
Ambari:2.4.0
HDP:2.5.0
HDP-UTILS:1.1.0.21
# vim /etc/hostname
将主机名修改为:master.easyml
# vim /etc/sysconfig/network
添加:
NETWORKING=yes
NETWORKING_IPV6=yes
HOSTNAME=master.easyml
GATEWAY= 当前主机网关
# vim /etc/hosts
添加所有主机解析:
master机器ip地址 master.easyml master
slave机器ip地址 slave01.easyml slave01
slave机器ip地址 slave02.easyml slave02
...
# rpm -qa|grep net-tools
根据机器具体情况进行网络配置,使主机可以直接访问网络。
# systemctl stop firewalld.service
# systemctl disable firewalld.service
# firewall-cmd --state
# vim /etc/selinux/config
修改:
SELINUX=disabled
重启机器,检查是否关闭
# sestatus
# vim /etc/rc.local
添加:
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
exit 0
# echo never > /sys/kernel/mm/transparent_hugepage/enabled
检查THP是否被禁用:
# cat /sys/kernel/mm/transparent_hugepage/enabled
# ssh-keygen -t rsa -P ""
# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# chmod 600 ~/.ssh/authorized_keys
# chmod 700 ~/.ssh
# scp ~/.ssh/id_rsa.pub root@slave01~/
# scp ~/.ssh/id_rsa.pub root@slave02~/
...
# cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
# rm -rf ~/id_rsa.pub
# vim /etc/ssh/sshd_config
去掉注释:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
重启服务
# /bin/systemctl restart sshd.service
- 选择一台机器作为ntp服务器,以master机器为例
# /bin/systemctl start ntpd.service
# systemctl enable ntpd.service
# /bin/systemctl stop ntpd.service
# /bin/systemctl start ntpdate.service
# vim /etc/ntp.conf
添加:
server 127.127.1.0
fudge 127.127.1.0 stratum 8
# vim /etc/ntp.conf
添加:
server master机器ip
# /bin/systemctl restart ntpd.service
# watch ntpq -p
注意:第6列reach达到17时,表示ntpd已完成自身的时间同步
# ntpdate master
# crontab -e
添加:
*/15 * * * * ntpdate master
- 选择一台机器作为ntp服务器,以master机器为例
# which httpd
# sudo yum install httpd
# systemctl start httpd.service
目录说明:
ambari目录:包含ambari-server,ambari-agent,ambari-log4j等rpm包
HDP目录:包含hadoop的生态圈的组件,比如hdfs,hive,hbase,mahout等
HDP-UTILS目录:包含HDP平台所包含的工具组件等,比如nagios,ganglia,puppet等
# cd /var/www/html/AMBARI-2.4.1.0/
# sh setup_repo.sh
# cp ./ambari.repo /etc/yum.repos.d/
# cd /var/www/html/HDP/centos7
# cp ./hdp.repo /etc/yum.repos.d/
# scp /etc/yum.repos.d/*.repo root@slave01:/etc/yum.repos.d/
# scp /etc/yum.repos.d/*.repo root@slave02:/etc/yum.repos.d/
...
Mysql相关包:
mysql-community-client-5.7.20-1.el7.x86_64.rpm
mysql-community-devel-5.7.20-1.el7.x86_64.rpm
mysql-community-server-5.7.20-1.el7.x86_64.rpm
mysql-connector-java-5.1.38-bin.jar
将connector包放入目录:/usr/share/java
# rpm -qa|grep -i mysql
如果没有结果,可以进行下一步;否则请彻底删除MySQL。
# rpm -qa|grep -i mariadb
如果没有结果,可以进行下一步;否则请彻底删除mariaDB。
# rpm -ivh mysql-community-server-5.7.20-1.el7.x86_64.rpm --force --nodeps
# rpm -ivh mysql-community-client-5.7.20-1.el7.x86_64.rpm --force –nodeps
# rpm -ivh mysql-community-devel-5.7.20-1.el7.x86_64.rpm --force --nodeps
检验:
# find /usr/bin -name mysqladmin
# find /usr/bin -name mysqldump
若出现信息如图,则表示安装成功
# /bin/systemctl start mysqld.service
# vim /etc/my.cnf
添加:
skip-grant-tables
validate-password=OFF
# mysql_secure_installation
注意:设置完后需要将my.cnf复原并重启MySQL。
# mysql –uroot –p
CREATE USER 'ambari'@'localhost' IDENTIFIED BY 'ambari';
GRANT ALL PRIVILEGES ON *.* TO 'ambari'@'localhost';
CREATE USER 'ambari'@'%' IDENTIFIED BY 'ambari';
GRANT ALL PRIVILEGES ON *.* TO 'ambari'@'%';
CREATE USER 'ambari'@'master.easyml' IDENTIFIED BY 'ambari';
GRANT ALL PRIVILEGES ON *.* TO 'ambari'@'master.easyml';
# yum clean all
# yum makecache
# yum search ambari-agent
如果可以看到Ambari 的对应版本的安装包列表,说明公共库已配置成功。
# yum erase ambari-server
# yum install ambari-server
# ambari-server setup
注意:
- 指定Ambari Server的运行用户为root
- 选择Custom JDK,填写已安装JDK路径
- 进入高级数据库配置,选择PostgreSQL
# ambari-server setup --jdbc-db=mysql --jdbc-driver=/usr/share/java/mysql-connector-java-5.1.38-bin.jar
# ambari-server start
# ambari-server status
若出现图中信息则表示启动成功,否则查看日志/var/log/ambari-server/ambari-server.log查找是否有错误。
在浏览器输入http://localhost:8080即可访问Ambari GUI,登录账号密码为admin/admin.
# ambari-agent stop
# ambari-server stop
# ambari-server restart
登录 Ambari 之后,点击按钮“Launch Install Wizard”,就可以开始创建属于自己的大数据平台。
在文本框中输入集群的名字
指定HDP版本和HDP的yum仓库位置,这里我们选择HDP2.5. 选中“Use Local Repository”,使用本地源安装。在仓库baseurl中指定本地的HDP和HDP UTILS仓库的BaseURL
指定 Agent 机器, 这些机器会被安装 Hadoop 等软件包。
在Target Hosts添加机器:
master机器ip地址 master.easyml master
slave01机器ip地址 slave01.easyml slave01
slave02机器ip地址 slave02.easyml slave02
...
选择"Provide your SSH ...",点击“Browse...”,选择 Ambari Server 机器的私钥,即/~/.ssh/id_rsa文件。
由于.ssh是隐藏文件夹,需要在/~目录下右击,选择 "show Hidden Files" 方可显示。
Ambari Server 会自动安装 Ambari Agent 到刚才指定的机器列表。过程中可能会出错或警告,需要根据提示解决。
安装完成后,Agent 会向 Ambari Server 注册。成功注册后,就可以继续下一步。
我们需要选择要安装的软件名称。本文环境只是选择了 HDFS,YARN + MapReduce2,Zoopkeeper,Ambari Metrics,oozie 。选的越多,就会需要越多的机器内存。选择之后就可以继续下一步了。
注意:
- Metrics与其它组件不要装在一台机器上,因为Metrics内置了HBase和Zookeeper,容易产生问题。
- 某些 Service 是有依赖关系的。如果您选了一个需要依赖其他 Service 的一个 Service,Ambari 会提醒安装对应依赖的 Service。
分别是选择安装软件所指定的 Master 机器和 Slave 机器,以及 Client 机器。
注意:
- Assign Masters中SNameNode必须跟NameNode在同一主机,否则Secondnamenode不能运行!!
- DataNode和NodeManager一定要选(2.0以下没有NodeManager选项,但有TaskTraker,将它选上)。
绝大部分配置已经有默认值,不需要修改。要更改的有:
- HDFS在custom core-site中添加属性:hadoop.proxyuser.oozie.groups和hadoop.proxyuser.oozie.hosts,值都设置为*
- 在hdfs-site中将dfs.permission.enabled设置为 false
- Oozie在advanced oozie-site中的oozie.services(根据版本可能会没有这一项,则不用设置)中去掉org.apache.oozie.service.PurgeService这一项,并将oozie.service.AuthorizationService.security.enabled设置为false。
Ambari 会总结一个安装列表,供用户审阅。这里没问题,就直接下一步。
Ambari 会开始安装选择的 Service 到 Ambari Agent 的机器。这里可能需要等好一会。安装完成之后,Ambari 就会启动这些 Service。安装中会可能会出现一些组件安装不成功的情况,需要根据报错信息进行修正,目前已经遇到的问题及解决方案有:
- HDP组件安装不成功,提示某些包在本地Yum源找不到,分析发现是因为安装过程重新生成了HDP.repo和HDP-UTILS.repo跟我们之前制作的hdp.repo不是完全相同的,采用的解决方式是将生成的HDP.repo和HDP-UTILS.repo文件移除,手动执行:
# yum install hdp
.有其他组件安装不成功也可采取类似的手动安装方式。
安装完成后,启动刚才安装的这些组件的服务,看看是否正常,这个过程中遇到的问题与解决方案有:
- HDFS namenode启动不成功,报错是connection refused spark1:8020,解决方法是手动进行namenode格式化:
# hdfs namenode –format
,然后将配置文件中指定的namenode目录(这里是/hadoop/hdfs)的所有者和组改成hdfs和hadoop:# chown –R 744 /hadoop/hdfs
。最后再重试安装HDFS。
- oozie job status PREP: 提示resource manager 不正常,看日志是因为有台机器的zookeeper没正常起来,查看zookeeper日志是找不到jar包,将hdp中zookeeper目录拷贝到/usr/hdp/zookeeper后解决。
安装完成之后,就可以查看 Ambari 的 Dashboard 了。例如下图:Amabri的Dashboard页面:
# sudo -u hdfs hadoop fs -mkdir /hdfstest
# sudo -u hdfs hadoop fs -chown -R root:hdfs /hdfstest
# hadoop fs -copyFromLocal
# hadoop fs -copyToLocal
hadoop有一个自带的wordcount程序可用于验证。文件地址为/usr/hdp/2.5.0.0-1245/hadoop-mapreduce/,文件名为hadoop-mapreduce-examples-2.7.3.2.5.0.0-1245.jar
# hadoop jar /usr/hdp/2.5.0.0-1245/hadoop-mapreduce/hadoop-mapreduce-examples-2.7.3.2.5.0.0-1245.jar wordcount /hdfstest/file1.txt /hdfstest/output
# sudo -u hdfs hadoop fs -mkdir /EML
# sudo -u hdfs hadoop fs -mkdir /EML/oozie
# sudo -u hdfs hadoop fs -mkdir /EML/Data
# sudo -u hdfs hadoop fs -mkdir /EML/Modules
# sudo -u hdfs hadoop fs -chown -R root:hdfs /EML
# sudo -u hdfs hadoop fs -chmod -R 777 /EML
Spark的安装比较简单,推荐使用的版本是1.6.1,主要就是解压安装包,根据当前环境,配置环境变量SPARK_HOME,配置conf目录下的spark-env,spark-defaults.conf,slave,core-site。配置好后将conf目录拷贝到集群中其他机器的相应位置。 注意:需要配置history server
执行mysql文件夹下的main.sql文件
-
安装tomcat,过程比较简单,就是解压一下tar包,然后在conf/server.xml中更改默认端口8080到18080,原因是Ambari Web服务占用了8080。启动服务:bin/startup.sh.
-
在对EML工程进行
compile
与gwt:compile
后,通过Export->Web->WAR file打成war包,并放到tomcat根目录下的webapps目录下。接着查看EML首页
下载对应版本的EML.zip,将其中EML\Environment\cluster下的modules文件夹解压并上传至master机器
在master机器上执行modules文件夹下upload-hdfs.sh文件
-
Installation And Introduction
-
Sample Description
-
Tips For Developers
-
Problem Summary