赞
踩
当集群安装好后,即使你不常用,每个礼拜最少启动一次,长时间不启动后它启动自检过不去会报废,很麻烦的。
正式安装前先说一句题外话,一定要分清楚ambari和hdp是什么关系?hdp全称Hortonworks Data Platform,是基于apche hadoop生态圈原始版本之上开发出的发行版,是Hortonworks公司推出的一个免费开源的大数据集群解决方案,ambari是hdp的安装工具以及管理界面。
应当要分清的是,我们使用的ambari,是Hortonworks将apche ambari二次封装进hdp集群以后的一个产物,和cdh不一样,cdh不是开源免费的,cdh是一个定制化比较高的集群解决方案,所以有着配套的管理页面和安装工具。可以理解为hdp是低定制保留了大部分原生特色的集群解决方案,而cdh恰恰相反,甚至在使用组件时都需要使用特定的cdh版本。
第一步:搭建环境准备
HDP安装包,通过网盘获取,这里注意网盘中没有Mysql包,自己准备就行,或者去我的CDH共享中获取
链接:https://pan.baidu.com/s/1XmSqP08IvbA2BTUniMw8ZQ
提取码:jaco
系统使用CentOS 7 64位
服务器节点三台、修改静态IP、主机名:
192.168.88.166 node1
192.168.88.167 node2
192.168.88.168 node3
配置:单台8核10G
第二步:关闭防火墙与selinux
关闭防火墙与selinux
vi /etc/sysconfig/selinux
SELINUX=disabled
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl status firewalld.service
第三步:ssh互信与同步时间
节点ssh互信,见博客批量方式SSH互信
同步时间,见博客Linux同步时间方式
第四步:所有节点关闭透明大页与swap
a) 执行sysctl vm.swappiness=10,改变运行时的参数
打开/etc/sysctl.conf文件,添加vm.swappiness=10条目,然后sysctl -p生效修改
b) 执行下面两句话,改变运行时参数
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
并将这两句话添加到/etc/rc.local文件中,以便重启后生效
第五步:安装JAVA-JDK
a) 将大家自己准备好的JDK的包,上传到各节点并解压缩到/usr/java/目录下,注意必须是/usr/java这个目录
b) 配置java环境变量,在/etc/profile中添加如下内容,注意使用自己的版本
export JAVA_HOME=/usr/java/jdk1.8.0_333
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
c) source /etc/profile
d) 将jdk推送给其它节点
scp -r jdk1.8.0_162/ node2:/usr/java/jdk1.8.0_333
scp -r jdk1.8.0_162/ node3:/usr/java/jdk1.8.0_333
e) 在各节点执行source /etc/profile,并通过java -version测试java
第六步:在node1上搭建本地yum源
如果看过我CDH安装手册的网友,不要直接就去搭建Python的服务,HDP我们使用httpd服务,因为Python的http服务性能不够,HDP的包太多了,同时也给看过我CDH安装手册的朋友展示一下http做yum源怎么配置
首先安装httpd服务,并启动它
yum -y install httpd
systemctl start httpd
systemctl enable httpd.service
systemctl stop httpd
安装后访问http://IP
出现服务测试页就好
随后进入 /etc/yum.repos.d/ 目录下,并和CDH一样上传系统镜像包,并挂载到某一目录下,这里任然挂载到/mnt
,然后使用cp命令把镜像包里的内容移动到http服务目录去,这样就不用其他节点也挂载本地镜像了,并且将Mysql也上传到特定目录下,但和CDH不一样的是不需要屏蔽系统原有的yum源,这一点后面解释。
mount 系统iso文件 /mnt
mkdir /var/www/html/iso
cp -r /mnt/* /var/www/html/iso
mysql上传到/var/www/html/mysql下
上传mysql后,你需要上传createrepo-0.9.9-28.el7.noarch.rpm
,并运行yum -y localinstall 包路径
安装此包,以及运行在/var/www/html目录下运行createrepo -d /var/www/html/mysql
创建资源文件,不然yum检查不到yum源的。
随后创建/etc/yum.repos.d/base.repo文件,增加如下内容源到repo文件中
[ISO]
name=ISO
baseurl=http://node1/iso
gpgcheck=0
enabled=1
[Mysql-5.7.16]
name=Mysql-5.7.16
baseurl=http://node1/mysql
gpgcheck=0
enabled=1
不过要着重说明一点,像我一样把iso文件里面的东西放在一个网络资源上,而不是本地路径,那么就不需要用安装的reaterepo工具去生成资源索引文件,人家iso里面本身就有,你只需要从挂载的目录里面把所有的文件拷贝到你用的网络资源服务目录里面就行,不要和个愣头青一样,上来生成一个资源索引导致不能用了,来私信我怎么搞,喷我发的东西不对!!!!!!
将HDP用到的tar包解压到/var/www/html/
路径下
tar -zxvf ambari-2.7.5.0-centos7.tar.gz -C /var/www/html/
tar -zxvf HDP-3.1.5.0-centos7-rpm.tar.gz -C /var/www/html/
tar -zxvf HDP-GPL-3.1.5.0-centos7-gpl.tar.gz -C /var/www/html/
tar -zxvf HDP-UTILS-1.1.0.22-centos7.tar.gz -C /var/www/html/
创建/etc/yum.repos.d/ambari.repo文件,增加如下内容源到repo文件中
[Ambari-2.7.5.0]
name=Ambari-2.7.5.0
baseurl=http://node1/ambari/centos7/2.7.5.0-72/
gpgcheck=0
enabled=1
priority=1
创建/etc/yum.repos.d/HDP.repo,增加如下内容源到repo文件中
[HDP-3.1.5.0] name=HDP Version - HDP-3.1.5.0 baseurl=http://node1/HDP/centos7/3.1.5.0-152/ gpgcheck=0 enabled=1 priority=1 [HDP-UTILS-1.1.0.22] name=HDP-UTILS Version - HDP-UTILS-1.1.0.22 baseurl=http://node1/HDP-UTILS/centos7/1.1.0.22/ gpgcheck=0 enabled=1 priority=1 [HDP-GPL-3.1.5.0] name=HDP-GPL Version - HDP-GPL-3.1.5.0 baseurl=http://node1/HDP-GPL/centos7/3.1.5.0-152 gpgcheck=0 enabled=1 priority=1
最后更新yum源
yum clean all
yum repolist
这里有个坑点,HDP+Ambari安装时,不需要把系统原来的repo文件屏蔽,它和CDH不一样,HDP的各个服务反而需要系统原本的yum源去更新依赖,任然挂载ISO文件我理解是为了提高安装效率
这里要对httpd服务的站点主目录做一个解释,防止有脑洞比较大的朋友想不清楚,httpd站点目录默认是/var/www/http
,它可以改,但是需要其他的插件,修改的性价比不高,所以直接用默认路径就行
第七步:node1节点安装Mysql
mysql安装时,注意有一个坑点,mysql服务最好与Ambari主服务安装在同一节点,并且在后期运行 setup命令 配置ambari的数据库时连接路径中的IP直接使用localhost,不然后期启动会如下错误:REASON: Server not yet listening on http port 8080 after 90 seconds
这个问题网上也没有明确的说法,只能说厂商服务确实是个好东西
a) 检查并卸载cm节点原有的mysql相关文件
rpm -qa | grep -i mysql
rpm -ev --nodeps 上面命令的执行结果列表
find / -name mysql,手工删除查找结果。查找结果举例:/var/lib/mysql、/usr/lib/mysql、/usr/lib64/mysql、/usr/include/mysql、/etc/my.cnf
b)使用yum从本地源中安装Mysql,正常情况下需要把所有的mysql包都安装,不过这里演示作用,就没有安装其他的,大家安装的时候要全安
yum -y install mysql-community-server mysql-community-client
c) 根据实际需要考虑是否修改/etc/my.cnf配置文件,一般不用特意更改
d) 设置MySQL开机启动并启动MySQL
systemctl enable mysqld.service
systemctl start mysqld.service
systemctl status mysqld.service
e) 执行grep password /var/log/mysqld.log获得初始密码,例如下图中末尾的那一串密码
f) 执行mysql_secure_installation命令,对MySQL做基础配置
Securing the MySQL server deployment. Enter password for user root: 输入初始密码 The existing password for the user account root has expired. Please set a new password. New password: 输入新密码,例如Root123! Re-enter new password: Root123! The 'validate_password' plugin is installed on the server. The subsequent steps will run with the existing configuration of the plugin. Using existing password for root. Estimated strength of the password: 100 Change the password for root ? ((Press y|Y for Yes, any other key for No) : n Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? (Press y|Y for Yes, any other key for No) : y Success. Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y Success. By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y - Dropping test database... Success. - Removing privileges on test database... Success. Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y Success. All done!
g) 进入mysql,使用命令show variables like “%char%”; 检查字符集是否为utf8,如果不是改过来
h) JDBC链接
所有节点,创建/usr/share/java目录,将mysql-connector-java-5.1.47.jar文件上传至该目录,并重命名为mysql-connector-java.jar
i)创建用户,这里先准备两个,其他的大家用到了套用语句创建就可。
准备数据库用户的时候,有一个坑点密码使用字母、数字和下划线组合,不要有其他字符,不然Ambari不允许通过校验
CREATE DATABASE ambari DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON ambari.* TO 'ambari'@'%' IDENTIFIED BY 'Wangyang_123';
CREATE DATABASE hive DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON hive.* TO 'hive'@'%' IDENTIFIED BY 'Wangyang_123';
flush privileges;
第八步:安装Ambari
安装服务
yum -y install ambari-server
拷贝mysql驱动到特定目录下
cp /usr/share/java/mysql-connector-java.jar /var/lib/ambari-server/resources/
修改配置文件,末尾追加数据库驱动配置
vi /etc/ambari-server/conf/ambari.properties
server.jdbc.driver.path=/usr/share/java/mysql-connector-java.jar
运行命令设置驱动
ambari-server setup --jdbc-db=mysql --jdbc-driver=/usr/share/java/mysql-connector-java.jar
进入mysql中的ambari库,运行ambari的sql文件
source /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql;
运行命令,开始初始化ambari服务
ambari-server setup
Using python /usr/bin/python Setup ambari-server Checking SELinux... SELinux status is 'disabled' Customize user account for ambari-server daemon [y/n] (n)? y Enter user account for ambari-server daemon (root): Adjusting ambari-server permissions and ownership... Checking firewall status... Checking JDK... [1] Oracle JDK 1.8 + Java Cryptography Extension (JCE) Policy Files 8 [2] Custom JDK ============================================================================== Enter choice (1): 2 WARNING: JDK must be installed on all hosts and JAVA_HOME must be valid on all hosts. WARNING: JCE Policy files are required for configuring Kerberos security. If you plan to use Kerberos,please make sure JCE Unlimited Strength Jurisdiction Policy Files are valid on all hosts. Path to JAVA_HOME: /usr/java/jdk1.8.0_333 Validating JDK on Ambari Server...done. Check JDK version for Ambari Server... JDK version found: 8 Minimum JDK version is 8 for Ambari. Skipping to setup different JDK for Ambari Server. Checking GPL software agreement... GPL License for LZO: https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html Enable Ambari Server to download and install GPL Licensed LZO packages [y/n] (n)? y Completing setup... Configuring database... Enter advanced database configuration [y/n] (n)? y Configuring database... ============================================================================== Choose one of the following options: [1] - PostgreSQL (Embedded) [2] - Oracle [3] - MySQL / MariaDB [4] - PostgreSQL [5] - Microsoft SQL Server (Tech Preview) [6] - SQL Anywhere [7] - BDB ============================================================================== Enter choice (1): 3 Hostname (localhost): Port (3306): Database name (ambari): Username (ambari): Enter Database Password (bigdata): Re-enter password: Configuring ambari database... Configuring remote database connection properties... WARNING: Before starting Ambari Server, you must run the following DDL directly from the database shell to create the schema: /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql Proceed with configuring remote database connection properties [y/n] (y)? y Extracting system views... ambari-admin-2.7.5.0.72.jar .... Ambari repo file doesn't contain latest json url, skipping repoinfos modification Adjusting ambari-server permissions and ownership... Ambari Server 'setup' completed successfully.
启动服务
ambari-server start
第九步:搭建集群
登录http://HDP管理节点IP:8080,账户/密码:admin/admin
点击开始创建cluster
起一个名字点击下一步
HDP版本号不变,我在网盘中共享的就是3.1的
在版本界面向下拉,选择使用自定义配置,并将下面的配置框只保留一个redhat7,其他的点击右侧remove删除
根据前面的配置名称,将对应的yum路径添加上去,随着你的填写HDP会自检,并在填写错误时给出提示
在你的服务器上将id_rsa
文件拷贝下来,一般在你用来SSH的用户主目录下的.ssh
文件夹下,并在下一步填写集群节点,以及上传该文件
点击下一步,后再弹出的模态框中点击提交
进入安装界面,等待即可
在此界面等待安装时有一个坑,当所有节点安装成功后,会自检,如下图
此时如果你的系统安装时选择了中文,那么在此界面各节点自检时就会进程卡死
自检成功后点击下一步,在弹出的模态框中点击OK
进入自选服务界面,我们不要一次性全部安装,先安装必要的服务,防止安装太多而失败。
选好后点击下一步,并在弹出的模态框中选择OK
之后会弹出警告,忽略即可
随后根据不同节点的性能,装载不同的主服务
点击下一步后,开始装载每个主服务对应的其他服务
随后验证密码,Grafana Admin
和Activity Explorer's Admin
密码输入admin就行,其他的填写准备好的数据库密码
修改数据库的详情配置注意,选已有的数据库,并连接路径对不对,配置后测试连接
配置HDFS,一般默认就可
配置资源
最后确定配置,点击无论如何
随后进入确定界面,如无误,则点击开始安装
所有节点服务安装成功后点击下一步
启动集群
最后看过我其他搭建文档的朋友应该都知道,我启动集群都是用脚本从来不是每次一个一个找节点去启动,虽然HDP搭建好后就一个启动命令,但是每次重复输入我也嫌弃麻烦
#!/bin/bash #该脚本用来启动所有服务,通过参数决定 case $1 in "hdp_start"){ echo "----------HDP启动环境---------" echo `date` > /opt/start_hdp_log/hdp_start.log echo "---------启动HDP集群----------" ambari-server start >> /opt/start_hdp_log/hdp_start.log };; "hdp_stop"){ echo "----------HDP关闭环境---------" echo `date` > /opt/start_hdp_log/hdp_stop.log echo "---------关闭CDH集群----------" ambari-server stop >> /opt/start_hdp_log/hdp_stop.log };; esac
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。