规划
OS:
Ambari-yumrepo 公网
Ambari-server 内网
hadoop-master1 内网
hadoop-master2 内网
hadoop-slave1 内网
hadoop-slave2 内网
hadoop-slave3 内网
准备工作
(1)修改主机名
-
Ambari-server、master1、master2、slave1、slave2、slave3
$ hostname XXX && echo XXX >/etc/hostname $ cat >> /etc/hosts << EOF master1 master2 slave1 slave2 slave3 ambari-server ambari-yumrepo EOF
(2)关闭selinux和防火墙
-
Ambari-server、master1、master2、slave1、slave2、slave3
$ setenforce 0 $ service iptables stop $ chkconfig iptables off
(3)主从节点ssh互信
-
slave1、slave2、slave3
$ echo sshd: >>/etc/
-
master1、master2
$ ssh-keygen -t rsa $ ssh-copy-id -i ~/.ssh/id_ root@slave1 $ ssh-copy-id -i ~/.ssh/id_ root@slave2 $ ssh-copy-id -i ~/.ssh/id_ root@slave3
(4)安装jdk
-
Ambari-server、master1、master2、slave1、slave2、slave3
$ wget /otn-pub/java/jdk/8u111-b14/jdk-8u111-linux- $ rpm -ivh jdk-8u111-linux-
(5)格式化硬盘
-
Ambari-server、master1、master2、slave1、slave2、slave3
$ yes| /dev/sdb $ mkdir /data $ mount /dev/sdb /data $ echo "mount /dev/sdb /data" >>/etc/
(6)系统参数调优
-
Ambari-server、master1、master2、slave1、slave2、slave3
$ cat >>/etc/ <<EOF _fin_timeout = 30 _keepalive_time = 1200 _syncookies = 1 _tw_reuse = 1 _tw_recycle = 1 _local_port_range = 1024 65000 _max_syn_baklog = 8192 _max_tw_bukets = 5000 EOF
文件打开数
$ cat >> /etc/security/ <<EOF * soft nofile 65535* hard nofile 65535 EOF
重启
二:搭建内网yum源
注意:因为考虑到hadoop集群的机器可能是内网机器,没有公网访问权限,那么选择搭建一个内网的yum源,这个yum源的机器需要有公网权限。如果你的机器都可以出公网,也可以跳过这一步。
(1)添加yum源
-
Ambari-yumrepo
$ cd /opt $ wget public-repo-/ambari/centos6//updates// $ cp /etc//
(2)同步yum源的包
-
Ambari-yumrepo
$ reposync -r HDP-UTILS- $ reposync -r Updates-ambari- $ reposync -r ambari-
会在当前目录生成三个目录。
(3)发布yum源
-
Ambari-yumrepo
需要一个web服务器来发布,已经安装了nginx,将上面下载包的三个目录移动到nginx发布目录下。
$ yum install nginx $ mkdir /usr/share/nginx/html/ambari $ cp -R ambari- /usr/share/nginx/html/ambari/ $ cp -R HDP-UTILS- /usr/share/nginx/html/ambari/ $ cp -R Updates-ambari- /usr/share/nginx/html/ambari/
(4)创建repo
-
Ambari-yumrepo
安装createrepo命令
$ yum install createrepo $ cd /usr/share/nginx/html/ambari/ $ createrepo ./
(5)添加HDP源
-
Ambari-yumrepo
$ vim /etc// [HDP-] name=HDP baseurl=public-repo-/HDP/centos6//updates/ enabled=1 gpgcheck=0
$ mkdir /usr/share/nginx/html/hdp $ cd /usr/share/nginx/html/hdp 同步网络源的包,1G左右。 $ reposync -r HDP- $ createrepo ./
这样就本地yum源就OK了!
(6)配置配置文件,放在web目录下。
-
Ambari-yumrepo
注意:这个配置是给其他机器来使用的,不是本机的配置。
$ mkdir /usr/share/nginx/html/hadoop $ cd /usr/share/nginx/html/hadoop $ vim [ambari-] name=Ambari baseurl=/ambari/ gpgcheck=0 enabled=1 [HDP-UTILS-] name=Hortonworks Data Platform Utils Version - HDP-UTILS- baseurl=/ambari/ gpgcheck=0 enabled=1 [Updates-ambari-] name=ambari- - Updates baseurl=/ambari/ gpgcheck= enabled=1
$ vim [HDP-] name=HDP baseurl=/hdp path=/ enabled=1 gpgcheck=0
三:安装Ambari
(1)添加yum源
-
Ambari-server、master1、master2、slave1、slave2、slave3
$ cd /etc// $ wget /hadoop/ #上面搭建的内网yum源 $ wget /hadoop/ #上面搭建的内网yum源
(2)ambari主机ssh信任hadoop各机器
-
master1、master2、slave1、slave2、slave3
$ echo sshd: >>/etc/
-
Ambari-server
$ ssh-keygen -t rsa $ ssh-copy-id -i ~/.ssh/id_ root@master1 $ ssh-copy-id -i ~/.ssh/id_ root@master2 $ ssh-copy-id -i ~/.ssh/id_ root@slave1 $ ssh-copy-id -i ~/.ssh/id_ root@slave2 $ ssh-copy-id -i ~/.ssh/id_ root@slave3
(3)安装ambari
-
Ambari-server
$ yum -y install ambari-server
(4)初始化ambari
-
Ambari-server
下载需要的jdk文件(必须用这个文件)
$ wget public-repo-/ARTIFACTS/jdk-6u31-linux- $ mv jdk-6u31-linux- /var/lib/ambari-server/resources/ $ ambari-server setup #初始化配置
(5)启动ambari
-
Ambari-server
$ ambari-server start
(6)给ambari配置本地的hadoop源
-
Ambari-server
$ cd /var/lib/ambari-server/resources/stacks/HDPLocal//repos/ $ vim 将centos6的 <baseurl>public-repo-/HDP/centos6//updates/</baseurl> 替换成 <baseurl>/hdp/centos6//updates/</baseurl>
(7)进入ambari
-
访问::8080进入ambari,user:admin,passwd:admin
-
输入集群名
-
选择 stack 版本
-
Target Hosts输入hadoop机器的列表,需要添加ambari-server这台机器的/root/.ssh/id_rsa文件。
-
会自动安装ambari-agent
-
选择那个服务安装在哪个机器上。
-
配置客户端和slaves
-
配置各个系统
-
开始安装
通过Ambari部署hadoop集群成功!
部署过程中遇到的问题:
1:执行os_type_脚本执行失败导致的Local OS is not compatible with cluster primary OS报错,这是一个BUG,可以直接修改该os_type_,输出正确的结果。
2:ambari没有复制过去正确的hdp源,所以手动将hdp源配置到hadoop的集群
$ vim [HDP-] name=HDP baseurl=/hdp path=/ enabled=1 gpgcheck=0
3:nagios输入正确密码和用户名无法登陆,密码文件httpd用户没有权限,设置777后可以正常访问。
-rw-r----- 1 nagios nagios 26 Jun 9 11:54 /etc/nagios/
4:jourenode无法启动报错
直接执行yum会报错
$ yum -d 0 -e 0 -y install net-snmp-utils
rpmdb: Thread/process 12500/139757427676928 failed: Thread died in Berkeley DB library
error: db3 error(-30974) from dbenv->failchk: DB_RUNRECOVERY: Fatal error, run database recovery
error: cannot open Packages index using db3 - (-30974)
error: cannot open Packages database in /var/lib/rpm
CRITICAL::
解决办法:
$ rm -rf /var/lib/rpm/__db.*