Ambari 安装测试卸载以及开发 - 文章教程

Ambari 安装测试卸载以及开发

发布于 2021-03-23 字数 13620 浏览 1194 评论 0

曾经尝试从源代码构建Ambari,使用maven,耗时几个小时,但没有成功。使用官方apt源在ubuntu14下安装Ambari server的方法:

wget -O /etc/apt/sources.list.d/ambari.list http://s3.amazonaws.com/dev.hortonworks.com/ambari/ubuntu14/2.x/latest/trunk/ambaribn.list
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com B9733A7A07513CAD
apt-get update
apt-get install ambari-server -y

当在内网部署 hadoop 时,有些主机没有互联网连接。针对这种情况,ambari的官方文档提供了搭建本地apt源的方法,通过本地源安装ambari(及其他hadoop组件)。

搭建 Ambari 本地源

参考原文
关于搭建 HDP 本地源,更详细文档在这里
下列测试的目的是建立“无互联网模式HDP本地源”,环境是vagrant VM + ubuntu14。官方文档提供了搭建测试环境的vagrant配置文件及相关脚本,下载该vagrant配置文件:

$ git clone https://github.com/u39kun/ambari-vagrant.git

上述命令我在windows10的git bash窗口中执行的。然后:

$ cd ambari-vagrant/ubuntu14.4
$ ./up.sh 4    (或者按下面的)
$ vagrant up u1401 u1402 u1403 u1404       (up.sh提供了更简单的启动方式)

看一下各个VM的/etc/hosts文件,发现各个节点的hostname已经定义了。
【解释一下什么是Base URL】
在网页Ambari barball中提到了Base URL。Base URL是库的基础地址,如ubuntu的/etc/apt/sources.list文件中:

deb http://security.ubuntu.com/ubuntu yakkety-security universe

其中的http://security.ubuntu.com/ubuntu就是Base URL。如果进入linux操作系统查看,发现在base url之下是dists目录,这应是apt打包系统的约定。而yakkety-security是dists的下级目录,依次类推(空格隔开的多级目录)。

开始建立 Ambari 的本地源

计划在u1401上建立apt本地源,首先安装nginx:

$ vagrant ssh u1401
$ apt install nginx
$ cd /var/www/html

/var/www/html是nginx的index.html所在的目录。可以编辑一下这个目录下的index.html(也可能是其他文件名),然后用curl localhost测试一下。
然后下载ubuntu14的Ambari barball(1.3G),里面是Ambari apt打包文件:

$ wget http://public-repo-1.hortonworks.com/ambari/ubuntu14/2.x/updates/2.4.2.0/ambari-2.4.2.0-ubuntu14.tar.gz
$ openssl md5 ambari-2.4.2.0-ubuntu14.tar.gz   (计算Tarball的MD5码,应与上述网页上公布的一样。这一步式可选的)
$ tar -xzf ambari-2.4.2.0-ubuntu14.tar.gz
$ cd AMBARI-2.4.2.0/ubuntu14/2.4.2.0-136          (ls可以看到下级的dists目录以,Base URL是dists之前的路径)

建立Amabiri本地源描述文件:

$ echo "deb http://$(hostname)/AMBARI-2.4.2.0/ubuntu14/2.4.2.0-136 Ambari main" > ambari.list
$ curl http://$(hostname)/AMBARI-2.4.2.0/ubuntu14/2.4.2.0-136/ambari.list   (测试一下)

如果curl返回ambari.list的文件内容,说明用nginx搭建的apt本地源运行正常。其中http://$(hostname)/AMBARI-2.4.2.0/ubuntu14/2.4.2.0-136就是Base URL。

用本地源安装 ambari server

在同一台机器上:

$ echo "$(hostname)"
u1401     
$ apt-key adv --recv-keys --keyserver keyserver.ubuntu.com B9733A7A07513CAD
$ apt-get update
Get:1 http://u1401/AMBARI-2.4.2.0/ubuntu14/2.4.2.0-136 Ambari InRelease [3,190 B]
$ apt-get install ambari-server -y
$ ambari-server setup -s
$ ambari-server start
$ curl http://u1401:8080    (启动需要几分钟,用户名口令是admin/admin)

使用本地源安装ambari-server速度快多了。直接用互联网安装时300k/s,而本地源可以达10M/s。

直接在宿主机windows下用浏览器访问地址:http://u1401的IP:8080出现登录页面,用户名口令是admin/admin。

创建HDP 2.5本地源

官方下载地址:HDP 2.5 Stack Repositories 下载这个tarball(4.9G):

$ cd /var/www/html
$ mkdir hdp && cd hdp
$ wget http://public-repo-1.hortonworks.com/HDP/ubuntu14/2.x/updates/2.5.3.0/HDP-2.5.3.0-ubuntu14-deb.tar.gz
$ tar -xzf HDP-2.5.3.0-ubuntu14-deb.tar.gz
$ cd hdp/HDP/ubuntu14
$ echo "deb http://$(hostname)/hdp/HDP/ubuntu14 HDP main" > hdp.list

同样的办法安装HDP-UTILS的本地源

这个tarball小多了,只有24M:

$ cd /var/www/html/hdp
$ wget http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.21/repos/ubuntu14/HDP-UTILS-1.1.0.21-ubuntu14.tar.gz
$ tar -xzf HDP-UTILS-1.1.0.21-ubuntu14.tar.gz
$ cd hdp/HDP-UTILS-1.1.0.21/repos/ubuntu14
$ echo "deb http://$(hostname)/hdp/HDP-UTILS-1.1.0.21/repos/ubuntu14 HDP-UTILS main" > hdp-utils.list

使用Ambari本地源搭建 hadoop

计划使用u1402,u1403,u1404三个VM来尝试性部署hadoop。而u1401即是本地源的安装点,也是ambari server的安装点。

准备环境

首先,实现免密码ssh登录,免密码SSH的方法参考SSH入门。在u1401上:

$ ssh-keygen  (回车几次)
$ ssh-copy-id u1402   (输入yes并输入各VM的root密码,下同)
$ ssh-copy-id u1403
$ ssh-copy-id u1404

之前要参考SSH入门的说明在三个VM为root用户创建密码。然后在三个VM上分别安装:

$ apt install ntp -y 
$ service ntp start    (时间同步)
$ apt install openjdk-8-jdk  (也可安装oracle jdk 8)
$ cd /etc/apt/sources.list.d
$ wget http://u1401/AMBARI-2.4.2.0/ubuntu14/2.4.2.0-136/ambari.list
$ wget http://u1401/hdp/HDP/ubuntu14/hdp.list
$ wget http://u1401/hdp/HDP-UTILS-1.1.0.21/repos/ubuntu14/hdp-utils.list
$ apt-key adv --recv-keys --keyserver keyserver.ubuntu.com B9733A7A07513CAD
$ apt-get update

编辑三个节点的ambari agent配置文件/etc/ambari-agent/conf/ambari-agent.ini:

[server]
hostname=u1401

安装和启动Agent:

$ apt install ambari-agent
$ ambari-agent start

用 ambari 安装 HDP

通过宿主机的浏览器进入http://u1401:8080,admin/admin登录。
通过界面只能创建一个集群。通过REST API可以创建多个集群。IDAP提供了界面来部署多个集群。

参考:Ambari日志的位置:

/var/log/ambari-server/ambari-server.log

Ambari 的汉化

Apache Ambari在github的镜像库:https://github.com/apache/ambari。

一个Ambari的汉化库:https://github.com/yantaiv/Ambari-Web-Modify。 一个汉化的说明:链接

Ambari server 的数据库

Ambari server 默认安装了一个PostgreSQL数据库。启动postgresql进程的linux用户名是postgres,数据库名是ambari。数据库的默认用户名和密码是ambari/bigdata。
如果要远程连接这个数据库,(比如在u1402上装ranger)远程连接这个数据库需要在u1402上这样执行:

$ apt install postgresql-client
$ psql -h 192.168.14.101 -U ambari -d ambari  (提示输入密码就输入bigdata)

-U表示数据库用户,-d表示数据库名。
还要修改postgresql的配置文件,以便从远程访问postgresql。 如果是在ubuntu下:

$ echo "host all all 0.0.0.0 0.0.0.0 md5" >> /etc/postgresql/9.3/main/pg_hba.conf
$ /etc/init.d/postgresql restart            (重启postgresql)

centos7下的操作:

$ echo "host all all 0.0.0.0 0.0.0.0 md5" >> /var/lib/pgsql/data/pg_hba.conf
$ service postgresql restart

而在postgresql所在机器的本地执行:

$ sudo -u postgres psql
postgres=# alter user postgres with password 'bigdata';

可以进入postgres的交互式命令行。postgres是启动数据库进程的linux用户。上述操作将postgres用户的密码改成了bigdata。在安装ranger的时候需要postgresql的管理员账户及密码。

安装ranger时要求ambari server配置jdbc驱动:

$ wget -P /usr/share/java https://jdbc.postgresql.org/download/postgresql-42.0.0.jar
$ ambari-server setup --jdbc-db=postgres --jdbc-driver=/usr/share/java/postgresql-42.0.0.jar

Ambari Security

Apache Ambari Security

1.安装KDC Server

在u1404(非HDP集群节点)安装Install the KDC Server:

$ apt-get install krb5-kdc krb5-admin-server

第一次尝试时,提示krb5-user依赖冲突。用手机当热点执行apt-get update后,问题解决。更彻底的解决办法是利用163源替换ubuntu官方源,可参考这个
安装过程中出现提示窗口让输入Default Kerberos version 5 realm,保留默认值AMBARI.APACHE.ORG。然后出现两次让输入hostname,都输入的”u1404.ambari.apache.org”。最后提示说这个向导没有自动建立一个kerberos realm,如果想建立就执行命令”krb5_newrealm”。相关说明在/usr/share/doc/krb5-kdc/README.KDC中。

$ krb5_newrealm
master key name 'K/M@AMBARI.APACHE.ORG'
Enter KDC database master key:    (输入两次密码,密码是vagrant)

启动KDC server和KDC admin server:

$ service krb5-kdc restart                     (如果不执行krb5_newrealm就无法启动这个服务)
$ service krb5-admin-server restart            (如果不执行krb5_newrealm就无法启动这个服务)

2.创建 Kerberos Admin

通过创建admin主体来建立KDC admin:

$ kadmin.local -q "addprinc root/admin"
Enter password for principal "root/admin@AMBARI.APACHE.ORG":    (输入两次密码,密码是vagrant)
Principal "admin/admin@AMBARI.APACHE.ORG" created.

将刚创建的admin主体添加到KDC ACL中:

$ echo "*/admin@AMBARI.APACHE.ORG *" >> /etc/krb5kdc/kadm5.acl
$ service krb5-admin-server restart

3.安装 jce

(实测发现,不需要安装JCE也可以启用kerberos)。
在u1401、u1402、u1403三个节点上安装JCE:

$ apt-get install software-properties-common -y
$ add-apt-repository ppa:webupd8team/java    (如果出现提示,回车继续)
$ apt-get update
$ apt-get install oracle-java8-installer   (这个貌似不用装,因为ambari自己装了oracle jdk)
$ apt install oracle-java8-unlimited-jce-policy  (有弹窗让接受协议)
$ export JAVA_HOME=/usr/lib/jvm/java-8-oracle

在u1401上(ambari server所在节点)按这个说明下载JCE策略文件,并解压到$JAVA_HOME/jre/lib/security/目录下。
重启ambarserver。

4.在 ambari 中启动 kerberos 安装向导

由于已经在u1404上部署了KDC,所有在向导中选择“Existing MIT KDC”(已经存在的MIT KDC)。

KDC hosts中输入”u1404.ambari.apache.org”,在realm中输入”AMBARI.APACHE.ORG”。点击test KDC connection按钮,应显示连接成功。

Kadmin host中输入”u1404.ambari.apache.org”,在Admin principal中输入”root/admin@AMBARI.APACHE.ORG”,输入密码,点击next按钮。

页面切换到了“Install and Test Kerberos Client”,并开始安装kerberos client。

过了一段时间后报错,发现是版本依赖(见下文)的问题。切换为用手机热点上网(公司网更新ubuntu14会有部分包报错),然后在u1402和u1403上执行apt-get update。点击“Retry”按钮继续向导。

安装完成kerberos client后执行测试,但测试出错,说kadmin找不到。猜测是u1401节点未安装kerberos客户端导致,所以在u1401节点上执行:

$ apt install krb5-user  (如果提示包依赖错误,就用手机上网执行apt-get udpate)

安装后问题解决,继续执行向导。实测中碰到服务重启失败的情况,强行结束向导,然后手工重启有问题的hadoop服务。

查看主体清单的方法:在u1404节点(安装KDC的节点)上执行:

$ kadmin.local
kadmin.local: list_principals  
HTTP/u1402.ambari.apache.org@AMBARI.APACHE.ORG
HTTP/u1403.ambari.apache.org@AMBARI.APACHE.ORG
K/M@AMBARI.APACHE.ORG
admin/admin@AMBARI.APACHE.ORG
(略)

安装 kerberos 碰到的问题

ambari启用kerberos后所有服务要重启,其中datanode服务报告内存溢出。将datanode所在VM的内存由2048改成3048后,datanode服务重启成功。

某次安装kerberos客户端时报错:

$  apt-get install krb5-user
The following packages have unmet dependencies:
 krb5-user : Depends: libkrb5-3 (= 1.12+dfsg-2ubuntu5.2) but 1.12+dfsg-2ubuntu5.3 is to be installed
E: Unable to correct problems, you have held broken packages.

krb5-user依赖libkrb5-3(= 1.12+dfsg-2ubuntu5.2),但当前系统却安装上了libkrb5-3的(1.12+dfsg-2ubuntu5.3)版。
安装指定版本的librkb5-3:

$ apt-get install libkrb5-3=1.12+dfsg-2ubuntu5.2

librkb5-3的版本号比较长:1.12+dfsg-2ubuntu5.2。

检查安装成功的u1403,发现其安装krb5-user是5.3版。这说明apt的索引更新有问题。用手机充当热点,执行 apt-get udpate。然后查看krb5-user版本:

$ apt show krb-user
Version: 1.12+dfsg-2ubuntu5.3

再使用 apt install krb-user 安装就正常了。这说明公司的局域网访问国外有问题。

定制 Ambari 服务

Ambari 待安装的各服务的配置文件位于 /var/lib/ambari-server/resources/stacks/HDP/2.5/services 下,每个服务占一个目录。定制的 Ambari 服务也要放在这个目录下。

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

目前还没有任何评论,快来抢沙发吧!

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

2583 文章
29 评论
84935 人气
更多

推荐作者

猫性小仙女

文章 1 评论 0

qq_VO6LhT

文章 0 评论 0

猿舌电影

文章 0 评论 0

7556275422

文章 0 评论 0

YYQ_139

文章 0 评论 0