博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ambari安装和汉化(转)
阅读量:5290 次
发布时间:2019-06-14

本文共 8593 字,大约阅读时间需要 28 分钟。

转自:https://github.com/wbwangk/wbwangk.github.io/wiki/Ambari%E6%B5%8B%E8%AF%95

相关文档:
曾经尝试从构建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.listapt-key adv --recv-keys --keyserver keyserver.ubuntu.com B9733A7A07513CADapt-get updateapt-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】
在网页中提到了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 updateGet: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本地源

官方下载地址: 下载这个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的方法参考。在u1401上:

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

之前要参考的说明在三个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

通过宿主机的浏览器进入

通过界面只能创建一个集群。通过REST API可以创建多个集群。IDAP提供了界面来部署多个集群。

参考:Ambari日志的位置:

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

Ambari安装的清理

Ambari的汉化

Apache Ambari在github的镜像库:

一个Ambari的汉化库: 一个汉化的说明:。

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 psqlpostgres=# 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

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_newrealmmaster 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.localkadmin.local: list_principals  HTTP/u1402.ambari.apache.org@AMBARI.APACHE.ORGHTTP/u1403.ambari.apache.org@AMBARI.APACHE.ORGK/M@AMBARI.APACHE.ORGadmin/admin@AMBARI.APACHE.ORG(略)

安装kerberos碰到的问题

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

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

$  apt-get install krb5-userThe following packages have unmet dependencies: krb5-user : Depends: libkrb5-3 (= 1.12+dfsg-2ubuntu5.2) but 1.12+dfsg-2ubuntu5.3 is to be installedE: 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-userVersion: 1.12+dfsg-2ubuntu5.3

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

定制ambari服务

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

转载于:https://www.cnblogs.com/loveBolin/p/9724919.html

你可能感兴趣的文章
20145308 《网络对抗》 注入shellcode+Return-to-libc攻击 学习总结
查看>>
将多张图片和文字合成一张图片
查看>>
自己动手写ORM(01):解析表达式树生成Sql碎片
查看>>
如何使用USBWebserver在本机快速建立网站测试环境
查看>>
百度Ueditor编辑器的Html模式自动替换样式的解决方法
查看>>
变量提升
查看>>
线性表可用顺序表或链表存储的优缺点
查看>>
在现有的mysql主从基础上,搭建mycat实现数据的读写分离
查看>>
[Flex] flex手机项目如何限制横竖屏?只允许横屏?
查看>>
tensorflow的graph和session
查看>>
6-1 并行程序模拟 uva210
查看>>
JavaScript动画打开半透明提示层
查看>>
Mybatis生成resulteMap时的注意事项
查看>>
jquery-jqzoom 插件 用例
查看>>
1007. Maximum Subsequence Sum (25)
查看>>
《算法》C++代码 快速排序
查看>>
iframe的父子层跨域 用了百度的postMessage()方法
查看>>
Js apply方法与call方法详解 附ES6新写法
查看>>
linux php全能环境一键安装,小白福利!
查看>>
图片生成缩略图
查看>>