CDH6.2.0安装

[集群分配]
ipaddr            hostname    ram    vhd    role
192.168.31.135    cluster1    8G    50G    cdh-master    ntp-server ansible mysql
192.168.31.136    cluster2    4G    50G    cdh-monitor mysql
192.168.31.137    cluster3    4G    50G    cdh-slave1    es-node
192.168.31.138    cluster4    4G    50G cdh-slave2    es-node
192.168.31.139    cluster5    4G    50G cdh-slave3    es-node
[参考]
    https://www.cnblogs.com/swordfall/p/10816797.html#auto_id_11
    
[环境准备]
    免密登录
    NTP时间同步
    [可选]Ansible批量工具
    修改Linux swappiness参数(所有节点)
        为了避免服务器使用swap功能而影响服务器性能,一般都会把vm.swappiness修改为0(cloudera建议10以下)
        #ansible cdh-cluster -m shell -a "echo 0 > /proc/sys/vm/swappiness"
        修改配置文件
        #ansible cdh-cluster -m shell -a "echo 'vm.swappiness=0' >> /etc/sysctl.conf"
        *上述方法rhel6有效,rhel7.2中:tuned服务会动态调整系统参数
        #cd /usr/lib/tuned/
        #grep "vm.swappiness" * -R
            latency-performance/tuned.conf:vm.swappiness=10
            throughput-performance/tuned.conf:vm.swappiness=10
            virtual-guest/tuned.conf:vm.swappiness = 30
        vi修改列出的所有文件对应参数
        将配置文件发送至其他节点
        #for i in {2..5};do scp latency-performance/tuned.conf cluster$i:$PWD/latency-performance/;done
        #for i in {2..5};do scp throughput-performance/tuned.conf cluster$i:$PWD/throughput-performance/;done
        #for i in {2..5};do scp virtual-guest/tuned.conf cluster$i:$PWD/virtual-guest/;done
        检查是否已全部修改
        #ansible cdh-cluster -m shell -a "grep 'vm.swappiness' /usr/lib/tuned/* -R"
        
    禁用透明页(所有节点)
        临时生效
        #echo never > /sys/kernel/mm/transparent_hugepage/defrag
        #echo never > /sys/kernel/mm/transparent_hugepage/enabled
        永久生效 在/etc/rc.local 添加上面命令
        #cat << EOF >> /etc/rc.local
        >echo never > /sys/kernel/mm/transparent_hugepage/defrag
        >echo never > /sys/kernel/mm/transparent_hugepage/enabled
        >EOF
        配置文件发送至各节点
        #for i in {2..5};do scp /etc/rc.local cluster$i:/etc/;done
        添加可执行权限
        #ansible cdh-cluster -m shell -a "chmod +x /etc/rc.d/rc.local"
        
    MySQL安装包
        官网下载mysql-8.0.17-1.el7.x86_64.rpm-bundle.tar
        官网下载mysql-connector-java-8.0.17.tar.gz
        在可连外网的机器上准备mysqlPacks.tar.gz
            #mkdir /opt/repo/MySQL8.0.17/RPMS/packs
            #yum install -y net-tools perl openssl openssl-devel --downloadonly --downloaddir=/opt/repo/MySQL8.0.17/RPMS/packs
        打包packs
            #tar -cvf mysqlPacks.tar.gz /opt/repo/MySQL8.0.17/RPMS/packs
    
    Httpd安装包
        创建本地存储目录
        #mkdir /opt/repo/httpd
        在可连外网的机器上下载httpd安装包
        #yum install -y httpd --downloadonly --downloaddir=/opt/repo/httpd
        打包
        #tar -cvf httpd.tar.gz /opt/repo/httpd
        
    Createrepo安装包(CDH依赖)
        官网allkeys.asc下载
            https://archive.cloudera.com/cm6/6.2.0/
                allkeys.asc
        官网rpm包下载
            https://archive.cloudera.com/cm6/6.2.0/redhat7/yum/
                RPM-GPG-KEY-cloudera
                cloudera-manager.repo
            https://archive.cloudera.com/cm6/6.2.0/redhat7/yum/RPMS/x86_64/
                cloudera-manager-agent-6.2.0-968826.el7.x86_64.rpm
                cloudera-manager-daemons-6.2.0-968826.el7.x86_64.rpm
                cloudera-manager-server-6.2.0-968826.el7.x86_64.rpm
                cloudera-manager-server-db-2-6.2.0-968826.el7.x86_64.rpm
                enterprise-debuginfo-6.2.0-968826.el7.x86_64.rpm
                oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm
        官网parcels下载
            https://archive.cloudera.com/cdh6/6.2.0/parcels/
                CDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel
                CDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel.sha1
                CDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel.sha256
        创建本地存储目录
        #mkdir /opt/repo/createrepo
        在可连外网的机器上下载createrepo安装包
        #yum install -y yum-utils createrepo --downloadonly --downloaddir=/opt/repo/createrepo
        打包
        #tar -cvf createrepo.tar.gz /opt/repo/createrepo
        添加cdh官方yum源cloudera-manager.repo
        #cp cloudera-manager.repo /etc/yum.repos.d/
        导入GPGkey
        $rpm --import /opt/repo/cdh6.2.0/RPM-GPG-KEY-cloudera
        创建本地存储目录
        #mkdir /opt/repo/cdh6.2.0/RPMS/packs
        在可连外网的机器上下载cdh依赖安装包
        #yum install -y cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server --downloadonly --downloaddir=/opt/repo/cdh6.2.0/RPMS/packs
        packs文件夹和cdh一起打包即可
[安装部署]
    [JDK]
        所有节点安装JDK
        #ansible cdh-cluster -a "rpm -ivh /opt/repo/cdh6.2.0/RPMS/oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm"
        修改主节点环境配置文件,添加环境变量
        #cat << EOF >> /etc/profile
        >
        > #JAVA
        > export JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera
        > export CLASSPATH=.:\$CLASSPATH:\$JAVA_HOME/lib
        > export PATH=\$PATH:\$JAVA_HOME/bin
        > EOF
        将配置文件发送至其他节点
        #for i in {2..5};do scp /etc/profile cluster$i:/etc/;done
        所有节点重新加载环境变量(由于ansible执行的是non-login shell,因此ansible操作只刷新/etc/bashrc和~/.bashrc, 若将环境变量写在/etc/profile时则不能用ansible加载,只能执行重启让系统自动加载)
        #ansible cdh-cluster -a "reboot"
        添加java命令软链接至/usr/bin/
        ansible cdh-cluster -m shell -a "ln -s /usr/java/jdk1.8.0_181-cloudera/bin/java /usr/bin/java"
        检查安装是否成功
        #ansible cdh-cluster -m shell -a "java -version"
    
    [MySQL8]主节点+监控节点(视集群资源而定)
        卸载系统自带的mariadb
        #rpm -qa | grep mariadb
        #rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64
        解压安装包
        #cd /opt/repo/MySQL8.0.17
        #mkdir RPMS
        #tar -xvf mysql-8.0.17-1.el7.x86_64.rpm-bundle.tar -C RPMS
        #tar -xvf mysqlPacks.tar.gz -C RPMS
        文件安装顺序:common --> libs --> client --> server --> devel。
        其中server需要perl和net-tools依赖,devel需要openssl-devel依赖
        rpm -ivh mysql-community-common-8.0.17-1.el7.x86_64.rpm
        rpm -ivh mysql-community-libs-8.0.17-1.el7.x86_64.rpm
        rpm -ivh mysql-community-libs-compat-8.0.17-1.el7.x86_64.rpm
        rpm -ivh mysql-community-client-8.0.17-1.el7.x86_64.rpm
        rpm -ivh packs/perl*.rpm
        rpm -ivh packs/net-tools*.rpm
        rpm -ivh mysql-community-server-8.0.17-1.el7.x86_64.rpm
        rpm -ivh packs/keyutils-libs-devel-1.5.8-3.el7.x86_64.rpm
        rpm -ivh packs/libcom_err-devel-1.42.9-13.el7.x86_64.rpm
        rpm -Uvh packs/libkadm5-1.15.1-37.el7_6.x86_64.rpm
        rpm -ivh packs/libsepol-devel-2.5-10.el7.x86_64.rpm
        rpm -ivh packs/pcre-devel-8.32-17.el7.x86_64.rpm
        rpm -Uvh packs/libselinux-devel-2.5-14.1.el7.x86_64.rpm
        rpm -ivh packs/libverto-devel-0.2.5-4.el7.x86_64.rpm
        rpm -Uvh packs/krb5-libs-1.15.1-37.el7_6.x86_64.rpm
        rpm -ivh packs/krb5-devel-1.15.1-37.el7_6.x86_64.rpm
        rpm -ivh packs/zlib-devel-1.2.7-18.el7.x86_64.rpm
        rpm -Uvh packs/openssl-libs-1.0.2k-16.el7_6.1.x86_64.rpm packs/openssl-1.0.2k-16.el7_6.1.x86_64.rpm
        rpm -ivh packs/openssl-devel-1.0.2k-16.el7_6.1.x86_64.rpm
        rpm -ivh mysql-community-devel-8.0.17-1.el7.x86_64.rpm
        MySQL初始化安装 初始化mysql,使MySQL目录的拥有者为mysql用户
        #mysqld --initialize --user=mysql
        开启mysql服务
        #systemctl enable mysqld
        #systemctl start mysqld
        查看自动生成的初始密码
        #grep "temporary password" /var/log/mysqld.log
        使用初始密码登录mysql并修改mysql密码
        #mysql -uroot -p
        >ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
        开启远程连接权限
        >CREATE USER 'root'@'%' IDENTIFIED BY 'root';
        >ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
        >FLUSH PRIVILEGES;
        >quit
        
        基于以上命令写了两个脚本
        mysqlInstall.sh 脚本执行路径为/opt/repo/MySQL8.0.17/RPMS文件夹下,即可自动完成安装
            #/bin/sh
            rpm -ivh mysql-community-common-8.0.17-1.el7.x86_64.rpm
            rpm -ivh mysql-community-libs-8.0.17-1.el7.x86_64.rpm
            rpm -ivh mysql-community-libs-compat-8.0.17-1.el7.x86_64.rpm
            rpm -ivh mysql-community-client-8.0.17-1.el7.x86_64.rpm
            rpm -ivh packs/perl*.rpm
            rpm -ivh packs/net-tools*.rpm
            rpm -ivh mysql-community-server-8.0.17-1.el7.x86_64.rpm

            rpm -ivh packs/keyutils-libs-devel-1.5.8-3.el7.x86_64.rpm
            rpm -ivh packs/libcom_err-devel-1.42.9-13.el7.x86_64.rpm
            rpm -ivh packs/libkadm5-1.15.1-37.el7_6.x86_64.rpm
            rpm -ivh packs/libsepol-devel-2.5-10.el7.x86_64.rpm
            rpm -ivh packs/pcre-devel-8.32-17.el7.x86_64.rpm
            rpm -Uvh packs/libselinux-devel-2.5-14.1.el7.x86_64.rpm
            rpm -ivh packs/libverto-devel-0.2.5-4.el7.x86_64.rpm
            rpm -ivh packs/krb5-libs-1.15.1-37.el7_6.x86_64.rpm
            rpm -ivh packs/krb5-devel-1.15.1-37.el7_6.x86_64.rpm
            rpm -ivh packs/zlib-devel-1.2.7-18.el7.x86_64.rpm
            rpm -Uvh packs/openssl-libs-1.0.2k-16.el7_6.1.x86_64.rpm packs/openssl-1.0.2k-16.el7_6.1.x86_64.rpm
            rpm -ivh packs/openssl-devel-1.0.2k-16.el7_6.1.x86_64.rpm
            rpm -ivh mysql-community-devel-8.0.17-1.el7.x86_64.rpm

            mysqld --initialize --user=mysql
        mysqlInit.sh 脚本路径不影响,可以自定义修改新密码
            #!/bin/sh
            NEW_PASSWORD=root
            
            systemctl enable mysqld
            systemctl start mysqld

            line=`grep "temporary password" /var/log/mysqld.log`
            INIT_PASSWORD=${line##*root@localhost\: }
            echo "MySQL temporary password is: $INIT_PASSWORD"
            cat > ~/.my.cnf << EOF
            [mysql]
            user=root
            password="$INIT_PASSWORD"
            EOF

            mysql --connect-expired-password -e "
              ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '$NEW_PASSWORD';
              CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '$NEW_PASSWORD';
              FLUSH PRIVILEGES;
              quit
            "
            cat > ~/.my.cnf << EOF
            [mysql]
            user=root
            password="$NEW_PASSWORD"
            EOF
            
            
            echo "MySQL new password is: root"
            echo "Enable remote access success."
            
        CDH数据库初始化,为每个服务创建用户,设置权限(后续安装服务时使用)
            库            用户                密码
            cmserver    cmserveruser    root
            metastore    hiveuser        root
            amon        amonuser        root
            rman        rmanuser        root
            oozie        oozieuser        root
            hue            hueuser            root
            建库语句: CREATE DATABASE IF NOT EXISTS 库名 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
            建用户语句: CREATE USER '用户名'@'%' IDENTIFIED WITH mysql_native_password BY '密码';
            设置权限语句: GRANT ALL ON 库名.* TO '用户名'@'%';
            基于以上编写脚本mysqlCDHInit.sh
            #/bin/sh
            DB_LIST=(cmserver metastore amon rman oozie hue)
            USER_LIST=(cmserveruser hiveuser amonuser rmanuser oozieuser hueuser)
            PASSWORD_LIST=(root root root root root root)
            for ((i=0; i<${#DB_LIST[@]}; i++))
            do
              mysql --connect-expired-password -e "
                CREATE DATABASE IF NOT EXISTS ${DB_LIST[i]} DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
                CREATE USER '${USER_LIST[i]}'@'%' IDENTIFIED WITH mysql_native_password BY '${PASSWORD_LIST[i]}';
                GRANT ALL ON ${DB_LIST[i]}.* TO '${USER_LIST[i]}'@'%';
                FLUSH PRIVILEGES;
              "
            done
    [MySQL8 JDBC-conector]所有节点放置mysql-connector-java-8.0.17.jar
        主上解压mysql-connector
        #cd /opt/repo/MySQL8.0.17/
        #tar -xvf mysql-connector-java-8.0.17.tar.gz
        提取mysql-connector-java-8.0.17.jar
        #mv mysql-connector-java-8.0.17/mysql-connector-java-8.0.17.jar ./
        删除解压的其他文件(仅需要jar包)
        #rm -rf mysql-connector-java-8.0.17
        所有节点建立目录
        #ansible cdh-cluster -a "mkdir /usr/share/java"
        传输jar包至所有节点对应目录,并重命名(不然cdh脚本无法识别)
        for i in {1..5};do scp mysql-connector-java-8.0.17.jar cluster$i:/usr/share/java/mysql-connector-java.jar;done
    [HTTP]所有点安装Httpd服务
        上传压缩包至路径并解压
        #tar -xvf httpd
        发送文件至个节点
        #for i in {2..5};do scp -r /opt/repo/httpd cluster$i:/opt/repo/;done
        所有安装httpd
        #ansible cdh-cluster -a "rpm -ivh /opt/repo/httpd/*"
        修改配置文件
        #vi /etc/httpd/conf/httpd.conf
            <Directory "/var/www/cgi-bin">
                AllowOverride None
                #Options None
                #Require all granted
                Options FollowSymLinks
                Order deny,allow
                allow from all
            </Directory>
        配置文件发送至各节点
        #for i in {2..5};do scp /etc/httpd/conf/httpd.conf cluster$i:/etc/httpd/conf/;done
        启动服务
        #ansible cdh-cluster -a "systemctl start httpd"
        #ansible cdh-cluster -a "systemctl enable httpd"
    [CDH RPM包安装]防止出现莫名错误,所有节点事先安装依赖包
        [主节点设置本地yum源]
        解压createrepo
        #tar -xvf createrepo.tar.gz
        安装createrepo
        #rpm -Uvh /opt/repo/createrepo/*.rpm
        创建本地源地址
        #mkdir -p /var/www/html/cloudera-repos/cdh6.2.6
        复制rpm包到本地源目录
        #cp /opt/repo/cdh6.2.0/RPMS/*.rpm /var/www/html/cloudera-repos/cdh6.2.0/
        #cd /var/www/html/cloudera-repos/cdh6.2.6/
        创建repodata
        #createrepo .
            成功显示如下
            Spawning worker 0 with 6 pkgs
            Workers Finished
            Saving Primary metadata
            Saving file lists metadata
            Saving other metadata
            Generating sqlite DBs
            Sqlite DBs complete
        导入GPGkey
        #ansible cdh-cluster -a "rpm --import /opt/repo/cdh6.2.0/RPM-GPG-KEY-cloudera"
        复制allkeys.asc
        $cp /opt/repo/cdh6.2.0/allkeys.asc /var/www/html/cloudera-repos/cdh6.2.0/
        复制manifest.json
        #cp /opt/repo/cdh6.2.0/RPMS/manifest.json /var/www/html/cloudera-repos/cdh6.2.0/
        此时检查文件是否齐全
        #ls /var/www/html/cloudera-repos/cdh6.2.0/
            allkeys.asc
            cloudera-manager-agent-6.2.0-968826.el7.x86_64.rpm
            cloudera-manager-daemons-6.2.0-968826.el7.x86_64.rpm
            cloudera-manager-server-6.2.0-968826.el7.x86_64.rpm
            cloudera-manager-server-db-2-6.2.0-968826.el7.x86_64.rpm
            enterprise-debuginfo-6.2.0-968826.el7.x86_64.rpm
            manifest.json
            oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm
            repodata
        安装依赖包
        #ansible cdh-cluster -a "rpm -ivh /opt/repo/cdh6.2.0/RPMS/cloudera-manager-daemons-6.2.0-968826.el7.x86_64.rpm"
        #ansible cdh-cluster -a "rpm -Uvh /opt/repo/cdh6.2.0/RPMS/packs/*"
        将parcels移动至安装好的cloudera目录下
        #ansible cdh-cluster -m shell -a "mv /opt/repo/cdh6.2.0/parcels/* /opt/cloudera/parcel-repo/"
        验证parcel文件完整性
        #ansible cdh-cluster -m shell -a "cd /opt/cloudera/parcel-repo/ && sha1sum CDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel | awk '{ print $1 }' > CDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel.sha"
        修改parcel文件所属用户
        #ansible cdh-cluster -m shell -a "chown cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo/*"
        主节点初始化安装脚本(password替换为之前设置的mysql中cmserveruser的密码,本文是root)
        #/opt/cloudera/cm/schema/scm_prepare_database.sh mysql cmserver cmserveruser password
            成功显示如下
            All done, your SCM database is configured correctly!
        打开cloudera-scm-server服务
        #systemctl start cloudera-scm-server
        *自选 开启开机自动启用cloudera-scm-server服务
        #systemctl enable cloudera-scm-server
        静候几分钟,浏览器打开 http://cluster1:7180 若本机没配置hosts文件的集群地址映射最好配上,不然后续cdh组件服务切换节点时无法访问
            Windows系统hosts文件路径:C:\Windows\System32\drivers\etc
            Linux系统hosts文件路径:/etc/hosts
            文件末尾添加集群主机名信息,如:
                192.168.31.135 cluster1
                192.168.31.136 cluster2
                192.168.31.137 cluster3
                192.168.31.138 cluster4
                192.168.31.139 cluster5
    [CM GUI建立集群]
        http://cluster1:7180登录页面初始超管用户为admin 密码admin
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值