美文网首页
cdh5.7.2+cento6.8集群搭建(虚拟机)

cdh5.7.2+cento6.8集群搭建(虚拟机)

作者: liujm | 来源:发表于2017-07-10 11:13 被阅读0次

    1 所需安装包以及下载地址

    1.1 操作系统

    版本:CentOS 6.8
    CDH Parcel文件下载地址

    cdh安装包

    下载的文件CDH-5.7.2-1.cdh5.7.2.p0.18-el6.parcel.sha1,扩展名改为sha
    注:其中el6表示系统版本6[对应centos6]

    1.2 rpm文件

    下载地址:
    rpm文件

    cloudera-manager安装包

    注:总共七个文件,jdk-6u31-linux-amd64.rpm可以不用下载

    1.3 mysql-jdbc

    注意:不要使用yum来安装mysql驱动,这样会默认加载了openjdk,会cdh不兼容openjdk
    下载地址:mysql驱动

    1.4 jdk

    jdk-7u67-linux-x64.rpm[官网]

    2 主机基础配置(使用root配置)

    如果使用非root用户,需要配置

    添加新用户设置用户密码,并设置该用户为免密码sudo权限

    #adduser  xxxx   //添加一个名为xxxx的用户
    #passwd  xxxx   //修改密码
    

    修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示:

    ## Allow root to run any commands anywhere
    root    ALL=(ALL)     ALL
    xxxxx   ALL=(ALL)     NOPASSWD: ALL
    
    
    配置hadoop为免密sudo用户

    2.1 每台机器配置hosts

    2.1.1 修改 hostname

    sudo  vi  /etc/sysconfig/network 
    NETWORKING=yes
    NETWORKING_IPV6=no
    HOSTNAME=master   //修改HOSTNAME值
    
    
    master 设置 hostname slave1 设置 hostname

    2.1.2 重启网络服务生效

    service network restart
    

    2.1.3 修改 ip 与主机名的对应关系(每一台机)

    sudo vi /etc/hosts
    
    hosts修改图

    2.2 ssh免密码登陆

    2.2.1 生成密码对(所有节点)

    ssh-keygen  -t  rsa
    

    生成其无密码密钥对,一路回车键,生成的密钥对:id_rsa和id_rsa.pub,默认存储在~/.ssh"目录

    密钥生成结果

    2.2.2 让master能够免密登录其余节点

    cat  ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys#把id_rsa.pub追加到授权的key里面去
    chmod  644  ~/.ssh/authorized_keys#
    scp  ~/.ssh/ authorized_keys  xxxx@hostnamexxx:~/.ssh#注:如若没有scp命令,安装yum install openssh-clients
    

    如果希望可以每一个节点都可以免密码登录,也可以对其他节点重复此操作,但是不建议

    免密码登录设置

    检查下authorized_keys传到其他机器后的权限是否为644,不是则改为644,测试是否设置成功:在主节点上ssh hostname[1~3],若不需要密码就能直接登陆进去了表示配置成功。

    ssh slave1
    

    2.3 关闭防火墙(每一个节点)

    sudo  service iptables stop#临时关闭
    sudo  chkconfig iptables off#重启后生效
    
    关闭防火墙

    2.4 关闭SELINUX(每一个节点)

    修改/etc/selinux/config 文件的 SELINUX=disabled #重启生效
    查看 SELINUX 状态:

    关闭SELINUX
    /usr/sbin/sestatus –v
    #SELinux status: enabled( enabled:开启; disabled:关闭)
    #========重启系统(如果已关闭可不用重启)============
    
    检查SELINUX状态

    2.5 安装jdk[每一个节点]

    注意如果采取其他安装,建议java解压目录要在/usr/java,不然cloudera manager 容易找不到jdk

    官网的安装jdk步骤
    rpm -ivh jdk-7u67-linux-x64.rpm
    
    安装jdk

    进入/etc/profile,修改环境变量

    export JAVA_HOME=/usr/java/default
    export PATH=$JAVA_HOME/bin:$PATH
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    
    修改环境变量

    2.6 配置ntp

    master节点作为ntp服务器与外界对时中心同步时间,
    随后对所有datanode节点提供时间同步服务,所有datanode节点以master节点为基础同步时间。
    所有节点安装相关组件

    sudo  yum install ntp
    

    所有节点配置开机启动

    sudo  chkconfig ntpd on
    

    检查是否设置成功

    sudo  chkconfig --list ntpd #其中2-5为on状态就代表成功
    

    2.6.1 主节点设置:

    #sudo vi  /etc/ntp.conf 进入文件
    server 0.cn.pool.ntp.org perfer
    server 1.asia.pool.ntp.org
    server 3.asia.pool.ntp.org
    server ntp.sjtu.edu.cn   
    
    
    主节点与外界时间中心同步时间

    2.6.2 slave节点设置:

    #sudo vi  /etc/ntp.conf 进入文件
    server master
    
    slave节点根据master同步时间

    保存退出

    sudo  ntpdate -u 202.112.29.82 
    sudo  ntpdate -u 202.120.2.101 #请先使用ntpdate手动同步一下时间[每个节点]
    sudo  service  ntpd  restart #配置完成后启动服务[每个节点]
    sudo  ntpdate  -u  master#slave节点以master节点为基础同步时间。
    sudo  ntpstat #查看同步效果
    
    检查同步状态
    注:如果ntpstat状态未同步,可以等待5~10分钟再查看。
    5到10分钟后 检查同步状态

    3.Cloudera Manager安装


    安装文件:
    cloudera-manager-agent-5.7.2-1.cm572.p0.17.el6.x86_64.rpm #主节点安装,slave安装(可选)
    cloudera-manager-daemons-5.7.2-1.cm572.p0.17.el6.x86_64.rpm #主节点安装,slave安装(可选)
    cloudera-manager-server-5.7.2-1.cm572.p0.17.el6.x86_64.rpm #主节点安装
    cloudera-manager-server-db-2-5.7.2-1.cm572.p0.17.el6.x86_64.rpm #主节点安装,内置数据库,可选
    enterprise-debuginfo-5.7.2-1.cm572.p0.17.el6.x86_64.rpm


    3.1 master安装

    在master 节点安装daemons、server、agent(先装daemons)

    yum --nogpgcheck localinstall cloudera-manager-daemons-5.7.2-1.cm572.p0.17.el6.x86_64.rpm
    yum --nogpgcheck localinstall cloudera-manager-server-5.7.2-1.cm572.p0.17.el6.x86_64.rpm
    yum --nogpgcheck localinstall cloudera-manager-agent-5.7.2-1.cm572.p0.17.el6.x86_64.rpm#注:agent安装需要联网
    

    3.2 slave安装

    在节点安装daemons、agent(先装daemons)

    yum --nogpgcheck localinstall cloudera-manager-daemons-5.7.2-1.cm572.p0.17.el6.x86_64.rpm
    yum --nogpgcheck localinstall cloudera-manager-agent-5.7.2-1.cm572.p0.17.el6.x86_64.rpm#注:agent安装需要联网
    
    

    3.3 配置主节点以及其他节点agent的config.ini文件

    在每个 Cloudera Manager Agent 主机上,通过在
    /etc/cloudera-scm-agent/config.ini 配置文件中设置以下属性,
    配置 Cloudera Manager Agent 以指向 Cloudera Manager Server

    #sudo vi /etc/cloudera-scm-agent/config.ini 进入文件
    server_host=master
    
    设置server_host

    4 Master安装mysql 并配置权限等。

    需要配置数据库,此教程选用最常用的mysql,其中oozie服务包括工作流的信息,可能导致数据会增加很多
    安装mysql并检查服务

    yum install mysql-server mysql mysql-deve #注:需要联网
    chkconfig mysqld on
    service mysqld start
    

    进入mysq密码配置

    mysql –u root
    use mysql
    update user set password=password('hadoop') where user='root';
    update user set password=password('hadoop') where host='localhost';
    update user set password=password('hadoop') where host='master';
    

    重启服务

    service mysqld restart
    

    配置数据库权限

    mysql -u root -phadoop
    create database cloudera
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
    flush privileges;
    

    5 在master节点配置cloudera manager 数据库并启动cm的server及agent程序

    master操作步骤

    1. 拷贝mysql-connector-java-3.1.14-bin.jar 到 /usr/share/java 下并重命名mysql-connector-java.jar
    2. 运行
    /usr/share/cmf/schema/scm_prepare_database.sh -h master mysql cloudera root hadoop
    
    1. 启动cm server
    service cloudera-scm-server start
    
    1. 添加cm server服务
    chkconfig cloudera-scm-server on
    
    1. 启动cm agent
    sudo service cloudera-scm-agent start
    
    1. 添加cm agent服务
    chkconfig cloudera-scm-agent on
    
    启动cm

    slave节点上重复其中两步

    1. 启动cm agent
    sudo service cloudera-scm-agent start
    
    1. 添加cm agent服务
    chkconfig cloudera-scm-agent on
    

    6 CDH5 安装[这一步所需时间较长]

    sudo service httpd start #在master启动http,能够后面找到对应的parcel包
    

    将下载的parcel文件及官方网站上获取对应版本的 sha 文件和 manifest.json文件上传至/opt/cloudera/parcel-repo目录下。


    parcel应该放在/opt/cloudera/parcel-rep

    启动浏览器,开始集群web安装配置
    Master:7180 => 192.168.75.141:7180 账号:admin 密码admin

    web配置界面 选择Cloudera Express 继续 勾选管理的机器 安装CDH及某些服务
    cdhparcel包已经放到对应的库, 不需要下载,其他的服务下载速度较慢,如果时间不那么充足可以日后再下载和添加服务 检查审核
    #针对第一个警告
    echo 'vm.swappiness=10'>> /etc/sysctl.conf  
    #针对第二个警告
    echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag 
    echo 'echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag' >> /etc/rc.local
    
    预防警告 勾选所有服务

    选择所有服务

    此次安装使用默认角色

    角色分配,此处使用默认

    测试数据库连接
    #需要预先建立测试数据库,重新运行
    create database hive character set utf8;
    create database oozie  character set utf8;
    
    
    测试数据库连接 集群设置 监控界面 集群使用情况

    因为虚拟机内存和空间不够,导致一些警告某些监控无法完全安装成功。
    此外,启动所有服务那一步安装时间非常长,耐心等待。

    7 测试组件

    7.1 验证MR程序

    # 添加用户和组
    groupadd cdh-dev
    useradd -g cdh-dev cdh-dev
    lid cdh-dev
    
    # hadoop创建相应的用户
    sudo -u hdfs hdfs dfs -mkdir /user/cdh-dev
    sudo -u hdfs hdfs dfs -chown cdh-dev:cdh-dev /user/cdh-dev
    
    # 运行wordcount程序
    su - cdh-dev
    echo "Hello world Bye world" > file0
    echo "Hello hadoop Goodbye hadoop" > file1
    hdfs dfs -mkdir -p /user/cdh-dev/wordcount/input
    hdfs dfs -put file* /user/cdh-dev/wordcount/input
    hadoop jar /opt/cloudera/parcels/CDH/jars/hadoop-examples.jar wordcount wordcount/input wordcount/output
    hdfs dfs -getmerge wordcount/output output.txt
    
    cat output.txt
    

    7.2 验证hive

    su - cdh-dev
    echo "Alex, Cloudera" > hive-data
    echo "fd, jinz" >> hive-data
    hdfs dfs -mkdir -p hive/table-data-files
    hdfs dfs -put hive-data hive/table-data-files
    vi hive-data.sql
    
    create external table test(
    name string,
    company string
    )
    row format delimited
    fields terminated by ','
    stored as textfile
    location '/user/cdh-dev/hive/table-data-files'
    
    hive -f hive-data.sql
    hive -e "select * from test"
    
    hive测试结果

    7.3 验证HBase

    create 'record', {NAME => 'user'}
    put 'record', 'Alex', 'user:company', 'Cloudera'
    get 'record', 'Alex'
    
    hbase测试结果
    # 用vi创建文件 hbase_on_hive.hql
    create external table hbase_on_hive(
    name string,
    company string
    )
    stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
    with serdeproperties ( "hbase.columns.mapping" = ":key, user:company" )
    tblproperties ( "hbase.table.name" = "record" );
    
    
    hive -f hbase_on_hive.hql
    hive -e "select * from hbase_on_hive" 
    
    hbase测试结果

    附录监控界面

    192.168.75.141 - master

    • 整体监控界面:http://192.168.75.141:7180
    • 集群任务管理监控界面:http://192.168.75.141:8088
    • hive监控界面:http://192.168.75.141:10002/
    • spark监控界面:http://192.168.75.141:18088/
    • hue使用界面:http://192.168.75.141:8888
    • hdfs监控界面:http://192.168.75.141:50070

    相关文章

      网友评论

          本文标题:cdh5.7.2+cento6.8集群搭建(虚拟机)

          本文链接:https://www.haomeiwen.com/subject/nmdyhxtx.html