安装Ambari集群采坑记录
安装环境
两个干净的Ubuntu16系统分别作为主机和从节点,系统间网络连通,内存最好大于4G;
ambari-2.5.1.0-ubuntu16.tar.gz当然也可以选择最新的
HDP-2.6.3.0-ubuntu16-deb.tar.gz (集成hadoop生态圈的多个组件,特别大)
HDP-UTILS-1.1.0.21-ubuntu16.tar.gz
JDK-1.8
MysqL(当然也可以选择其他数据库,用来存储ambari,hive等相关源数据)
- 集群基础配置
1.我这里把主机命名为note1,从机note2。配置主从机本地域名 /etc/hosts下添加ip和域名。
2.配置主机ssh免密登录note2。ssh相关配置
3.安装ntp :apt-get install -y ntp
4.禁用Transparent Huge Page(禁用大内存页面可以提升MR效率)echo never > /sys/kernel/mm/transparent_hugepage/enabled
(以上从机note2已经配置就绪,可在note1中测试下能否登录)
- 服务器配置
1.将提前下载好的ambari,HDP,HDP-Util统一解压后放到一个文件夹下。我这里选择/opt。另外再将jdk-1.8.tar.gz的包 (1.8的都行) 添加到文件夹中,在后续使用。
2.在/opt目录下执行python -m SimpleHTTPServer
,端口默认8000。然后我们就可以通过http的形式访问改文件夹了。所以我这边通过浏览器输入http://note1:8000/访问到主机的/opt目录。
3.添加一个ambari源,在/etc/apt/sources.list.d/
下添加一个文件ambari.list。填入一下内容:deb http://${你主机host,我这里为note1}:8000/ambari/ubuntu16/ Ambari main
地址其实就ambari-server的解压后的子路径,用于后续安装使用。
4.配置获取公钥:apt-key adv --recv-keys --keyserver keyserver.ubuntu.com B9733A7A07513CAD
(其中keyserver.ubuntu.com表示可下载公钥的服务器,B9733A7A07513CAD为签名)
5.执行apt-get update
和apt-get install -y ambari-server
安装服务。
6.修改配置,安装完成后默认会生成一个配置文件/etc/ambari-server/conf/ambari.properties
。修改jdk1.8.url,目标就是第一步我们放入opt下面的文件。所以我这里为http://note1:8000/jdk-1.8.tar.gz
了。
7.修改完后我们就可以初始化ambari了,执行ambari-server setup
。这里我们遇到两个警告。
一是:WARNING: Before starting Ambari Server,you must copy the MysqL JDBC driver JAR file to /usr/share/java and set property "server.jdbc.driver.path=[path/to/custom_jdbc_driver]" in ambari.properties.
,我们按照提示将MysqL-connector-java.jar (不管什么版本,名称只能是这个)放入/usr/share/java
,并在ambari.properties中添加server.jdbc.driver.path=/usr/share/java/MysqL-connector-java.jar
。
二是:让我们运行/var/lib/ambari-server/resources/Ambari-DDL-MysqL-CREATE.sql
这个脚本,可是我执行后却又一堆不成功(不晓得是不是这个版本的问题)。于是需要手动修改一下。我们在# USE @schema;
下开始加入自己的逻辑CREATE DATABASE ambari;
其中hive的部分是为后续存储其源数据准备。修改完另存为,然后再执行脚本。
CREATE DATABASE hive;
GRANT ALL PRIVILEGES ON ambari.* TO 'ambari'@'%'
IDENTIFIED BY 'ambari';
GRANT ALL PRIVILEGES ON hive.* TO 'hive'@'%'
IDENTIFIED BY 'hive';
FLUSH PRIVILEGES;
use ambari;
9.执行ambari-server start
启动过程也多次出现问题。比如Caused by: java.net.ConnectException: Connection refused (Connection refused)
连接数据库失败,这时候检测数据库是否能正常连接。我也是发现新装的MysqL要修改MysqLd.cnf才能链接成功的。以上是我遇到的部分问题,bug各有不同,就要通过日志来进行对应的修改了。下面让我们下配置完成后的正常启动吧。
- 配置hdp集群
ambari启动的默认端口为8080,我们打开服务器页面。账号密码:admin
进去后第一步:我们选择:Launch Install Wizard 。创建一个自己的集群。
第二部:名字任意。
第三步:Select Stack。这里我们选择 HDP2.6 -》Use Local Repository -》Ubuntu16。分别填入自己的url。
http://${主机}:8000/HDP/ubuntu16/2.6.3.0-235/
http://${主机}:8000/HDP-UTILS-1.1.0.21-ubuntu16/
第四步:Target Hosts填入我们的主机和从机hostname,SSH Private Key填入你主机用户下私钥:~/.ssh/id_rsa。SSH User Account 填入你使用ssh的用户,建议都是root。
第五步:确认ssh是不是连得上你所有机器。连不上再重新配置再刷新。
第六步:安装你需要的组件,有些必须的你去掉了也是让你选上的。
第七步:选择主从机安装的组件(hive Metastore最好放到有安装MysqL的服务器)
第八步:制定服务。这里需要我们测试下hive的连接。我这里是报错找不到JDBC。它提示在ambari-server setup加入启动参数。我嫌麻烦继续往下走了。
后续hive的安装确实出问题了
SLF4J: Found binding in [jar:file:/usr/hdp/2.6.3.0-235/hive2/lib/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/hdp/2.6.3.0-235/hadoop/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Metastore connection URL: jdbc:MysqL://note1/hive
Metastore Connection Driver : com.MysqL.jdbc.Driver
Metastore connection User: hive
org.apache.hadoop.hive.Metastore.HiveMetaException: Failed to load driver
Underlying cause: java.lang.ClassNotFoundException : com.MysqL.jdbc.Driver
org.apache.hadoop.hive.Metastore.HiveMetaException: Failed to load driver
于是我手动将MysqL-connector-java.jar
加入到 /usr/hdp/2.6.3.0-235/hive2/lib/ 下。
安装时问题:
error processing archive /var/lib/ambari-agent/cache/stacks/HDP/2.1/services/SMARTSENSE/package
/files/deb/*.deb (--install):
这种就是上面 服务器配置 中提到的ambari源文件设置问题,配置好后执行下apt-get update
。然后再次安装。
有问题就看日志。修改完然后Start All 让它重新启动全部应用就行了。
成功后就可以好好玩耍了!