• CDH集群安装


    1 软硬件准备

    1.1 准备三个节点

    序号 主机名 内存 CPU IP地址 角色
    1 cdh1 8G 8核心 192.168.5.78 cloudera-scm-server,mysql
    2 cdh2     4G 8核心 192.168.5.79 cloudera-scm-agent
    3 cdh2 4G 8核心 192.168.5.80 cloudera-scm-agent

    1.2 软件版本信息

    OS:RedHat EL 6.5
    CDH: 5.6.0
    Java:1.7
    MySQL:5.6
     

    2 主机环境准备

     
    说明: 以下操作默认在节点1上面, 如果在节点2和节点3上操作会特别说明。
     

    2.1 搭建yum源

    (1)、挂载系统镜像
    1. [root@hadoop1 ~]# mount /dev/cdrom /mnt
    (2)、配置yum源
    编辑/etc/yum.repos.d/rhel-source.repo配置文件:
    1. [root@hadoop1 yum.repos.d]# cat rhel-source.repo
    2. [rhel-source]
    3. name=RedHat
    4. baseurl=file:///mnt
    5. enabled=1
    6. gpgcheck=0
     
     
    (3)、设置缓存和验证
    1. [root@hadoop1 yum.repos.d]# yum clean all
    2. [root@hadoop1 yum.repos.d]# yum makecache
    3. [root@hadoop1 yum.repos.d]# yum list | more
     
     
    (4)、安装上传工具rz和sz
    1. [root@hadoop1 yum.repos.d]# yum whatprovides \*rz
    2. [root@hadoop1 yum.repos.d]# yum install lrzsz-0.12.20-27.1.el6.x86_64 -y
     
     

    2.2 配置JDK

    (1)、卸载本机的Open JDK信息
    1. [root@hadoop1 ~]# java -version
    2. [root@hadoop1 ~]# rpm -qa | grep java
    3. [root@hadoop1 ~]# rpm -e --nodeps java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64
    4. [root@hadoop1 ~]# rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64
    5. [root@hadoop1 ~]# rpm -e --nodeps tzdata-java-2013g-1.el6.noarch
     
     
    (2)、上传JDK安装包并解压
    1. [root@hadoop1 java]# mkdir /usr/java
    2. [root@hadoop1 java]# tar -xzvf jdk-7u79-linux-x64.tar.gz -C /usr/java/
    3. [root@hadoop1 data]# cd /usr/java/
    4. [root@hadoop1 java]# mv jdk1.7.0_79 default
     
     
    注意: JDK一定要解压到/usr/java/default下面,即JAVA_HOME= /usr/java/default, 否则CDH的后续安装将会报错(通过日志发现必须指定到此目录,可能其他的CM版本不需要)。
     
    (3)、配置环境变量
    编辑/etc/profile, 加入如下内容:
    1. [root@hadoop1 default]# vim /etc/profile
    2. export JAVA_HOME=/usr/java/default
    3. export JRE_HOME=/usr/java/default/jre
    4. export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
    5. export PATH=$JAVA_HOME/bin:$PATH
     
     
    使用环境变量配置马上生效:
    1. [root@hadoop1 default]# source /etc/profile
     
    (4)、将节点1的Java传到其他节点并配置环境变量
        在节点2和节点3上分别新建目录/usr/java/default, 将节点1的目录/usr/java/default下的文件传到节点2和节点3的目录/usr/java/default:
       
    1. [root@hadoop1 default]# scp -r /usr/java/default/* root@192.168.5.79:/usr/java/default/
    2. [root@hadoop1 default]# scp -r /usr/java/default/* root@192.168.5.80:/usr/java/default/
     
    配置环境变量:
    1. [root@hadoop2 default]# tail -4/etc/profile
    2. export JAVA_HOME=/usr/java/default
    3. export JRE_HOME=/usr/java/default/jre
    4. export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
    5. export PATH=$JAVA_HOME/bin:$PATH
    (5)、验证
     

    2.3 修改主机名

    (1)、在所有节点修改配置文件/etc/sysconfig/network
    其中cdh1为主机名, 其他节点也修改为对应的主机名称。
     
    (2)、在所有节点的/etc/hosts加入域名解析
    1. [root@hadoop1 default]# cat /etc/hosts
    2. 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
    3. ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
    4. 192.168.5.78 cdh1
    5. 192.168.5.79 cdh2
    6. 192.168.5.80 cdh3
    然后每个节点主机执行:hostname 主机名,比如节点1执行:# hostname cdh1
     
    (3)、测试主机名是否正常解析
     

    2.4 配置SSH免密码认证

    在主信任机cloudera-scm-server(192.168.5.78)生成key, 并将key分发到各个节点。
    (1)、生成key
    1. [root@cdh1 ~]#/usr/bin/ssh-keygen -t rsa -N ""
     
    (2)、分发key到各个节点上
    1. # cat /root/.ssh/id_rsa.pub | ssh 192.168.5.78 'cat >> .ssh/authorized_keys'
    2. # cat /root/.ssh/id_rsa.pub | ssh 192.168.5.79 'cat >> .ssh/authorized_keys'
    3. # cat /root/.ssh/id_rsa.pub | ssh 192.168.5.80 'cat >> .ssh/authorized_keys' (注意, 本机也要做免密码认证)
     
    (3)、验证免密码认证
     
     

    2.5 关闭防火墙

    在所有节点执行如下步骤:
    (1)、关闭iptables
    1. # service iptables stop
    2. # chkconfig iptables off
    3. # chkconfig --list | grep iptables
     
    (2)、关闭selinux
    1. # vim /etc/sysconfig/selinux
    2. # setenforce 0
     
     
     

    2.6 配置内核参数

    在所有节点执行如下步骤:
    (1)、在所有节点修改内核参数(涉及主机检查):
    1. # echo 0 > /proc/sys/vm/swappiness
    2. # echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag
     
    以上参数,重启后可能会丢失。
    (2)、修改系统编码格式
    1. # vim /etc/sysconfig/i18n
    2. LANG="en_US.UTF-8"
    3. SYSFONT="latarcyrheb-sun16"
     
     
     

    2.7 配置NTP服务

     
    (1)、修改配置文件/etc/ntp.conf
    在cdh1加入如下配置:
    1. restrict 192.168.5.0 mask 255.255.255.0 nomodify notrap
    2. server 127.127.1.0# local clock
    3. fudge 127.127.1.0 stratum 10
     
    在cdh2和cdh3等其他节点加入如下配置:
    1. #server 0.rhel.pool.ntp.org iburst
    2. #server 1.rhel.pool.ntp.org iburst
    3. #server 2.rhel.pool.ntp.org iburst
    4. server 192.168.5.78
    5. restrict 192.168.5.78 nomodify notrap noquery
     
    (2)、启动服务,并同步时间
    cdh1:
    1. [root@cdh1 ~]# service ntpd restart
    2. [root@cdh1 ~]# ntpdate -u 0.rhel.pool.ntp.org
    3. 16Feb14:13:39 ntpdate[32551]: step time server 85.199.214.101 offset -27310.823198 sec
    4. [root@cdh1 ~]# date
    5. 20170216星期四14:13:41 CST
     
    cdh2、cdh3:
    1. # service ntpd restart
    2. # ntpdate -u 192.168.5.78
     
     
     

    3、编译安装MySQL

    Mysql的安装在节点1上
    也可以使用其他方式安装MySQL

    3.1 检查并卸载本机的MySQL

    1. # rpm -qa | grep mysql
    2. # yum -y remove mysql-libs-5.1.71-1.el6.x86_64
     

    3.2 配置用户、目录和环境

    (1)、添加用户
    1. [root@cdh1 ~]# useradd mysql
     
    (2)、创建目录并赋权
    创建目录:
    1. [root@cdh1 ~]# mkdir -p /home/u01/my3306/data
    2. [root@cdh1 ~]# mkdir -p /home/u01/my3306/log/iblog
    3. [root@cdh1 ~]# mkdir -p /home/u01/my3306/log/binlog
    4. [root@cdh1 ~]# mkdir -p /home /u01/my3306/run
    5. [root@cdh1 ~]# mkdir -p /home/u01/my3306/tmp
     
    设置权限:
    1. [root@cdh1 ~]# chown -R mysql:mysql /home/u01/my3306/
    2. [root@cdh1 ~]# chmod -R 755/home/u01/my3306/
     
    (3)、配置环境变量
    在/etc/profile里面加入如下配置:
    1. export PATH=$PATH:/home/u01/my3306/bin
     
    (4)、安装cmake
    1. [root@cdh1 data]# yum install -y cmake gcc gcc-c++ ncurses-devel bison zlib libxml openssl libxml2 libxml2-devel openssl-devel
     

    3.3 安装MySQL

    (1)、上传并解压
    上传mysql通用的源码包到目录/home/data, 并解压到/home/u01目录。
    1. [root@cdh1 data]# tar -xzvf mysql-5.6.35.tar.gz -C /home/u01
     
    (2)、进入mysql的解压目录, 并执行如下的cmake命令
    1. cmake \
    2. -DCMAKE_INSTALL_PREFIX=/home/u01/my3306 \
    3. -DINSTALL_DATADIR=/home/u01/my3306/data \
    4. -DDEFAULT_CHARSET=utf8 \
    5. -DDEFAULT_COLLATION=utf8_general_ci \
    6. -DEXTRA_CHARSETS=all \
    7. -DWITH_SSL=yes \
    8. -DWITH_EMBEDDED_SERVER=1 \
    9. -DENABLED_LOCAL_INFILE=1 \
    10. -DWITH_MYISAM_STORAGE_ENGINE=1 \
    11. -DWITH_INNOBASE_STORAGE_ENGINE=1 \
    12. -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
    13. -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
    14. -DWITH_FEDERATED_STORAGE_ENGINE=1 \
    15. -DWITH_PARTITION_STORAGE_ENGINE=1 \
    16. -DMYSQL_UNIX_ADDR=/home/u01/my3306/run/mysql.sock \
    17. -DMYSQL_TCP_PORT=3306 \
    18. -DENABLED_LOCAL_INFILE=1 \
    19. -DSYSCONFDIR=/etc \
    20. -DWITH_READLINE=on
     
     
    (3)、make操作
    1. # make
     
    (4)、make  install 操作
    1. # make install
     
     
    (5)、上传my.cnf
        将附件my.cnf上传到目录/home/u01/my3306。
     my.cnf的文件内容如下:
    1. [client]
    2. port=3306
    3. socket=/home/u01/my3306/mysql.sock
    4. [mysql]
    5. pid_file=/home/u01/my3306/run/mysqld.pid
    6. [mysqld]
    7. autocommit=1
    8. general_log=off
    9. explicit_defaults_for_timestamp=true
    10. # system
    11. basedir=/home/u01/my3306
    12. datadir=/home/u01/my3306/data
    13. max_allowed_packet=1g
    14. max_connections=3000
    15. max_user_connections=2800
    16. open_files_limit=65535
    17. pid_file=/home/u01/my3306/run/mysqld.pid
    18. port=3306
    19. server_id=101
    20. skip_name_resolve=ON
    21. socket=/home/u01/my3306/run/mysql.sock
    22. tmpdir=/home/u01/my3306/tmp
    23. #binlog
    24. log_bin=/home/u01/my3306/log/binlog/binlog
    25. binlog_cache_size=32768
    26. binlog_format=row
    27. expire_logs_days=7
    28. log_slave_updates=ON
    29. max_binlog_cache_size=2147483648
    30. max_binlog_size=524288000
    31. sync_binlog=100
    32. #logging
    33. log_error=/home/u01/my3306/log/error.log
    34. slow_query_log_file=/home/u01/my3306/log/slow.log
    35. log_queries_not_using_indexes=0
    36. slow_query_log=1
    37. log_slave_updates=ON
    38. log_slow_admin_statements=1
    39. long_query_time=1
    40. #relay
    41. relay_log=/home/u01/my3306/log/relaylog
    42. relay_log_index=/home/u01/my3306/log/relay.index
    43. relay_log_info_file=/home/u01/my3306/log/relay-log.info
    44. #slave
    45. slave_load_tmpdir=/home/u01/my3306/tmp
    46. slave_skip_errors=OFF
    47. #innodb
    48. innodb_data_home_dir=/home/u01/my3306/log/iblog
    49. innodb_log_group_home_dir=/home/u01/my3306/log/iblog
    50. innodb_adaptive_flushing=ON
    51. innodb_adaptive_hash_index=ON
    52. innodb_autoinc_lock_mode=1
    53. innodb_buffer_pool_instances=8
    54. #default
    55. innodb_change_buffering=inserts
    56. innodb_checksums=ON
    57. innodb_buffer_pool_size=128M
    58. innodb_data_file_path=ibdata1:32M;ibdata2:16M:autoextend
    59. innodb_doublewrite=ON
    60. innodb_file_format=Barracuda
    61. innodb_file_per_table=ON
    62. innodb_flush_log_at_trx_commit=1
    63. innodb_flush_method=O_DIRECT
    64. innodb_io_capacity=1000
    65. innodb_lock_wait_timeout=10
    66. innodb_log_buffer_size=67108864
    67. innodb_log_file_size=1048576000
    68. innodb_log_files_in_group=4
    69. innodb_max_dirty_pages_pct=60
    70. innodb_open_files=60000
    71. innodb_purge_threads=1
    72. innodb_read_io_threads=4
    73. innodb_stats_on_metadata=OFF
    74. innodb_support_xa=ON
    75. innodb_use_native_aio=OFF
    76. innodb_write_io_threads=10
    77. [mysqld_safe]
    78. datadir=/home/u01/my3306/data
     
    (6)、赋权
    1. [root@cdh1 home]# chown -R mysql:mysql ./u01/my3306
     
    (7)、初始化
    进入my3306的目录
    1. ./scripts/mysql_install_db --defaults-file=/home//u01/my3306/my.cnf --datadir=/home/u01/my3306/data --user=mysql
     
    (8)、启动服务
    1. [root@cdh1 my3306]# cd bin/
    2. [root@cdh1 bin]#./mysqld_safe --defaults-file=/home/u01/my3306/my.cnf --user=mysql &

     

     
     
    (8)、验证安装
     

    3.4 配置MySQL权限等

     
    (1)、设置密码
    1. [root@cdh1 bin]# mysqladmin -u root password 123456
     
    (2)、进入mysql
     
    (3)、设置权限
    1. mysql> grant all privileges on *.* to root@'localhost' identified by'123456'with grant option;
    2. mysql> grant all privileges on *.* to root@'127.0.0.1' identified by'123456'with grant option;
    3. mysql> grant all privileges on *.* to root@'%' identified by'123456'with grant option;
    4. mysql> flush privileges;
     
    (4)、验证权限
     
     


    4 安装Cloudera Manager

    以下操作是在节点1上,角色为cloudera-scm-server
     

    4.1 上传并解压cloudera-manager

    (1)、解压
    1. [root@cdh1 data]# tar xzvf cloudera-manager-el6-cm5.6.0_x86_64.tar.gz -C /opt/

      
    (2)、将mysql的jar包复制到指定目录
    1. # cp mysql-connector-java-5.1.38-bin.jar /opt/cm-5.6.0/share/cmf/lib/

     

    4.2 修改配置文件的主机名

    1. [root@cdh1 data]# sed -i 's/server_host=localhost/server_host=cdh1/g'/opt/cm-5.6.0/etc/cloudera-scm-agent/config.ini

      

    4.3 修复安装包bug(此BUG会导致在集群安装YARN时失败) 

    1. # vim /opt/cm-5.6.0/lib64/cmf/agent/src/cmf/util.py --该文件第365行
    2. pipe = subprocess.Popen(['/bin/bash','-c',". %s; %s; env"%(path, command)],
    3. stdout=subprocess.PIPE, env=caller_env)
    4. 改成
    5. pipe = subprocess.Popen(['/bin/bash','-c',". %s; %s; env | grep -v { | grep -v }"%(path, command)],
    6. stdout=subprocess.PIPE, env=caller_env)
     
     

    4.4 创建系统用户(在所有的节点)

    1. # useradd --system --home=/opt/cm-5.6.0/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "cloudera scm user" cloudera-scm
     

    4.5 配置MySQL数据库

    (1)、执行创建脚本
    1. [root@cdh1 data]#/opt/cm-5.6.0/share/cmf/schema/scm_prepare_database.sh mysql -h192.168.5.78-uroot -p123456 --scm-host 192.168.5.78 cm cm cm
    ---参数说明----:
            ./scm_prepare_database.sh mysql -h 172.18.134.172 -uroot -pro#zyuc --scm-host 172.18.134.133 cm cm cm
                    (对应于:数据库类型、数据库服务器、用户名、密码、CMServer 所在节点…….)
     
    验证是否安装成功:
    1. [root@cdh1 data]# mysql -h192.168.5.78-uroot -p123456 -e "show databases;"
     
     
    (2)、创建相关配置
    1. [root@cdh1 data]# mysql -h192.168.5.78-uroot -p123456
    2. mysql> create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
    3. mysql> create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
    4. mysql> create database hue default charset utf8 collate utf8_general_ci;
    5. mysql> create database Oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
    6. mysql> grant all on *.* to 'root'@'%' identified by '123456';--授权server主机
    7. mysql> flush privileges;

    4.6 将cm复制到agent

      将/home/opt/cm-5.6.0拷贝到所有cloudera-scm-agent服务器上(/home/opt
    1. [root@cdh1 opt]# scp -r cm-5.6.0/ root@cdh2:/opt
    2. [root@cdh1 opt]# scp -r cm-5.6.0/ root@cdh3:/opt

     

    4.7 准备parcels安装包到/opt/cloudera/parcel-repo/

    1. # cp CDH-5.6.0-1.cdh5.6.0.p0.45-el6.parcel /opt/cloudera/parcel-repo/
    2. # cp CDH-5.6.0-1.cdh5.6.0.p0.45-el6.parcel.sha1 /opt/cloudera/parcel-repo/
    3. # cp manifest.json /opt/cloudera/parcel-repo/
    4. # cd /opt/cloudera/parcel-repo/
    5. # mv CDH-5.6.0-1.cdh5.6.0.p0.45-el6.parcel.sha1 CDH-5.6.0-1.cdh5.6.0.p0.45-el6.parcel.sha
     
     
     

    4.8 启动服务

    (1)、启动cloudera-scm-server节点的server和agent脚本
    1. # /opt/cm-5.6.0/etc/init.d/cloudera-scm-server start
    2. # /opt/cm-5.6.0/etc/init.d/cloudera-scm-agent start
     
    (2)启动所有cloudera-scm-agent客户端节点的agent脚本
    1. # /opt/cm-5.6.0/etc/init.d/cloudera-scm-agent start
     
    (3)确认cloudera-scm-server启动完成
    1. [root@cdh1 opt]# ps -ef | grep scm
     
    1. # netstat -tunlp|grep java
     
     

    5 在界面配置

    在浏览器打开管理页面:http://192.168.5.78:7180/

    5.1 同意License

     
     

    5.2 选择Cloudera Express版本

     

    5.3 软件列表信息, 继续

     

    5.4 选择安装的主机

     
     

    5.5 继续,Parcel从cdh1分发到其他节点

     

    5.6 检查主机正确性 

     
     
     
     
     
     
     
     
     

    5.7 选择需要安装的服务

     

    5.8 集群设置

     
     
     
     

    5.9 设置数据库的信息

     

    5.10 集群设置

    设置DataNode的数据目录, 数据目录需要在磁盘新建好,如下图,需要新建2个目录:# mkdir  /home/dfsdata和# mkdir  /hadoopdata。
     
     

    5.11 配置和启动服务

     
         Hive和Oozie报错, 提示没有mysql的java驱动jar包
     
     
     
     
    注意:将mysql的驱动放到hive和oozie的目录下面, 否则后面安装会报错:
    [root@cdh1 lib]# cp /home/data/mysql-connector-java-5.1.38-bin.jar /opt/cloudera/parcels/CDH-5.6.0-1.cdh5.6.0.p0.45/lib/hive/lib
    [root@cdh1 lib]# cp /home/data/mysql-connector-java-5.1.38-bin.jar /var/lib/oozie
     
     
     
     
     

    5.12 安装结束

    以上都没有报错, 按继续, 安装成功。
     
     
    由于是在虚拟机环境, 以上红色是空间不足的告警, 暂时可以忽略。 
     

    6 验证

    6.1 验证HDFS的功能

     

    6.2 验证Spark引擎

    切换到HDFS用户:# su -hdfs
     

    6.3 验证MR引擎

    切换到HDFS用户:# su -hdfs
     
     

    6.4 验证Hive on Spark

     
     
    hive on spark的设置文档:
     
    参考文档设置没有成功, 直接修改配置文件:
     
    补充:上面通过在界面修改没有成功, 其实是修改保存后, 还有个deploy的操作, 如下图所示:
     
     





    附件列表

  • 相关阅读:
    MongoClient类
    MongoDB基本操作(增删改查)
    为什么MongoDB适合大数据的存储?
    npm的使用
    nodejs安装教程
    c#byte数组和string类型转换
    C#中数组、ArrayList和List三者的区别
    eclspse魔板
    mysql的备份
    shell的使用
  • 原文地址:https://www.cnblogs.com/xiaohe001/p/6424927.html
Copyright © 2020-2023  润新知