Ambari+HDP生产集群搭建(入门级)

ambari+HDP的集群搭建。做一个入门级的介绍。

参考:
https://www.rookiegao.top/archives/ambari%E5%85%A5%E9%97%A8#ambari%E7%AE%80%E8%BF%B0
https://www.bilibili.com/video/BV1R4411a7hR?p=4
https://blog.csdn.net/z3225167/article/details/92803720
https://www.cnblogs.com/zhang-ke/p/8944240.html
https://www.jianshu.com/p/928c5f4832a6

1. 集群节点规划及准备

采用离线安装的策略,所以yum.hdp这台主机作为提供yum源的主机,上面有Ambari和HDP的安装包文件。nd-00.hdp这台主机作为提供Ambari服务的主机。其他主机就是正常的运算节点了。

  • 集群开始安装之前,请提前设置好静态的ip和主机名(Hostname)。可以参考下原生Apache Hadoop的搭建。

1.0 主机准备:

思路:可先设置一台主机,之后再克隆其他主机,使得基本的环境和软件保持一致。

  1. 修改主机网卡:

    1
    2
    //注意有些网卡是ifcfg-ens33
    vim /etc/sysconfig/network-script/ifcfg-eth0

    1
    2
    service network restart //重启网络
    ifconfig //检查是否改过来了
  2. 关闭防火墙,设置开机不启动:

    1
    2
    service iptables stop
    chkconfig iptables off
  3. 修改hosts文件,称为修改主机映射:

    1
    vi /etc/hosts

  4. 修改本机的name:

    1
    vi /etc/sysconfig/network

  5. 设置阿里云开源镜像:

    • 配置方法:https://developer.aliyun.com/mirror/centos
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      //1.备份
      mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
      //2.下载新的 CentOS-Base.repo 到 /etc/yum.repos.d/
      //2.1 CentOS 6
      wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-6.repo
      或者
      curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-6.repo
      //2.2 CentOS 7
      wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
      或者
      curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
      //2.3 CentOS 8
      wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo
      或者
      curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo
      //3.运行yum makecache生成缓存
  6. 安装时间同步服务ntp:

    1
    2
    3
    yum install -y ntp
    service ntpd start //启动ntpd服务
    chkconfig ntpd on //设置开机自动启动
  7. 安装jdk,配置环境:

    1
    2
    3
    4
    5
    6
    7
    8
    mkdir /usr/java
    tar zxvf jdk-8u141-linux-x64.tar.gz -C /usr/java/

    vi /etc/profile
    export JAVA_HOME=/usr/java/jdk1.8.0_144
    export PATH=$PATH:$JAVA_HOME/bin

    source /etc/profile
  8. 关闭Selinux和THP(如果不关闭THP,Hadoop的系统CPU使用率很高):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    sestatus
    //设置SELINUX=disabled
    vi /etc/sysconfig/selinux

    //如果出现下述结果说明启动了THP
    cat /sys/kernel/mm/transparent_hugepage/defrag
    [always] madvise never
    cat /sys/kernel/mm/transparent_hugepage/enabled
    [always] madvise never

    //永久关闭
    vi /etc/rc.d/rc.local
    //增加下列内容
    if test -f /sys/kernel/mm/transparent_hugepage/enabled;then
    echo never > /sys/kernel/mm/transparent_hugepage/enabled
    fi
    if test -f /sys/kernel/mm/transparent_hugepage/defrag;then
    echo never > /sys/kernel/mm/transparent_hugepage/defrag
    fi

    //重启机器,可等等
    reboot

    //检查,如果为下述情况说明已经禁用
    cat /sys/kernel/mm/transparent_hugepage/defrag
    always madvise [never]
    cat /sys/kernel/mm/transparent_hugepage/enabled
    always madvise [never]
  9. 克隆剩下的主机:

    • 前8步把各主机的环境全部搭建好,接下来就是克隆主机。虽然这是在Vmare虚拟机上这样操作,但是在其他的像Zstack这样的云主机管理,也因像前8点那样,准备好环境。克隆主机时要删除一个文件(记录mac地址的文件,注意这是虚拟机上才有的操作)。
      1
      2
      rm /etc/udev/rules.d/70-persistent-net.rules
      //关机再克隆
  10. 克隆之后,修改配置:

    1. 修改ip地址和删除mac的HWADDR地址:

      1
      2
      3
      4
      5
      //注意有些网卡是ifcfg-ens33
      vim /etc/sysconfig/network-script/ifcfg-eth0

      //修改好之后重启网卡
      service network restart

    2. 修改主机名:

      1
      vi /etc/sysconfig/network

      主机名network文件

    3. 注意,有个文件记录了网卡的情况,可做参考:

      1
      2
      3
      cat /etc/udev/rules.d/70-persistent-net.rules

      //如有问题,直接删除这个文件

      70-persistent-net文件

  11. 重复上述步骤,依次修改克隆的其他主机。

1.1 配置免密登录:

这里不用详细讲解,我在Apache hadoop集群搭建中详细说过这件事。就是将生成的公钥和私钥进行匹配,公钥传给自己和其他主机。

1
2
3
4
//生成密钥,生成的密钥位于/root/.ssh/目录下
ssh-keygen -t rsa

ssh-copy-id nd-00.hdp //后面接主机名

1.2 节点操作:

在hdp-nd-00/01/02/03/04节点上都要操作。

1.2.1 确保节点scp命令可用,若不可用执行

1
yum install -y openssh-clients

1.2.2 设置每台节点的hostname和hosts:

1
2
3
4
5
//修改主机名称
vi /etc/sysconfig/network

//配置主机映射
vi /etc/hosts

1.2.3 安装jdk,配置环境:

1
2
3
4
5
6
7
8
mkdir /usr/java
tar zxvf jdk-8u141-linux-x64.tar.gz -C /usr/java/

vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin

source /etc/profile

1.3 安装MySQL,创建相应的数据库:

1.3.1 安装Mysql:

在nd-00.hdp这台主机安装mysql服务。Ambari使用的默认数据库是PostgreSQL,用于存储安装元数据,可以使用自己安装MySQL数据库作为Ambari元数据库。注意:一定要用root用户操作如下步骤;如果有mysql,先卸载MySQL再安装。

1
2
3
4
5
6
7
8
9
yum list mysql-server

//安装mysql-server
yum install mysql-server

//启动mysql服务,设置密码
service mysqld start
/usr/bin/mysqladmin -u root password 'root1111' ##设置密码,不要全用数字
chkconfig mysqld on ##设置开机自动启动
1
2
3
4
5
6
7
8
vi /etc/my.cnf
//在[client]下添加,如果没有[client]请自行添加
default-character-set=utf8

//在[mysqld]下添加
collation_server-utf8_general_ci
character_set_server=utf-8
default-storage-engine=INNODB

1
2
3
service mysqld restart
mysqld -uroot -p ##输入密码
Mysql > show variables like 'character_set_%'; ##查看编码

1.3.2 在数据库创建相应的用户和DB:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//使用root用户登录
mysql -uroot -p

//创建ambari数据库及数据库的用户名和密码,一些监控信息要保存在数据库中
create database ambari character set utf8;
CREATE USER 'ambari'@'%'IDENTIFIED BY 'Ambari123';
CREATE ALL PRIVILEGES ON ambari.* TO 'ambari'@'%';
FLUSH PRIVILEGES;

//创建hive数据库及hive库的用户名和密码
create database hive character set utf8;
CREATE USER 'hive'@'%'IDENTIFIED BY 'Hive123';
CREATE ALL PRIVILEGES ON hive.* TO 'hive'@'%';
FLUSH PRIVILEGES;

//创建oozie数据库及oozie库的用户名和密码
create database oozie character set utf8;
CREATE USER 'oozie'@'%'IDENTIFIED BY 'Oozie123';
CREATE ALL PRIVILEGES ON oozie.* TO 'oozie'@'%';
FLUSH PRIVILEGES;

1.3.3 安装mysql连接的jar包:

1
2
3
4
yum install mysql-connector-java

//查看下载后的jar,看目录中是否有mysql-connector-java-5.1.17.jar
ls /usr/share/java

2. 本地yum源

我们将安装包全部下载,并配置成本地YUM源,搭建本地yum源的目的是为了加快搭建安装的速度,因为Ambari和HDP的安装包在墙外,在线安装浪费时间。在yum.hdp主机上进行配置。

  • Apache Amabri是一种基于web的工具,支持Apache Hadoop集群的创建、管理和监控。
  • HDP(Hortonworks Data Platform)是由Hortonworks公司为企业准备的Hadoop大数据管理平台,集成了所有关键的Hadoop生态圈项目(组件)。

2.1 下载Ambari:

看下迅雷是否可以下载?

2.2 下载HDP:

2.3 设置阿里云开源镜像:

  • 配置方法:https://developer.aliyun.com/mirror/centos
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    //1.备份
    mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
    //2.下载新的 CentOS-Base.repo 到 /etc/yum.repos.d/
    //2.1 CentOS 6
    wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-6.repo
    或者
    curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-6.repo
    //2.2 CentOS 7
    wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
    或者
    curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
    //2.3 CentOS 8
    wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo
    或者
    curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo
    //3.运行yum makecache生成缓存

2.4 安装yum相关工具:

在yum.hdp这台主机上。

1
2
3
yum install yum-utils -y
yum repolist
yum install createrepo -y

2.5 安装 Apache httpd:

这个httpd服务的作用主要是,这台主机作为yum源,那么其他主机要从这上面下载需要的东西,需要一个服务器。所以我们使用httpd这个服务。

2.5.1 安装httpd:

  • 使用yum在线安装httpd:
    1
    yum install httpd -y
  • 安装完httpd后,会生成/var/www/html目录(相当于Tomcat的webapps目录)。进入到/var/www/html目录下,创建ambari和hdp目录,用来存放安装文件。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    cd /var/www/html

    mkdir /var/www/html/ambari
    mkdir /var/www/html/hdp
    mkdir /var/www/html/hdp/HDP-UTILS-1.1.0.21

    tar -zxvf ambari-2.4.1.0-centos6.tar.gz -C /var/www/html/ambari/
    tar -zxvf HDP-2.5.0.0-centos6-rpm.tar.gz -C /var/www/html/hdp/
    tar -zxvf HDP-UTILS-1.1.0.21-centos6.tar.gz -C /var/www/html/hdp/HDP-UTILS-1.1.0.21

    2.5.2 启动httpd服务:

    1
    service httpd start
  • httpd默认的端口为80,启动后请在浏览器里面输入:http://youipaddr/

    2.5.3 设置开机自启:

    1
    chkconfig httpd on

2.6 配置本地Repo:

告诉其他节点,若想下载Ambari和HDP都去yum.hdp源主机下载。

2.6.1 配置Ambari:

主要是配置ambari.repo,让其他主机来yum.hdp下载ambari安装包。

  • 提前下载好ambari.repo文件,或者wget去下载。
    1
    wget -O /etc/yum.repos.d/ambari.repo http://public-repo-1.hortonworks.com/ambari/centos6/2.x/updates/2.4.1.0/ambari.repo

1
2
vi /etc/yum.repos.d/ambari.repo
//这里的ip地址是yum.hdp这台主机的地址

2.6.2 配置HDP:

主要是配置HDP.repo,让其他主机来yum.hdp下载HDP和UTILS安装包。

1
touch /etc/yum.repos.d/HDP.repo //新建文件,添加以下的内容

2.6.3 配置HDP-UTILS:

  • 这一步,也是配置HDP.repo文件,我们在上面和HDP一起配置了。

2.6.4 分发Ambari.repo和HDP.repo:

1
2
3
4
5
6
7
8
9
cd /etc/yum.repos.d

//没有scp命令时使用yum install openssh-clients

scp ambari.repo HDP.repo nd-00.hdp:$PWD
scp ambari.repo HDP.repo nd-01.hdp:$PWD
scp ambari.repo HDP.repo nd-02.hdp:$PWD
scp ambari.repo HDP.repo nd-03.hdp:$PWD
scp ambari.repo HDP.repo nd-04.hdp:$PWD

2.6.5 生成本地源:

使用createrepo生成本地源,每一台机器都需要。

  • createrepo用以创建yum源(软件仓库),即为存放于本地特定位置的众多rpm包建立索引,描述各包所需依赖信息,并形成元数据。
1
2
createrepo /var/www/html/hdp/HDP/centos6
createrepo /var/www/html/hdp/HDP-UTILS-1.1.0.21/

3. 安装Ambari-Server

ambari-server提供了类似安装向导的作用,所以先安装它。

3.1 nd-00.hdp节点安装:

1
2
yum install ambari-server ##安装
ambari-server setup ##启动,第一次启动可以设置下它的初始化参数

1
2
3
4
5
6
7
8
9
10
11
//允许远程登录
mysql -uroot -p
GRANT ALL PRIVILEGES ON ambari.* TO 'ambari'@’localhost‘ IDENTIFIED BY 'Ambari123';
GRANT ALL PRIVILEGES ON ambari.* TO 'ambari'@'%' IDENTIFIED BY 'Ambari123';
FLUSH PRIVILEGES;

mysql -u ambari -p Ambari123 -hnd-00
use ambari;
source /var/lib/ambari-server/resources/Ambari-DDL-Mysql-CREATE.SQL #执行的ambari里初始化脚本文件

ambari-server start #启动ambari

3.2 安装Agent:

  • nd-00/01/02/03/04.hdp所有节点安装ambari-agent,代理脚本。
    1
    2
    yum install ambari-agent
    service ambari-agent start

3.3 登录Ambari:

https://www.bilibili.com/video/BV1R4411a7hR?p=7

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

请我喝杯咖啡吧~

支付宝
微信