zoukankan      html  css  js  c++  java
  • centos7.4配置ambari2.4.0.1+HDP-2.5.0.0

    前言

      由于项目需求,最近需要使用ambari配置hdp,因此在公司找了台搭建一套测试环境,测试环境运行在kvm虚拟机上,ambari版本和hdp版本没有采用最新版进行配置,为了快速进行配置,使用了ansible进行批量操作,详细配置如下。

    1.环境准备

    1.1 安装包准备

    hdp:wget http://public-repo-1.hortonworks.com/HDP/centos7/2.x/updates/2.5.0.0/HDP-2.5.0.0-centos7-rpm.tar.gz
    ambari:wget http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.4.0.1/AMBARI-2.4.0.1-centos7.tar.gz
    hdp-utils:wget http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.21/repos/centos7/HDP-UTILS-1.1.0.21-centos7.tar.gz 
    jdk:已下载完毕

    1.2 服务器准备

    序号

    主机名

    ip地址

    用途

    备注

    01

    node01

    192.168.1.101

    ambari-server

     mysql

    02

    node02

    192.168.1.102

    ambari-agent

    nn+snn+zk

    03

    node03

    192.168.1.103

    ambari-agent

    rm+zk+dn+hive

    04

    node04

    192.168.1.104

    ambari-agent

    zk+dn+hive

    05

    node05

    192.168.1.105

    ambari-agent

    1.3 配置管理工具

    ansible 定义组:ambari

    1.4 yum源配置文件准备

    [root@node-30 ~]# cat HDP.repo 
    [HDP-2.5]
    name=HDP-2.5
    baseurl=http://192.168.2.252/HDP/centos7
    enabled=1
    gpgcheck=0
    
    [root@node-30 ~]# cat ambari.repo 
    [ambari]
    name=ambari
    baseurl=http://192.168.2.252/ambari/AMBARI-2.4.0.1/centos7/2.4.0.1-1
    enabled=1
    gpgcheck=0
    gpgkey=http://192.168.2.252/ambari/AMBARI-2.4.0.1/centos7/2.4.0.1-1/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
    
    [root@node-30 ~]# cat HDP-UTILS.repo 
    [HDP-UTILS-1.1.0.21]
    name=HDP-UTILS-1.1.0.21
    baseurl=http://192.168.2.252/HDP-UTILS-1.1.0.21/
    enabled=1
    gpgcheck=0
    
    [root@node05 ~]# cat /etc/yum.repos.d/mysql.repo 
    [mysql5.7]
    name=mysql5.7
    baseurl=https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql57-community-el7/
    enabled=1
    gpgcheck=0

    2 操作系统初始化

    2.1 关闭selinux
    2.2 关闭防火墙
    2.3 修改hosts
    2.4 配置时钟同步
    2.5 配置系统centos7.4 yum源
    2.6 关闭THD
    2.7 增加sudo用户

    centos7.4.sh如下:

    #!/bin/bash
    # Filename:    centos7.4.sh
    # Revision:    1.0
    # Date:        20180621
    # Author:      Yang
    # Description: 用于centos7.4配置ambari的安装
    
    #1.定义配置yum源函数
    function yum(){
    mkdir -p /etc/yum.repos.d/bak
    /usr/bin/mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
    touch /etc/yum.repos.d/centos7.4.repo
    cat > /etc/yum.repos.d/centos7.4.repo << EOF
    [centos7.4]
    name=centos7.4
    baseurl=http://192.168.2.252/centos7.4
    enabled=1
    gpgcheck=0
    EOF
    }
    
    #2.定义关闭防火墙函数
    function close_firewalld(){
        /usr/bin/systemctl stop firewalld.service &> /dev/null
        /usr/bin/systemctl disable firewalld.service &> /dev/null
    }
    #3.定义关闭selinux函数
    function close_selinux(){
        setenforce 0
        sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
    }
    
    #4.优化内核并打开文件数限制
    function optimization(){
    [ -f /etc/sysctl.conf.bak ] && error_show "sysctl.conf.back is exist."
    /usr/bin/cp /etc/sysctl.conf /etc/sysctl.conf.bak
    cat>>/etc/sysctl.conf<<EOF
    #对于一个新建连接,内核要发送多少个 SYN 连接请求才决定放弃。
    net.ipv4.tcp_syn_retries = 1
    #显示或设定 Linux 核心在回应 SYN 要求时会尝试多少次重新发送初始 SYN,ACK 封包后才决定放弃。
    net.ipv4.tcp_synack_retries = 1
    #表示当keepalive起用的时候,TCP发送keepalive消息的频度。默认是俩小时。
    net.ipv4.tcp_keepalive_time = 600
    #TCP发送keepalive探测以确定该连接已经断开的次数。
    net.ipv4.tcp_keepalive_probes = 3
    #探测消息发送的频率
    net.ipv4.tcp_keepalive_intvl =15
    #在丢弃激活(已建立通讯状况)的TCP连接之前﹐需要进行多少次重试。默认15。
    net.ipv4.tcp_retries2 = 5
    #表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。
    net.ipv4.tcp_fin_timeout = 2
    #表示系统同时保持TIME_WAIT套接字的最大数量。
    net.ipv4.tcp_max_tw_buckets = 36000
    #表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
    net.ipv4.tcp_tw_recycle = 1
    #表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
    net.ipv4.tcp_tw_reuse = 1
    #系统所能处理不属于任何进程的TCP sockets最大数量。
    net.ipv4.tcp_max_orphans = 32768
    #表示开启SYN Cookies。
    net.ipv4.tcp_syncookies = 1
    #表示SYN队列的长度
    net.ipv4.tcp_max_syn_backlog = 16384
    #为每个TCP连接分配的读、写缓冲区内存大小,单位是Byte
    net.ipv4.tcp_wmem = 8192 131072 16777216
    net.ipv4.tcp_rmem = 32768 131072 16777216
    #内核分配给TCP连接的内存 单位是Page,1 Page = 4096 Bytes
    net.ipv4.tcp_mem = 786432 1048576 1572864
    #允许使用的端口
    net.ipv4.ip_local_port_range = 1024 65000
    #在内核内存中netfilter可以同时处理的“任务”
    net.ipv4.ip_conntrack_max = 65536
    net.ipv4.netfilter.ip_conntrack_max=65536
    #跟踪的连接超时结束时间
    net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=180
    #定义了系统中每一个端口最大的监听队列的长度
    net.core.somaxconn = 16384
    #该参数决定了, 每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目
    net.core.netdev_max_backlog = 16384
    EOF
    /sbin/sysctl -p
    echo "* soft nofile 65536" >> /etc/security/limits.conf
    echo "* hard nofile 65536" >> /etc/security/limits.conf
    echo "* soft nproc 65536" >> /etc/security/limits.conf
    echo "* hard nproc 65536" >> /etc/security/limits.conf
    }
    #05.添加sudo-mvtech用户
    function add_user(){
    useradd weihu
    echo "1qaz2wsx"|passwd --stdin weihu
    history -c
    sed -i '91a weihu  ALL=(ALL)      NOPASSWD:ALL' /etc/sudoers
    }
    #06.ntp
    function ntp(){
    /usr/bin/yum -y install ntp
    #修改配置文件
    echo '' >/etc/ntp.conf
    cat >>/etc/ntp.conf << EOF
    driftfile /var/lib/ntp/drift
    restrict default nomodify notrap nopeer noquery
    restrict 127.0.0.1 
    restrict ::1
    server 192.168.2.251
    includefile /etc/ntp/crypto/pw
    keys /etc/ntp/keys
    disable monitor
    EOF
    #同步hwclock
    cat >>/etc/sysconfig/ntpd<<EOF
    #Command line options for ntpd
    SYNC_HWCLOCK=yes
    OPTIONS="-g"
    EOF
    #使用ntpdate命令校验时间
    /usr/sbin/ntpdate 192.168.2.251 && /usr/sbin/hwclock -w
    /usr/bin/systemctl stop chronyd &> /dev/null
    /usr/bin/systemctl disable chronyd &> /dev/null
    /usr/bin/systemctl start ntpd &> /dev/null
    /usr/bin/systemctl enable ntpd &> /dev/null
    }
    
    #7.关闭THP
    function closeTHP(){
    cat >> /etc/rc.d/rc.local << EOF
    if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
      echo never > /sys/kernel/mm/transparent_hugepage/defrag
    fi
    if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
      echo never > /sys/kernel/mm/transparent_hugepage/enabled
    fi
    exit 0
    EOF
    chmod +x /etc/rc.d/rc.local
    }
    #8.配置hosts文件
    function hosts(){
    cat >> /etc/hosts << EOF
    192.168.1.101 node01
    192.168.1.102 node02
    192.168.1.103 node03
    192.168.1.104 node04
    192.168.1.105 node05
    EOF
    }
    
    #初始化方法
    function init(){
        yum;
        close_firewalld;
        close_selinux;
        optimization;
        add_user;
        ntp;
        closeTHP;
        hosts;
    }
    init

    使用ansible批量执行
    ansible ambari -m script -a /root/centos7.4.sh -f 5

    2.8 配置主机名

    sshpass -p 'Mvtech@123!' ssh -o StrictHostKeyChecking=no root@192.168.1.101 hostnamectl set-hostname node01
    sshpass -p 'Mvtech@123!' ssh -o StrictHostKeyChecking=no root@192.168.1.102 hostnamectl set-hostname node02
    sshpass -p 'Mvtech@123!' ssh -o StrictHostKeyChecking=no root@192.168.1.103 hostnamectl set-hostname node03 
    sshpass -p 'Mvtech@123!' ssh -o StrictHostKeyChecking=no root@192.168.1.104 hostnamectl set-hostname node04 
    sshpass -p 'Mvtech@123!' ssh -o StrictHostKeyChecking=no root@192.168.1.105 hostnamectl set-hostname node05

    2.9 配置主机互信

    使用ansible批量配置主机名互信

    ansible ambari -m shell -a "ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa" -f 5
    ansible ambari -m shell -a "cat /root/.ssh/id_rsa.pub" -f 5 > /tmp/authorized_keys
    sed -i '/SUCCESS/d' /tmp/authorized_keys
    ansible ambari -m copy -a "src=/tmp/authorized_keys dest=/root/.ssh/ owner=root group=root mode=0644" -f 5

    2.10 安装jdk1.7

    install.sh

    #!/bin/bash
    mkdir -p /usr/local/java
    tar -xvf jdk-7u80-linux-x64.gz -C /usr/local/java
    sed -i '$a export JAVA_HOME=/usr/local/java/jdk1.7.0_80' /etc/profile
    sed -i '$a export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar' /etc/profile
    sed -i '$a export PATH=$JAVA_HOME/bin:$PATH' /etc/profile

    批量执行

    ansible ambari -m copy -a "src=/root/jdk dest=/root/jdk" -f 5
    ansible ambari -m shell -a "cd /root/jdk && bash +x install.sh" -f 5

    2.11 拷贝ambari源、HDP源、HDP-UTILS源

    ansible ambari -m copy -a "src=/root/ambari.repo dest=/etc/yum.repos.d/ambari.repo " -f 5
    ansible ambari -m copy -a "src=/root/HDP.repo dest=/etc/yum.repos.d/HDP.repo " -f 5
    ansible ambari -m copy -a "src=/root/HDP-UTILS.repo dest=/etc/yum.repos.d/HDP-UTILS.repo " -f 5
    ansible ambari -m shell -a "yum clean all && yum makecache" -f 5

    2.12 拷贝mysql源至node01服务器中

    安装mysql-server用于ambari-server,hive
    yum install mysql-community-server-5.7.22

    修改/etc/my.cnf
    添加:区分大小写,和把连接数设为1000
    max_connections = 1024
    max_connect_errors = 1000
    启动:systemctl start mysqld
    开机自启动:systemctl enable mysqld
    首次登陆需要查看root密码:cat /var/log/mysqld.log | grep 'A temporary password'
    登陆后需要更新密码:ALTER user 'root'@'localhost' identified by 'Mvtech@123#';
    创建远程root用户:grant all privileges on *.* to root@"%" identified by "Mvtech@123#";
    select Grant_priv from user where user='root' and Host='%';
    update user set Grant_priv='Y' where user='root' and Host='%';
    创建ambari库:CREATE DATABASE `ambari` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
    刷新数据库:FLUSH PRIVILEGES;
    注:配置ambari-server时需要输入mysql密码,若密码中含有特殊字符则会报错,可通过修改以下配置进行修改mysql密码为简单的:123456
    注:mysql5.7密码策略修改
    set global validate_password_policy=0;
    set global validate_password_length=0;

    3 配置ambari

    3.1 ambari-server

    node01服务器上执行

    3.1.1 安装

    yum install ambari-server -y

    3.1.2 导入ambari库

    mysql> use ambari
    Database changed
    mysql>  source /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql;

    3.1.3 安装mysql jdbc包

    yum install mysql-connector-java-5.1.37-1.noarch 
    若报错则可这样执行:
    rpm -ivh http://192.168.2.252/HDP-UTILS-1.1.0.21/mysql-connector-java/mysql-connector-java-5.1.37-1.noarch.rpm

    3.1.4 配置ambari-server setup

    3.1.5 启动ambari-server 

    3.1.6 开机自启动

    chkconfig ambari-server on

    3.1.7 ambari-web登陆

    登陆成功:

    3.1.8 状态检查

    3.2 ambari-agent

     node02 node03 node04 node05上执行

    3.2.1 安装

    yum install ambari-agent -y

    3.2.2 开机启动

    chkconfig ambari-agent on

    3.3 配置集群

    3.3.1 ambari界面如下:点击 launch install wizard

    3.3.2 弹出下图输入集群名称:hdpCluster

    3.3.3 弹出下图:根据下图进行填写

    3.3.5 弹出下图

    3.3.6 弹出下图:点击ok

    3.3.7 弹出下图:confirm hosts

    报错:centos7.4会报失败的错误:
    
    错误信息:ERROR 2018-06-21 15:56:02,451 NetUtil.py:89 - SSLError: Failed to connect. Please check openssl library versions.
    
    可在ambari-agent 修改:/etc/python/cert-verification.cfg
    
    [https]
    
    #verify=platform_default
    
    verify=disable
    
    
    修改后重启agent: 点击retry

    3.3.8 通过界面:点击next

    3.3.9 弹出下图:选择角色

    3.3.10 弹出下图:proceed anyway

    3.3.11 弹出下图:选择角色所在的服务器 

     注:Metrics与其它组件不要装在一台机器上,因为Metrics内置了HBase和Zookeeper,容易产生问题。

    3.3.12 弹出下图,选择相应的角色

    3.3.13 根据提示执行

    切到hive页面时配置,注:需要在ambari-server上执行:ambari-server setup --jdbc-db=mysql --jdbc-driver=/usr/share/java/mysql-connector-java.jar 配置完毕后点击最下面的next

    3.3.14 弹出下图:点击deploy

    3.3.15 弹出下图

    3.3.16 待安装完毕:如下图

    3.3.17 弹出下图:点击完毕

    3.3.18 弹出下图:至此ambari-server安装完毕

    3.3.19 验证集群

    验证hdfs:hadoop fs -ls /

    验证hive:输入hive

    3.3.20 配置resource ha

    弹出下图选择:

     3.3.21 配置hdfs ha

     

    至此ambari配置hdp完毕。

    如有发现问题,欢迎留言指导,一起学习,一起进步。

  • 相关阅读:
    Js/Jquery获取iframe中的元素
    js常用技巧汇总
    jquery常用技巧
    Tomcat远程调试
    常用SQL
    CRM-stark组件
    面试题-linux基础
    vue2-通过axios实现数据请求
    Vue01
    面试题之python基础
  • 原文地址:https://www.cnblogs.com/sdhzdtwhm/p/9284414.html
Copyright © 2011-2022 走看看