Apache Ambari 编译安装与使用方法

hadoop | 2020-03-06 16:25:47

目录

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

参考:linux安装maven及配置环境变量

参考: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登录

ambari安装成功主页

终于是安装成功了,下面再看看怎么使用

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集群

点击主页创建向导
输入集群名称
如果没有安装agent就选择下载上传私钥文件,我前面都安装好了(我想试试自动怎么安装的,我就选了私钥文件)

 

下面一步确认主机,各个服务的系统版本要一致,有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的那台服务器去修该。

 

最后全部重启一下,全部成功了

 

登录后即可回复 登录 | 注册
    
  • admin
    admin

    遇到简书上的帖子: https://www.jianshu.com/p/addca5fca73c ,居然和我编译的版本是一样的,给我很大帮助

关注编程学问公众号