说明 :root用户 内网ip 服务器能访问外网
服务器:安装的时候使用内网ip,下载的时候使用外网ip
Hostname 外网IP 内网IP
myha01 62.234.185.97 172.21.0.12
myha02 62.234.222.204 172.21.0.10
myha03 62.234.216.21 172.21.0.14
备注:集群内部使用内网IP
操作系统:CentOS Linux 7.5 64位(腾讯云示例)
Ambari版本:Ambari-2.7.1.0
HDP版本:HDP-3.1.0
官方文档: https://docs.hortonworks.com/ 版本说明
MySQL版本:mysql-5.7.21 最稳定版本
JDK版本:java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64
ssh-keygen
每个服务器依次执行以下命令,将服务器公钥拷贝至本服务器和其他服务器
注意:第一次连接时,需要输入yes来确认建立授权的主机名访问,并需要输入目标服务器root用户密码来完成公钥文件传输。
ssh-copy-id 172.21.0.12
ssh-copy-id 172.21.0.10
ssh-copy-id 172.21.0.14
SecureCRT可同时将命令发送到所有服务器:
给所有的ssh公钥和私钥配置权限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
vi /etc/hosts
添加根据集群IP配置如下信息:
172.21.0.12 myhadoop01
172.21.0.10 myhadoop02
172.0.14 myhadoop03
可以对每台服务器分别修改,也可以修改完myhadoop1后再发送到myhadoop2、myhadoop3
scp /etc/hosts root@myhadoop02/etc/hosts
scp /etc/hosts root@myhadoop03:/etc/hosts
注意:必须保留,否则会影响ambari程序运行稳定性。
127.0.0.1 localhost.localdomain localhost
127.0.0.1 localhost4.localdomain4 localhost4
::1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
hostnamectl --static set-hostname myhadoop01
hostnamectl --static set-hostname myhadoop03
hostnamectl --static set-hostname myhadoop02
或者vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=
vi /etc/rc.d/rc.local
添加下面内容
#disable THP at boot time
if myhadoop -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if myhadoop -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
可以修改完myhadoop1后再发送到myhadoop2、myhadoop3
scp /etc/rc.d/rc.local root@myhadoop2:/etc/rc.d
scp /etc/rc.d/rc.local root@myhadoop3:/etc/rc.d
特别说明:
不要采用多种方式,腾讯云centos已经修改过,不需要再修改。否则后期安装过程中会一直卡在安装界面。
自己也可以参考腾讯云centos优化方式
touch /var/lock/subsys/local
/usr/local/qcloud/irq/net_smp_affinity.sh >/tmp/net_affinity.log 2>&1
/usr/local/qcloud/rps/set_rps.sh >/tmp/setRps.log 2>&1
/usr/local/qcloud/gpu/nv_gpu_conf.sh >/tmp/nv_gpu_conf.log 2>&1
vi /etc/selinux/config
将SELINUX设置为disabled,如已修改请跳过
systemctl disable firewalld
service firewalld stop
说明:两个命令都要敲,systemctl是开机启动关闭,service 是立刻关闭
vi /etc/security/limits.conf
添加如下内容:
vi /etc/sysctl.conf
说明:该参数网上有很多版本,参考腾讯云centos优化,和阿里云centos优化,采用以下优化方式为最佳。
添加如下内容:
#sysctl settings are defined through files in
#/usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
Vendors settings live in /usr/lib/sysctl.d/.
To override a whole file, create a new file with the same in
#/etc/sysctl.d/ and put new settings there. To override
#only specific settings, add a file with a lexically later
name in /etc/sysctl.d/ and put new settings there.
#For more information, see sysctl.conf(5) and sysctl.d(5).
Controls IP packet forwarding
net.ipv4.ip_forward = 0
#Controls source route verification
net.ipv4.conf.default.rp_filter = 1
Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0
#Controls the System Request debugging functionality of the kernel
Controls whether core dumps will append the PID to the core filename.
Useful for debugging multi-threaded applications.
kernel.core_uses_pid = 1
#Controls the use of TCP syncookies
net.ipv4.tcp_syncookies = 1
#Controls the maximum size of a message, in bytes
kernel.msgmnb = 65536
#Controls the default maxmimum size of a mesage queue
kernel.msgmax = 65536
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv4.conf.all.promote_secondaries = 1
net.ipv4.conf.default.promote_secondaries = 1
net.ipv6.neigh.default.gc_thresh3 = 4096
net.ipv4.neigh.default.gc_thresh3 = 4096
kernel.softlockup_panic = 1
kernel.sysrq = 1
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
kernel.numa_balancing = 0
kernel.shmmax = 68719476736
kernel.printk = 5
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv4.conf.all.promote_secondaries = 1
net.ipv4.conf.default.promote_secondaries = 1
net.ipv6.neigh.default.gc_thresh3 = 4096
net.ipv4.neigh.default.gc_thresh3 = 4096
kernel.softlockup_panic = 1
kernel.sysrq = 1
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
kernel.numa_balancing = 0
kernel.shmmax = 68719476736
kernel.printk = 5
可以修改完myhadoop1后再发送到myhadoop2、myhadoop3
scp /etc/sysctl.conf root@myhadoop2:/etc
scp /etc/sysctl.conf root@myhadoop3:/etc
fdisk -l 查看是否有磁盘需要挂载
如果想单独加载数据盘可用以下命令(数据盘为/dev/vdb1,挂载目录为/data)
如不需要则可跳过此步骤
mkdir /data
mount -t ext4 /dev/xvdb1 /data
设置开机自动加载数据盘:
vi /etc/fstab
添加如下内容:
/dev/vdb1 /data ext4 defaults 0 0
每个节点分别安装:
yum install -y lsof java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-devel.x86_64 bzip2 net-tools.x86_64 rsync nfs-utils ntp ntpdate ntp-doc
查找JDK安装路径:
which java
Java安装路径为:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-2.el7_6.x86_64
在/etc/profile文件末尾添加: vi /etc/profile
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-2.el7_6.x86_64
export JRE_HOME= J A V A H O M E / j r e e x p o r t C L A S S P A T H = . : {JAVA_HOME}/jre export CLASSPATH=.: JAVAHOME/jreexportCLASSPATH=.:{JAVA_HOME}/lib: J R E H O M E / l i b e x p o r t P A T H = {JRE_HOME}/lib export PATH= JREHOME/libexportPATH={JAVA_HOME}/bin:$PATH
使/etc/profile生效
source /etc/profile
scp /etc/profile root@myhadoop2:/etc
scp /etc/profile root@myhadoop3:/etc
集群中的所有节点的时钟必须能够彼此同步。
安装NTP服务并启动,请在每个节点上运行以下命令:
yum install -y ntp(如果在1.10已安装ntp则可跳过)
ntp 主节点:
vi /etc/ntp.conf
restrict 10.0.0.0 mask 255.255.0.0
server 172.21.0.12
ntp 从节点 :
myhadoop2、myhadoop3分别修改:
vi /etc/ntp.conf
server 10.0.0.15
关闭ntp:
systemctl stop ntpd
启动ntp:
systemctl start ntpd
systemctl enable ntpd
查看时间同步状态:ntpstat
说明:如果是腾讯云,阿里云能访问外网服务器则不用修改
reboot
Ambari安装会将安装等信息写入数据库,建议使用自己安装的Mysql数据库,也可以不安装而使用默认数据库PostgreSQL。如果安装Hive、Oozie,也可使用MySQL数据库
也可以ambari使用默认PostgreSQL数据库,hive、Oozie在对应想安装的节点上安装MySQL数据库管理
登陆 https://dev.mysql.com/downloads/repo/yum/选择对应操作系统下载YUM源rpm安装包
地址为:
https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm
wget https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm
yum localinstall mysql57-community-release-el7-11.noarch.rpm
yum install mysql-community-server
systemctl start mysqld
mysql安装完成之后,在/var/log/mysqld.log文件中给root生成了一个默认密码。通过下面的方式找到root默认密码,然后登录mysql进行修改:
grep ‘temporary password’ /var/log/mysqld.log
ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘Mysql-123’;
或者:
set password for ‘root’@‘localhost’=password(‘Mysql-123’);
use mysql;
create database ambari default charset utf8 collate utf8_general_ci; #新建ambari数据库
CREATE USER ‘ambari’@’%’ IDENTIFIED BY ‘Ambari-123’;#新建ambari用户
GRANT ALL PRIVILEGES ON ambari.* TO ‘ambari’@’%’;#分配ambari权限
FLUSH PRIVILEGES;#刷新系统权限表
create database hive default charset utf8 collate utf8_general_ci; #新建hive数据库
CREATE USER ‘hive’@’%’ IDENTIFIED BY ‘Hive-123’;#新建hive用户
GRANT ALL PRIVILEGES ON hive.* TO ‘hive’@’%’;#分配hive权限
FLUSH PRIVILEGES;#刷新系统权限表
create database Oozie default charset utf8 collate utf8_general_ci; #新建Oozie数据库
CREATE USER ‘Oozie’@’%’ IDENTIFIED BY ‘Oozie-123’;#新建Oozie用户
GRANT ALL PRIVILEGES ON Oozie.* TO ‘Oozie’@’%’;#分配Oozie权限
FLUSH PRIVILEGES;#刷新系统权限表
在设置本地库之前,我们先需要完成一些准备工作,如下:
选择一台服务器作为本地库的镜像服务器,这个服务器能够被集群中的服务器所访问,且有一个被支持的操作系统。此台镜像服务器有软件包管理。
yum install httpd(如果在1.9已经安装过,可跳过此步骤)
相关命令如下:
第一、启动、终止、重启
systemctl start httpd.service #启动
systemctl stop httpd.service #停止
systemctl restart httpd.service #重启
第二、设置开机启动/关闭
systemctl enable httpd.service #开机启动
systemctl disable httpd.service #开机不启动
第三、检查httpd状态
systemctl status httpd.service
Ambari:
https://docs.hortonworks.com/HDPDocuments/Ambari-2.7.1.0/bk_ambari-installation/content/ambari_repositories.html
HDP和HDP UTILS:
https://docs.hortonworks.com/HDPDocuments/Ambari-2.7.1.0/bk_ambari-installation/content/hdp_30_repositories.html
cd /data
wget http://public-repo-1.hortonworks.com/HDP/centos7/3.x/updates/3.0.1.0/HDP-3.0.1.0-187.xml
tar -xzvf HDP-3.1.0.0-centos7-rpm.tar.gz
wget http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.22/repos/centos7/HDP-UTILS-1.1.0.22-centos7.tar.gz
tar -xzvf HDP-UTILS-1.1.0.22-centos7.tar.gz -C /var/www/html/hdp-utils/
wget http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.7.1.0/ambari-2.7.1.0-centos7.tar.gz
tar -xzvf Ambari-2.7.1.0-centos7.tar.gz
wget http://public-repo-1.hortonworks.com/HDP-GPL/centos7/3.x/updates/3.0.1.0/HDP-GPL-3.0.1.0-centos7-gpl.tar.gz
tar -xzvf HDP-GPL-2.6.4.0-centos7-rpm.tar.gz
查看移动全部文件到/var/www/http/下
①新建文件夹
②移动文件
mv ambari/centos7/2.7.3.0-139/* /var/www/html/ambari/
mv HDP/centos7/3.1.0.0-78/* /var/www/html/hdp/
mv HDP-UTILS/centos7/1.1.0.22/* /var/www/html/hdp-utils/
mv HDP-GPL/centos7/3.1.0.0-78/* /var/www/html/hdp-gpl/
下载:
wget http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.7.1.0/ambari.repo
修改为:
下载:wget http://public-repo-1.hortonworks.com/HDP/centos7/3.x/updates/3.0.1.0/hdp.repo
将修改后的ambari.repo和hdp.repo复制到/etc/yum.repos.d
cp ambari.repo /etc/yum.repos.d
cp hdp.repo /etc/yum.repos.d
之后再发送到myhadoop2和myhadoop3
scp /etc/yum.repos.d/ambari.repo myhadoop2:/etc/yum.repos.d
scp /etc/yum.repos.d/ambari.repo myhadoop3:/etc/yum.repos.d
scp /etc/yum.repos.d/hdp.repo myhadoop2:/etc/yum.repos.d
scp /etc/yum.repos.d/hdp.repo myhadoop3:/etc/yum.repos.d
yum clean all
yum makecache
yum list | grep ambari
下载驱动:
cd /data
wget https://cdn.mysql.com//Downloads/Connector-J/mysql-connector-java-5.1.46.tar.gz
解压:
tar -xzvf mysql-connector-java-5.1.46.tar.gz
设置ambari的MySQL驱动:(需启动ambari-server后执行)
移动驱动到/usr/share/java下后面备用
cd mysql-connector-java-5.1.46
mv mysql-connector-java-5.1.46.jar /usr/share/java/
在选择的主节点上安装ambari-server,每个节点(包括主节点)上安装ambari-agent
yum install ambari-server
ambari-server setup
设置JAVA_HOME路径(在1.9中配置的路径):
①设置安装用户:root
②设置jdk,前面安装的openjdk路劲
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-2.el7_6.x86_64
设置ambari内置数据库
注意:都有默认值,修改不同地方,比如数据库登陆密码Amabri-123
注意警告:添加amabri 数据哭表头,记录地址:/var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql
登陆mysql
mysql -u ambari -p
输入密码:Ambari-123
切换数据库:
use ambari;
Source /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql;
ambari-server start
ambari-server stop #停止ambari-server
每个节点都需要安装:
yum install ambari-agent
编辑ambari-agent配置文件,全部设置为安装过Ambari-server 的主机名:
vi /etc/ambari-agent/conf/ambari-agent.ini
分别将hostname修改为myhadoop1
可以修改完myhadoop1之后发送到myhadoop2、myhadoop3:
scp /etc/ambari-agent/conf/ambari-agent.ini root@myhadoop2:/etc/ambari-agent/conf/
scp /etc/ambari-agent/conf/ambari-agent.ini root@myhadoop3:/etc/ambari-agent/conf/
ambari-agent start
相关的命令有以下:
ambari-agent status # 检查agent服务运行状态
ambari-agent stop # 停止agent服务
在启动Ambari 服务之后,使用web浏览器,打开Ambari Web。在浏览器的地址栏输入:
http://{your.ambari.server}:8080
其中,{your.ambari.server}是你的ambari server所在的主机名,例如
http://116.196.81.22:8080/
登陆前确保8080端口已经打开
默认用户名密码为:admin admin
点击“Launch Install Wizard”进入如下界面:
点击next
移除除了你需要的,只留下rehat7
选择本地源和系统版本,填写对应地址:
HDP-3.1:http://myhadoop01/hdp
HDP-3.1-GPL:http://myhadoop01/hdp-gpl
HDP-UTILS-1.1.0.22:http://myha01/hdp-utils
在“Target Hosts”里填上主机名,主机名一定要是全限定名。一行一个主机名。
在“Host Registration information”,选择Perform manual registration on hosts and do not use SSH,使用这种方式需要注意:需要提前在host上安装好ambari-agent,并启动服务。
在主机cat /root/.ssh/id_rsa
**
根据需求自主选择需要安装的组件,示例安装以下内容:
HDFS、YARN + MapReduce2、Hive、HBase、ZooKeeper、Ambari Metrics、Kafka、Spark2、Slider
根据安装MySQL的hive用户和hive数据库设置,Connection OK即可。
选择已经存在的mysql数据库
并且在ambari-server所在结点添加mysql-java驱动
ambari-server setup --jdbc-db=mysql --jdbc-driver=/usr/share/java/mysql-connector-java-5.1.46.jar
根据安装MySQL的hive用户和hive数据库设置,Connection OK即可。
输入hive元数据mysql密码,并且测试连接是否通畅
选择挂载磁盘作为数据储存目录。其他的删除
Yarn的日志储存路劲相同
可以使用默认组管理,也可以自定义密码
可以根据自己需要修改一定配置。
也可以启动服务后再修改配置。
跟踪安装测试,直至完成。
Ambari-Agent /var/log/ambari-server/ambari-server.log
异常ssl.SSLHandshakeException: Client requested protocol TLSv1 not enabled or not supported
解决:[security] 中添加:/etc/ambari-agent/conf/ambari-agent.ini
force_https_protocol=PROTOCOL_TLSv1_2
REASON: 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的驱动包放到/usr/share/java
在/etc/ambari-server/conf/ambari.properties中添加
server.jdbc.driver.path=/usr/share/java/mysql-connector-java.jar
1 将mysql的驱动包放到/usr/share/java
2在/etc/ambari-server/conf/ambari.properties中添加
3 server.jdbc.driver.path=/usr/share/java/mysql-connector-java.jar
解决办法:
So please try this
Ambari UI --> HDFS --> “Service Actions” (drop down from right corner) --> Run Service check
Ambari UI --> OOZIE --> “Service Actions” (drop down from right corner) --> Run Service check
Ambari UI --> ZOOKEEPRR --> “Service Actions” (drop down from right corner) --> Run Service check
Ambari UI --> HIVE --> “Service Actions” (drop down from right corner) --> Run Service check
在Ambari上安装好集群之后 自然要使用,无论是在页面上往查看目录,还是在命令行操作文件或目录,经常会出现如下问题:
Permission denied: user=dr.who, access=READ_EXECUTE, inode="/tmp/hive":ambari-qa:hdfs:drwx-wx-wx
黑体部分依次是 HDFS目录、目录拥有者、目录拥有者所在组。
解决方式有两种:
①修改目录权限
sudo -u hdfs hadoop dfs -chmod [-R] 755 /user/hdfs #红字部分是指该命令的执行用户,这里使用目录所有者
这种方式破坏了原有的权限设计,个人不建议
②使用对应的用户去执行命令,如
sudo -u hdfs hadoop dfs -ls /user/hive #即 根据目录的权限,选择使用对应的用户
要注意的是,如果要上传文件,最好先用 su someuser 登录,然后再执行(这样路径才不会出错,否则会找不到路径)
其实还有另外一种添加超级权限用户组的方式,感兴趣可参考 HDFS Permissions: Overcoming The “Permission Denied” AccessControlException
7.5 安装遇到其他异常问题
可以通过追踪日志查询问题原因
/var/log/ambari-server/路径下有所有的日志,根据问题对应查找跟踪。