目录
1.安装配置Maven
2.下载编译ambari源码
3.配置安装ambari
4.安装ambari agent
5.使用Ambari在线建立hdp集群
6.Ambari离线安装HDP
7.ambari集群维护
研究下Ambari ,到时候看一下和cdh 到底有啥区别,记录一下安装和使用的方法。我选择的ambari 2.6.2 ,我的linux有centos 6和centos7,我担心版本高了我的系统不支持。
很有必要看一下官方文档http://ambari.apache.org/,有各个版本的安装方法。我就是参考了ambari 2.6.2的官方文档:
https://cwiki.apache.org/confluence/display/AMBARI/Installation+Guide+for+Ambari+2.6.2。
https://docs.cloudera.com/HDPDocuments/
再搭建集群时,肯定要做的就是:时间同步,关闭防火墙,免密登录,安装jdk,配置hosts,这些肯定是要做的,之前很多帖子提到了,这里省略一下。
1.安装配置Maven
最好配置maven的国内镜像速度会快很多
2.下载编译ambari源码
这个过程比较简单,但可能会有点慢
wget http://www.apache.org/dist/ambari/ambari-2.6.2/apache-ambari-2.6.2-src.tar.gz //如果下载得慢建议使用国内镜像
tar xfvz apache-ambari-2.6.2-src.tar.gz
cd apache-ambari-2.6.2-src
mvn versions:set -DnewVersion=2.6.2.0.0 //就是指定一下版本让子版本和父版本一致
pushd ambari-metrics //切换目录
mvn versions:set -DnewVersion=2.6.2.0.0
popd
如果这个过程有错,官方文档有介绍 jms, jmxri, jmxtools有关的错误。
安装rmp源
mvn -B clean install rpm:rpm -DnewVersion=2.6.2.0.0 -DbuildNumber=631319b00937a8d04667d93714241d2a0cb17275 -DskipTests -Dpython.ver="python >= 2.6"
问题1:如果出现rpmbuild: command not found错误导致编译失败,就需要先安装rpmbuild
sudo yum install rpm-build
问题2:然后我又遇到了Invalid cookie header: "Set-Cookie: has_recent_activity=1; path=/; expires=Tue, 03 Sep 2019 03:03:40 -0000". Invalid 'expires' attribute卡死不动的问题
我就装了一下http服务,因为我有看到访问本地请求
#yum -y install httpd
#service httpd restart
#chkconfig httpd on
安装完成就可以打开80端口了。
问题3:重新执行上面的mvn install...遇到新的错误:
[ERROR] Failed to execute goal com.github.eirslett:frontend-maven-plugin:1.4:install-node-and-yarn (install node and yarn) on project ambari-web: Could not extract the Yarn archive: Could not extract archive: '/root/.m2/repository/com/github/eirslett/yarn/0.23.2/yarn-0.23.2./yarn-v0.23.2.tar.gz': EOFException -> [Help 1]
#cd /root/.m2/repository/com/github/eirslett/yarn/0.23.2/yarn-0.23.2./
#tar xzvf yarn-v0.23.2.tar.gz
stdin: unexpected end of file
tar: 归档文件中异常的 EOF
tar: 归档文件中异常的 EOF
tar: Error is not recoverable: exiting now
真是这个包有问题,重新下载
#cd /root/.m2/repository/com/github/eirslett/yarn/0.23.2/yarn-0.23.2./
#wget https://github.com/yarnpkg/yarn/releases/download/v0.23.2/yarn-v0.23.2.tar.gz
问题5:更坑的问题来了
bower bootstrap#3.1.1 ECMDERR Failed to execute "git ls-remote --tags --heads https://github.com/twbs/bootstrap.git", exit code of #128
Additional error details:
error: while accessing https://github.com/twbs/bootstrap.git/info/refs
fatal: HTTP request failed
[ERROR] Command execution failed.
org.apache.commons.exec.ExecuteException: Process exited with an error: 1 (Exit value: 1)
at org.apache.commons.exec.DefaultExecutor.executeInternal(DefaultExecutor.java:404)
访问githup失败,编译包还得访问githup,感觉坑越来越深
去执行一下上面错误中的git命令
#git ls-remote --tags --heads https://github.com/twbs/bootstrap.git
error: while accessing https://github.com/twbs/bootstrap.git/info/refs
fatal: HTTP request failed
果然是访问不了
这个也好解决,先执行
git config --global url."git://github.com/twbs/bootstrap.git".insteadOf "https://github.com/twbs/bootstrap.git"
然后继续试一下上面的git命令
#git ls-remote --tags --heads https://github.com/twbs/bootstrap.git
df9e5eed4f7de948a5d19f0e48403ca409ae59d0 refs/heads/docs-dark-mode
a23da988116f3f053009797f91bb5f655977f25c refs/heads/form-check-gradients
03a14fb2e54d3af4c9dacfd55f7296e0bb0698d8 refs/heads/gh-pages
c0e1a6b40fbde736b9f0aac0e23c2fb4f07fe8a7 refs/heads/jo-auto-pos-toast
70777138f9368a93817f12f6eee672f58deba06a refs/heads/jo-docs-thanks-page
居然可以访问了,难道我得一个一个来设置,不是的,下面命令可以全部设置
git config --global url."git://github.com/".insteadOf "https://github.com/"
这样就可以了,继续重新编译
问题6:psutil/_psutil_linux.c:12:20: 错误:Python.h:没有那个文件或目录
psutils-compile:
[exec] psutil/_psutil_linux.c:12:20: 错误:Python.h:没有那个文件或目录
[exec] In file included from psutil/_psutil_linux.c:23:
[exec] psutil/_psutil_linux.h:11: 错误:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
[exec] psutil/_psutil_linux.h:12: 错误:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
[exec] psutil/_psutil_linux.h:13: 错误:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
[exec] psutil/_psutil_linux.h:14: 错误:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
[exec] psutil/_psutil_linux.h:18: 错误:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
解决方法是安装python-devel,这是Python的头文件和静态库包
sudo yum install python-devel.x86_64
终于:build成功,这个过程很长,也很慢
3.配置安装ambari
安装
和官方文档的步骤一样,我的是centos,其他系统参考上面官方文档。
cd apache-ambari-2.6.2-src/ambari-server/target/rpm/ambari-server/RPMS/x86_64
yum install ambari-server*.rpm
配置
ambari-server setup
根据提示一直按n,中间有要输入数据库配置我选的mysql,安装mysql参考linux centos yum安装mysql。
注意使用PostgreSQL以外的数据库需要先把数据库驱动放到/usr/share/java
然后在 /etc/ambari-server/conf/ambari.properties 添加配置
server.jdbc.driver.path=/usr/share/java/mysql-connector-java-5.1.25.jar
然后把/var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql导入到你指定的mysql数据库。
启动
ambari-server start
访问http://master123:8080,输入admin/admin登录
终于是安装成功了,下面再看看怎么使用
8080端口容易被占用冲突,所以我要修改一下端口
vi /etc/ambari-server/conf/ambari.properties
添加
client.api.port=9080
重启
ambari-server stop
ambari-server start
4.安装ambari agent
把/opt/hdp/apache-ambari-2.6.2-src/ambari-agent/target/rpm/ambari-agent/RPMS/x86_64/ambari-agent-2.6.2.0-0.x86_64.rpm复制到各个子节点
并运行
yum install ambari-agent*.rpm
配置hostname为你的主机名
vi /etc/ambari-agent/conf/ambari-agent.ini
hostname=msater123
启动agent
ambari-agent start
5.使用Ambari在线建立hdp集群
下面一步确认主机,各个服务的系统版本要一致,有centos6又有centos7是不会成功的。而且要事先各节点装好ambari-agent.才会注册成功!
下一步选择要安装的组件
下一步配置master就按默认的吧。
下一步配置子节点和客户端,根据自己需要选择
下一步详细参数配置,这个就需要花很多时间了,注意自己的磁盘内存和cpu.先默认后面应该可以改存储路径的吧。
一直点next,然后等待安装完成。
最后一步可能失败,因为那么多组件,不一定能下载下来,我就是安装失败,下面转到离线安装hdp
6.Ambari离线安装HDP
6.1 下载hdp安装包
wget http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.6.5.0/HDP-2.6.5.0-centos6-rpm.tar.gz
wget http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.22/repos/centos6/HDP-UTILS-1.1.0.22-centos6.tar.gz
wget http://public-repo-1.hortonworks.com/HDP-GPL/centos6/2.x/updates/2.6.5.0/HDP-GPL-2.6.5.0-centos6-gpl.tar.gz
注意下载的版本和你上面选择的版本对应:
6.2离线安装hdp
上面安装过http服务,把下载的包放入到/var/www/html。然后分别解压
tar xzvf HDP-2.6.5.0-centos6-rpm.tar.gz
tar xzvf HDP-UTILS-1.1.0.22-centos6.tar.gz
tar xzvf HDP-GPL-2.6.5.0-centos6-gpl.tar.gz
Ambari选择本地安装源,填入解压后的最里面的根目录
点击下一步,输入主机名并选择私钥文件,接下来的步骤上面有介绍
另外hive的元数据库,一般都是自己指定现成的数据库,就需要先配置driver,直接运行命令就可以:
ambari-server setup --jdbc-db=mysql --jdbc-driver=/usr/share/java/mysql-connector-java-5.1.25.jar
下面直接讲最后一步。
6.3解决集群组件安装失败
最后一步install失败
一个个来看
安装问题1:Infra Solr Instance Install
具体信息:
Execution of '/usr/bin/yum -d 0 -e 0 -y install ambari-infra-solr-client' returned 1. Error: Nothing to do
安装这个包失败,自己执行一下
yum install ambari-infra-solr-client
提示信息:
No package ambari-infra-solr-client available.
Error: Nothing to do
还记得之前是自己编译的ambari,这个包在/opt/hdp/apache-ambari-2.6.2-src/ambari-logsearch/ambari-logsearch-solr-client/target/rpm/ambari-logsearch-solr-client/RPMS/noarch/ambari-logsearch-solr-client-2.6.2.0-0.noarch.rpm就有
各个节点手动安装一下源
rpm -ivh ambari-logsearch-solr-client-2.6.2.0-0.noarch.rpm
继续retry 还是不可以,我看到官方有提这个bug,而且提问者刚好也用我这个方式试过。好吧,不选这个了。
安装问题2:Metrics Collector Install
Execution of '/usr/bin/yum -d 0 -e 0 -y install ambari-metrics-collector' returned 1. Error: Nothing to do
这个包真的就在这里编译好了apache-ambari-2.6.2-src/ambari-metrics/ambari-metrics-timelineservice/target/rpm/ambari-metrics-collector/RPMS/noarch,名字都一样,上面问题名字有点区别。
发到各节点执行一下:
yum install ambari-metrics-collector-2.6.2.0-0.noarch.rpm
安装问题3:ambari-metrics-monitor
Execution of '/usr/bin/yum -d 0 -e 0 -y install ambari-metrics-monitor' returned 1. Error: Nothing to do
居然没有找到这个包,我想重新编译一下再看,不过这个真的很坑,文档太简单,问题又多。
我觉得编译的包里面有这些包,只是名字不同而已,这是兼容性导致的,我懒得管,先回去 去掉ambari的组件,以后再解决。
后来我研究了一下这些包没有的问题,我按照下面的方法重新编译了一下就可以了
1.cd 到源码ambari根目录下,执行:mvn -B clean install package rpm:rpm -DskipTests -Dpython.ver="python >= 2.6" -Drat.skip=true -Preplaceurl
2.cd 到源码ambari-metrics/目录下,执行:mvn package -Dbuild-rpm -DskipTests(有时编译不了,执行完mvn install -DskipTests再执行此命令)然后就找到了ambari-metrics-monitor安装包
ambari-metrics/ambari-metrics-assembly/target/rpm/ambari-metrics-monitor/RPMS/x86_64/ambari-metrics-monitor-2.6.2.0-0.x86_64.rpm
最后:我把所有需要安装的包拷贝在一起 以方便在其他机器上安装。
其他的包没有都参考此方式,ambari-logsearch也要执行此操作。
参考:https://blog.csdn.net/zhouyuanlinli/article/details/78051485
最后安装成功:
7.ambari集群维护
一般没启动成的在界面上点击一下重启就可以。
启动问题1:我的hive没有启动成功
看一下日志:
File "/usr/lib/ambari-agent/lib/resource_management/core/logger.py", line 105, in filter_text
text = text.replace(unprotected_string, protected_string)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 325: ordinal not in range(128)
在这个logger文件加入下面代码就可以了:
import sys
reload(sys)
sys.setdefaultencoding('utf8')
注意在你指定安装hive metastore的那台服务器去修该。
最后全部重启一下,全部成功了