一、安装前的准备


  1. 虚拟机的创建及centos7的安装
    在这里插入图片描述

  2. 克隆虚拟机:采用完整克隆模式
    在这里插入图片描述

  3. 对克隆的虚拟机进行必要的修改(单机的话可以忽略)
    对拷贝后的node2和node3 分别进行以下修改
    1)uuidgen ens33 获取新的 UUID
    2)vim /etc/sysconfig/network-scripts/ifcfg-ens33 修改 IP 和 UUID
    3)service network restart 重启网络
    4)vi /etc/hosts 设置主机名 reboot重启后生效

  4. 对CentOS7进行相关配置

    • 配置ssh连接时无需输入用户密码

      非对称加密的方式基于私钥登陆的方式:(ssh连接时无需输入用户密码)   
       1.ssh-keygen -t rsa 然后四下回车     
       2./root/.ssh目录下:         
          私钥:id_rsa          
          公钥:id_rsa.pub     
      3.ssh-copy-id linux的IP         
          每个节点都需要拷贝秘钥然后分发给别的linux,执行命令后然后输入yes,然后最终输入密码       
            ssh-copy-id node1             
            ssh-copy-id node2        (单机的话可以忽略)
            ssh-copy-id node3        (单机的话可以忽略)
      4.ssh linux的用户名@别的linux的IP         
          现在无需输入别的linux的用户密码即能登录到别的linux中     
      5.验证
          ssh root@node1       
          exit       
          ssh root@node2       (单机的话可以忽略)
          exit       
          ssh root@node3       (单机的话可以忽略)
          exit
      
    • 关闭防火墙

    • 配置ntp时间同步服务器

      • ntp安装、启动及查看

        yum install ntp             #安装 
        systemctl start ntpd     #启动服务           
        ps -ef | grep ntpd         #查看是否启动 
        systemctl enable ntpd.service #开机启动                 
        date             #查看当前时间 
        timedatectl  # 查看当前时间和NTP服务的同步状态
        

        在这里插入图片描述

      • 配置时间同步

        ntpdate -u cn.pool.ntp.org
        

        在这里插入图片描述

      • 将node1作为NTP的Server,去外部授时中心同步时间

        1.配置 node1:
        1)配置前先使用命令同步外部授时中心:ntpdate -u cn.pool.ntp.org 或 ntpdate -u ntp6.aliyun.com
        2)vim /etc/ntp.conf
          注释以下配置
            #server 0.centos.pool.ntp.org iburst
            #server 1.centos.pool.ntp.org iburst
            #server 2.centos.pool.ntp.org iburst
            #server 3.centos.pool.ntp.org iburst
        
        
          增加如下配置:
            # 允许内网其他机器同步时间,如果不添加该约束默认允许所有IP访问本机同步服务。192.168.88.0为本局域网内的子网IP
            restrict 192.168.88.0 mask 255.255.255.0 nomodify notrap
        
        
            # 配置和上游标准时间同步
            server 210.72.145.44  # 中国国家授时中心
            server 133.100.11.8  #日本[福冈大学]
            server 0.cn.pool.ntp.org
            server 1.cn.pool.ntp.org
            server 2.cn.pool.ntp.org
            server 3.cn.pool.ntp.org
        
        
            # 配置允许上游时间服务器主动修改本机(内网ntp Server)的时间
            restrict 210.72.145.44 nomodify notrap noquery
            restrict 133.100.11.8 nomodify notrap noquery
            restrict 0.cn.pool.ntp.org nomodify notrap noquery
            restrict 1.cn.pool.ntp.org nomodify notrap noquery
            restrict 2.cn.pool.ntp.org nomodify notrap noquery
            restrict 3.cn.pool.ntp.org nomodify notrap noquery
        
        
            # 确保localhost有足够权限,使用没有任何限制关键词的语法。
            # 外部时间服务器不可用时,以本地时间作为时间服务。
            # 注意:这里不能改,必须使用127.127.1.0,否则会导致无法
            #在ntp客户端运行ntpdate serverIP,出现no server suitable for synchronization found的错误。
            #在ntp客户端用ntpdate –d serverIP查看,发现有“Server dropped: strata too high”的错误,并且显示“stratum 16”。而正常情况下stratum这个值得范围是“0~15”。
            #这是因为NTP server还没有和其自身或者它的server同步上。
            #以下的定义是让NTP Server和其自身保持同步,如果在ntp.conf中定义的server都不可用时,将使用local时间作为ntp服务提供给ntp客户端。
            #下面这个配置,建议NTP Client关闭,建议NTP Server打开。因为Client如果打开,可能导致NTP自动选择合适的最近的NTP Server、也就有可能选择了LOCAL作为Server进行同步,而不与远程Server进行同步。
            server 127.127.1.0  # local clock
            fudge 127.127.1.0  stratum 10
        
        
        3)systemctl restart ntpd 重启服务端ntpd服务
        4)ntpq -p 查看网络中的NTP服务器,同时显示客户端和每个服务器的关系
        5)ntpstat 查看时间同步状态
        6)正在尝试同步的话,执行ntpstat会显示 synchronised to local net at stratum 11
           主节点一般需要1~5分钟才能同步上外部的授时中心。所以,服务器启动后需要稍等下。
        7)没有同步成功的话,执行ntpstat会显示unsynchronised
        8)同步成功以后,node1会显示 synchronised to NTP server (119.28.183.184) at stratum 3
        9)也可以使用 ntpdate -u ntp6.aliyun.com 同步阿里云时间
           timedatectl 查看当前时间和NTP服务的同步状态:必须保证所有节点下的时间都是一致,并且NTP服务同步成功,
           那么才能作为CDH启动成功的保证
        

        在这里插入图片描述
        在这里插入图片描述
        在这里插入图片描述在这里插入图片描述

      • CDH之Linux内核优化

        CDH之优化Linux底层:
        https://www.cloudera.com/documentation/enterprise/latest/topics/cdh_admin_performance.html#cdh_performance__section_nt5_sdf_jq
        
        1.关闭透明大页
            禁用透明重复页面(THP)
            CDH支持的大多数Linux平台都包含一个名为transparent hugepages的功能,该功能与Hadoop工作负载交互不良,并且可能严重降低性能。
        
        
            1.执行 cat /sys/kernel/mm/transparent_hugepage/enabled
              显示为 [always] madvise never 表示启用
              默认情况下,状态为always,需要调整为never
            2.vim /etc/default/grub
                把 第六行的 GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
                修改为 GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet transparent_hugepage=never"
            3.grub2-mkconfig -o /boot/grub2/grub.cfg
            4.reboot    
            5.重启后 重新执行 cat /sys/kernel/mm/transparent_hugepage/enabled 显示 always madvise [never] 表示禁用
            6.在安装CDH如果还提示没有禁用成功的话,请进行如下设置进行禁用:
                已启用透明大页面压缩,可能会导致重大性能问题,需要禁用此设置。
                请运行“echo never > /sys/kernel/mm/transparent_hugepage/defrag”和“echo never > /sys/kernel/mm/transparent_hugepage/enabled”可以暂时生效
                永久生效:将上述两个命令然 添加到/etc/rc.local等初始化脚本中,以便在系统重启时予以设置。
                        编辑:vim /etc/rc.local
                        添加:    
                            echo never > /sys/kernel/mm/transparent_hugepage/defrag
                            echo never > /sys/kernel/mm/transparent_hugepage/enabled
        
                如有多台主机,则需要将该文件分发到其他节点上
                    scp -r /etc/rc.local root@node2:/etc/
                    scp -r /etc/rc.local root@node3:/etc/
        
        2.设置vm.swappiness Linux内核参数
            Linux内核参数, vm.swappiness,是一个0-100的值,用于控制应用程序数据(作为匿名页面)从物理内存到磁盘上的虚拟内存的交换。
            值越高,从物理内存中交换出更积极的非活动进程。值越小,交换的次数越少,强制清空文件系统缓冲区。
            在大多数系统上, vm.swappiness默认设置为60。这不适用于Hadoop集群,因为即使有足够的可用内存,有时也会交换进程。
            这可能会导致重要系统守护程序的冗长垃圾收集暂停,从而影响稳定性和性能。
            Cloudera建议您设置 vm.swappiness对于最小交换,值为1到10,优选为1。
        
        
            1.vim /etc/sysctl.conf 添加 vm.swappiness=1
            2.执行激活 sysctl -p 显示 vm.swappiness = 1
              查看 cat /proc/sys/vm/swappiness 显示值为 1
            3.reboot 重启后 重新查看
        
        
        3.禁用已调优的服务
            1.(无需执行)确保已启动调优服务:systemctl start tuned
            2.关闭调优服务:tuned-adm off
            3.确保没有活动的配置文件:tuned-adm list 最后一行显示为 No current active profile(无当前活动配置文件)
            4.关闭并禁用调优服务:
                systemctl stop tuned
                systemctl disable tuned
        

        相关设置图片:
        在这里插入图片描述
        在这里插入图片描述
        在这里插入图片描述
        在这里插入图片描述

  5. 安装 JDK(此处不自己安装JDK)

    CDH6.1 官方提供的多个包中 已经包含 JDK,因此就不要自己另外装JDK了,装CM6.1时,请装官方提供的JDK:oracle-j2sdk1.8-1.8.0+update141-1.x86_64.rpm
    Cloudera Manager的rpm安装包由之前的7个变成了5个,去掉了之前的JDK6的包,然后自带JDK1.8.0_141,将不再支持JDK1.7,因此可以不需要自己手动安装JDK
    如需安装,则按照下面的方式进行安装
    1.查看CentOS是否已安装的自带openjdk,如果安装了自带openjdk,那么卸载CentOS自带的该openjdk:
        (1)查看CentOS已安装的所有软件库:rpm -qa
        (2)查看CentOS已安装的自带openjdk:rpm -qa | grep java
             比如说查看出CentOS已安装的自带的两个openjdk:
                java-1.6.0-openjdk-1.6.0.35-1.13.7.1.el6_6.x86_64
                java-1.7.0-openjdk-1.7.0.79-2.5.5.4.el6.x86_64
        (3)卸载上述两个CentOS已安装的自带的两个openjdk:
            rpm -e java-1.6.0-openjdk-1.6.0.35-1.13.7.1.el6_6.x86_64
            rpm -e java-1.7.0-openjdk-1.7.0.79-2.5.5.4.el6.x86_64      
             或者执行下面卸载命令:
            rpm -e --nodeps java-1.6.0-openjdk-1.6.0.35-1.13.7.1.el6_6.x86_64
            rpm -e --nodeps java-1.7.0-openjdk-1.7.0.79-2.5.5.4.el6.x86_64      
        (4)检查是否卸载成功:rpm -qa |  grep java
    
    2.安装 JDK 1.8
        mkdir /usr/local/java
        tar zxvf jdk-8u45-linux-x64.tar.gz -C /usr/local/java
        scp -r /xx/yy.txt root@IP或域名:/xx/
            scp -r /usr/local/java root@node2:/usr/local
            scp -r /usr/local/java root@node3:/usr/local
    
    3.可以查看JDK版本号:
        (1)cd /usr/local/java/jdk1.8.0_45/bin/
        (2)./java -version
        (3)在profile配置文件中配置好新的JDK之后,便可以直接使用“java -version”查看JDK版本号
    
    4..配置/etc目录下的profile配置文件:vi /etc/profile
        1.在文件末尾添加以下内容:
                #set java environment
            JAVA_HOME=/usr/local/java/jdk1.8.0_45
                CLASSPATH=.:$JAVA_HOME/lib/tools.jar
                PATH=$JAVA_HOME/bin:$PATH
            export JAVA_HOME CLASSPATH PATH
          或者添加如下配置也可以:
            export JAVA_HOME=/usr/local/java/jdk1.8.0_45
            export PATH=$PATH:$JAVA_HOME/bin
            export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
        2.重新加载profile配置文件,让配置文件生效:source /etc/profile     
        3.检查是否已配置好新的JDK:java -version
    
  6. 安装MySQL
    当前使用的MySQL版本mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz下载地址:

    https://downloads.mysql.com/archives/community/
    

    在这里插入图片描述
    安装步骤如下所示:

    (推荐)第三种方法 安装、配置 MySQL:        
    	1.查看是否安装了自带mysql:rpm -qa | grep mysql
    	2.把64位的MySQL(centOS 7 版本MySQL:mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz)解压到 /usr/local 目录文件夹下
    	    cd /usr/local
    	    tar zxvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz -C /usr/local
    	    mv mysql-5.7.24-linux-glibc2.12-x86_64 /usr/local/mysql
    	    rm -f mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
    	   
    	3.mkdir -p /usr/local/mysql/data
    	  mkdir -p /usr/local/mysql/database
    	  mkdir -p /usr/local/mysql/data/relay
    	  mkdir -p /usr/local/mysql/data/binlog
    	  mkdir -p /usr/local/mysql/data/tmp
    	  chmod -R 777 /usr/local/mysql/data
    	  touch /usr/local/mysql/data/error.log
    	  touch /usr/local/mysql/data/mysql.sock
    	  touch /usr/local/mysql/data/mysql.pid
    	4.(可以忽略)创建 mysql 用户组和 mysql 用户 , 把 mysql 目录所有者赋给 mysql 用户
    	    groupadd mysql
    	    useradd -r -g mysql mysql
    	    chown -R mysql:mysql mysql
    	    cd mysql
    	    主目录权限处理(查看是否有就得用户,有删除并新建用户)
    	        查看组和用户情况:cat /etc/group | grep mysql
    	        查看组和用户情况:cat /etc/passwd |grep mysql
    	    若存在,则删除原mysql用户:userdel -r mysql,会删除其对应的组和用户并在次查看。
    	        创建mysql组:groupadd mysql
    	        创建mysql用户:useradd -r -g mysql mysql
    	        修改目录拥有者:chown -R mysql:mysql /usr/local/mysql
    	5.配置 vim /etc/my.cnf:my.cnf配置看下面部分“my.cnf配置信息”内容,先删除原有的所有配置信息,然后添加新的进去
    	6.初始化数据库 使用 mysqld 安装
    	    cd /usr/local/mysql/bin
    	    root 用户(目前这个用户):./mysqld --initialize --user=root --basedir=/usr/local/mysql --datadir=/usr/local/mysql/database
    	    mysql 用户:./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/database
    	    注意:
    	        1.执行上述语句进行初始化时,有可能打印出的显示信息中包括默认的登录密码:root@localhost:(该随机数字字母为自动生成的登录密码)
    	          如果执行上述语句进行初始化时,没有任何打印信息的话,那么cat /usr/local/mysql/data/error.log文件中即能找到:root@localhost:(该随机数字字母为自动生成的登录密码),如下图所示
    	        2.如果使用随机密码也无法登录mysql的话,那么需要重新执行如下步骤:
    	            1.删除 /usr/local/mysql 目录下的 database文件夹,然后执行 mkdir /usr/local/mysql/database
    	            2.cd /usr/local/mysql/bin
    	              重新初始化 ./mysqld --initialize --user=root --basedir=/usr/local/mysql --datadir=/usr/local/mysql/database
    	            3.service mysql restart重启mysql后,再使用新的随机密码登录mysql
    	        3.如果执行上述语句时报错:./mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
    	          需要安装命令: yum install -y libaio
    	          再执行 ./mysqld --initialize --user=root --basedir=/usr/local/mysql --datadir=/usr/local/mysql/database
    	
    	
    	
    	7.默认登录密码可以在两处地方找到
    	    1.可以在执行初始化数据库语句(./mysqld --initialize)显示的信息中查看到:root@localhost:(该随机数字字母为自动生成的登录密码)
    	    2.可以在 error.log日志(cat /usr/local/mysql/data/error.log)里查看
    	        cat /usr/local/mysql/data/error.log
    	        root@localhost: 后面的随机数字字母就是默认登录密码
    	        如果找不到可能默认是空,登录时无需密码直接回车
    	    3.如果使用随机密码也无法登录mysql的话,那么需要重新执行如下步骤:
    	            1.删除 /usr/local/mysql 目录下的 database文件夹
    	            2.重新初始化 ./mysqld --initialize --user=root --basedir=/usr/local/mysql --datadir=/usr/local/mysql/database
    	            3.service mysql restart重启mysql后,再使用新的随机密码登录mysql
    	
    	8./etc/profile环境变量配置(这个配置的是针对所有的用户的环境变量配置文件)
    	    编辑:vim /etc/profile,添加如下内容
    	        export PATH="$PATH":/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    	        export MYSQL_HOME=/usr/local/mysql
    	        export PATH="$PATH":"$MYSQL_HOME"/bin
    	    生效:
    	    source /etc/profile
    	
    	9.开机服务启动设置:
    	    1)(第一种方法:目前使用这种即可)cp -a /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
    	      (第二种方法)cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld   
    	    2)(第一种方法:目前使用这种即可)chmod 777 /etc/init.d/mysql
    	      (第二种方法)chmod 777 /etc/init.d/mysqld
    	      cd /etc/init.d
    	      ll 查看到有mysql文件
    	    3)chkconfig --list mysql 查看mysql服务是否在服务配置中,如下图所示
    	      最后一行 显示 service mysql supports chkconfig, but is not referenced in any runlevel (run 'chkconfig --add mysql')
    	      翻译为 服务mysql支持chkconfig,但没有在任何运行级别中引用(运行'chkconfig --add mysql')
    	      因此需要把mysql注册为开机启动的服务
    	        (第一种方法:目前使用这种即可)chkconfig --add mysql
    	        (第二种方法)chkconfig --add mysqld
    	      然后再进行查看 chkconfig --list
    	      显示 mysql           0:off   1:off   2:on    3:on    4:on    5:on    6:off
    	           mysqld          0:off   1:off   2:on    3:on    4:on    5:on    6:off
    	      如果看到mysql的服务,并且3,4,5都是on的话则成功,如果是off,则键入
    	        chkconfig --level 2345 mysql on
    	        chkconfig --level 2345 mysqld on
    	
    	10.mysql服务注册成功后,便可以使用以下命令进行启动 或 停止mysql   
    	    service mysql start 显示 Starting MySQL. SUCCESS!
    	    service mysql stop
    	    service mysql status
    	    service mysql restart
    	  或者也可以使用 安全启动 方式     
    	    cd /usr/local/mysql/bin
    	    ./mysqld_safe --user=root &
    	  查看mysql进程是否启动成功:ps -ef | grep mysql
    	
    	
    	11.创建快捷方式
    	    (已把mysql的bin目录路径配置到环境变量/etc/profile中后则不需要再创建快捷方式)ln -s /usr/local/mysql/bin/mysql /usr/bin
    	    服务启动后,直接运行 mysql -u root -padmin 即可登录(还没有设置密码为admin,请看下面内容),不需要进入到/usr/local/mysql/bin目录
    	
    	12.登录mysql,重置root用户的密码为admin
    	    cd /usr/local/mysql/bin
    	    ./mysql -u root -p(该随机数字字母为自动生成的登录密码)
    	    set password = password('admin');
    	    grant all privileges on *.* to 'root' @'%' identified by 'admin';  
    	    flush privileges;
    	    exit
    

    临时的MySQL密码:
    在这里插入图片描述
    将mysql服务注册为开启自启动服务:
    在这里插入图片描述
    重置MySQL的root用户的密码:
    在这里插入图片描述
    my.cnf配置信息:选择下面其中一个内容即可,注意:有注释信息的部分仅仅作为解释说明,建议使用没有带注释信息的内容
    不带注释信息的配置信息:/etc/my.cnf

    [client]
    port = 3306
    socket = /usr/local/mysql/data/mysql.sock
    default-character-set = utf8mb4
    [mysqld]
    port = 3306
    socket = /usr/local/mysql/data/mysql.sock
    pid-file = /usr/local/mysql/data/mysql.pid
    basedir = /usr/local/mysql
    datadir = /usr/local/mysql/database
    tmpdir = /usr/local/mysql/data/tmp
    character_set_server = utf8mb4
    collation_server = utf8mb4_bin
    user = root
    log-error=/usr/local/mysql/data/error.log
    secure-file-priv = null
    log_bin_trust_function_creators = 1
    performance_schema = 0
    explicit_defaults_for_timestamp
    event_scheduler
    skip-external-locking
    skip-name-resolve
    skip-slave-start
    slave_net_timeout = 30
    local-infile = 0
    back_log = 1024
    sql_mode = NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER
    key_buffer_size = 32M
    max_allowed_packet = 512M
    thread_stack = 256K
    sort_buffer_size = 16M
    read_buffer_size = 16M
    join_buffer_size = 16M
    read_rnd_buffer_size = 32M
    net_buffer_length = 16K
    myisam_sort_buffer_size = 128M
    bulk_insert_buffer_size = 32M
    thread_cache_size = 384
    query_cache_size = 0
    query_cache_type = 0
    tmp_table_size = 1024M
    max_heap_table_size = 512M
    open_files_limit = 10240
    max_connections = 2000
    max-user-connections = 0
    max_connect_errors = 100000
    table_open_cache = 5120
    interactive_timeout = 86400
    wait_timeout = 86400
    binlog_cache_size = 16M
    slow_query_log = true
    slow_query_log_file = /usr/local/mysql/data/slow_query_log.log
    long_query_time = 1
    log-slow-admin-statements
    log-queries-not-using-indexes
    innodb_buffer_pool_size = 128M
    innodb_data_file_path = ibdata1:10M:autoextend
    innodb_flush_log_at_trx_commit = 2
    innodb_read_io_threads = 8
    innodb_write_io_threads = 8
    innodb_open_files = 1000
    innodb_purge_threads = 1
    innodb_log_buffer_size = 8M
    innodb_log_file_size = 128M
    innodb_log_files_in_group = 3
    innodb_max_dirty_pages_pct = 75
    innodb_buffer_pool_instances = 4
    innodb_io_capacity = 500
    innodb_file_per_table = 1
    innodb_change_buffering = inserts
    innodb_adaptive_flushing = 1
    transaction-isolation = READ-COMMITTED
    innodb_flush_method = fsync
    [mysqldump]
    quick
    max_allowed_packet = 512M
    net_buffer_length = 16384
    [mysql]
    auto-rehash
    
    
    [isamchk]
    key_buffer = 256M
    sort_buffer_size = 256M
    read_buffer = 2M
    write_buffer = 2M
    
    
    [myisamchk]
    key_buffer = 256M
    sort_buffer_size = 256M
    read_buffer = 2M
    write_buffer = 2M
    
    
    [mysqlhotcopy]
    interactive-timeout
    

    修改/etc/my.cnf如下,其中 带注释的为配置信息:

    [client]
    #客户端设置,即客户端默认的连接参数
    port = 3306
    #默认连接端口
    socket = /usr/local/mysql/data/mysql.sock
    #用于本地连接的socket套接字
    default-character-set = utf8mb4
    #编码
    [mysqld]
    #服务端基本设置
    port = 3306
    #MySQL监听端口
    socket = /usr/local/mysql/data/mysql.sock
    #为MySQL客户端程序和服务器之间的本地通讯指定一个套接字文件
    pid-file = /usr/local/mysql/data/mysql.pid
    #pid文件所在目录
    basedir = /usr/local/mysql
    #使用该目录作为根目录(安装目录)
    datadir = /usr/local/mysql/database
    #数据文件存放的目录
    tmpdir = /usr/local/mysql/data/tmp
    #MySQL存放临时文件的目录
    character_set_server = utf8mb4
    #服务端默认编码(数据库级别)
    collation_server = utf8mb4_bin
    #服务端默认的比对规则,排序规则
    user = root
    #MySQL启动用户。如果是root用户就配置root,mysql用户就配置mysql
    log-error=/usr/local/mysql/data/error.log
    #错误日志配置文件(configure file)
    secure-file-priv = null
    log_bin_trust_function_creators = 1
    #开启了binlog后,必须设置这个值为1.主要是考虑binlog安全
    #此变量适用于启用二进制日志记录的情况。它控制是否可以信任存储函数创建者,而不是创建将导致
    #要写入二进制日志的不安全事件。如果设置为0(默认值),则不允许用户创建或更改存储函数,除非用户具有
    #除创建例程或更改例程特权之外的特权
    performance_schema = 0
    #性能优化的引擎,默认关闭
    #ft_min_word_len = 1
    #开启全文索引
    #myisam_recover
    #自动修复MySQL的myisam表
    explicit_defaults_for_timestamp
    #明确时间戳默认null方式
    event_scheduler
    #计划任务(事件调度器)
    skip-external-locking
    #跳过外部锁定;External-locking用于多进程条件下为MyISAM数据表进行锁定
    skip-name-resolve
    #跳过客户端域名解析;当新的客户连接mysqld时,mysqld创建一个新的线程来处理请求。该线程先检查是否主机名在主机名缓存中。如果不在,线程试图解析主机名。
    #使用这一选项以消除MySQL进行DNS解析的时间。但需要注意,如果开启该选项,则所有远程主机连接授权都要使用IP地址方式,否则MySQL将无法正常处理连接请求!
    
    #1.这个bind-address强烈推荐不配置
    #2.如果要配置bind-address的话,这个localhost不能修改,否则在初始化数据库(执行/opt/cloudera/cm/schema/scm_prepare_database.sh mysql cm cm password)时便会报错
    #  如果配置了localhost的话,那么在CDH的安装页面中,配置连接数据库的主机名称必须为localhost  
    #3.强烈不推荐写bind-address=xxx,那么后面的CDH安装对应的组件时要填写的“数据库主机名称”默认使用主机名。
    #4.如果/etc/my.cnf中配置了bind-address=localhost 的话,那么在CDH的安装页面中,配置连接数据库的主机名称必须为localhost。
    #  缺点:但是在安装hue时,“数据库主机名称”并无法使用localhost或任何主机名,所以造成无法安装hue
    #5.不配置 bind-address=localhost 的话,则使用主机名(NDOE1)作为此处的数据库主机名称
    #bind-address=localhost  
    #MySQL绑定IP
    skip-slave-start
    #为了安全起见,复制环境的数据库还是设置--skip-slave-start参数,防止复制随着mysql启动而自动启动
    slave_net_timeout = 30
    #在中止读取之前等待来自主/从连接的更多数据的秒数。 MySQL主从复制的时候,
    #当Master和Slave之间的网络中断,但是Master和Slave无法察觉的情况下(比如防火墙或者路由问题)。
    #Slave会等待slave_net_timeout设置的秒数后,才能认为网络出现故障,然后才会重连并且追赶这段时间主库的数据。
    #1.用这三个参数来判断主从是否延迟是不准确的Slave_IO_Running,Slave_SQL_Running,Seconds_Behind_Master.还是用pt-heartbeat吧。
    #2.slave_net_timeout不要用默认值,设置一个你能接受的延时时间。
    local-infile = 0
    #设定是否支持命令load data local infile。如果指定local关键词,则表明支持从客户主机读文件
    back_log = 1024
    #指定MySQL可能的连接数量。当MySQL主线程在很短的时间内得到非常多的连接请求,该参数就起作用,之后主线程花些时间(尽管很短)检查连接并且启动一个新线程。
    #back_log参数的值指出在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中。
    #sql_mode = 'PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
    sql_mode = NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER
    #sql_mode,定义了mysql应该支持的sql语法,数据校验等!  NO_AUTO_CREATE_USER:禁止GRANT创建密码为空的用户。
    #NO_ENGINE_SUBSTITUTION 如果需要的存储引擎被禁用或未编译,可以防止自动替换存储引擎
    key_buffer_size = 32M
    #索引块的缓冲区大小,对MyISAM表性能影响最大的一个参数.决定索引处理的速度,尤其是索引读的速度。默认值是16M,通过检查状态值Key_read_requests
    #和Key_reads,可以知道key_buffer_size设置是否合理
    max_allowed_packet = 512M
    #一个查询语句包的最大尺寸。消息缓冲区被初始化为net_buffer_length字节,但是可在需要时增加到max_allowed_packet个字节。
    #该值太小则会在处理大包时产生错误。如果使用大的BLOB列,必须增加该值。
    #这个值来限制server接受的数据包大小。有时候大的插入和更新会受max_allowed_packet 参数限制,导致写入或者更新失败。
    thread_stack = 256K
    #线程缓存;主要用来存放每一个线程自身的标识信息,如线程id,线程运行时基本信息等等,我们可以通过 thread_stack 参数来设置为每一个线程栈分配多大的内存。
    sort_buffer_size = 16M
    #是MySQL执行排序使用的缓冲大小。如果想要增加ORDER BY的速度,首先看是否可以让MySQL使用索引而不是额外的排序阶段。
    #如果不能,可以尝试增加sort_buffer_size变量的大小。
    read_buffer_size = 16M
    #是MySQL读入缓冲区大小。对表进行顺序扫描的请求将分配一个读入缓冲区,MySQL会为它分配一段内存缓冲区。read_buffer_size变量控制这一缓冲区的大小。
    #如果对表的顺序扫描请求非常频繁,并且你认为频繁扫描进行得太慢,可以通过增加该变量值以及内存缓冲区大小提高其性能。
    join_buffer_size = 16M
    #应用程序经常会出现一些两表(或多表)Join的操作需求,MySQL在完成某些 Join 需求的时候(all/index join),为了减少参与Join的“被驱动表”的
    #读取次数以提高性能,需要使用到 Join Buffer 来协助完成 Join操作。当 Join Buffer 太小,MySQL 不会将该 Buffer 存入磁盘文件,
    #而是先将Join Buffer中的结果集与需要 Join 的表进行 Join 操作,
    #然后清空 Join Buffer 中的数据,继续将剩余的结果集写入此 Buffer 中,如此往复。这势必会造成被驱动表需要被多次读取,成倍增加 IO 访问,降低效率。
    read_rnd_buffer_size = 32M
    #是MySQL的随机读缓冲区大小。当按任意顺序读取行时(例如,按照排序顺序),将分配一个随机读缓存区。进行排序查询时,MySQL会首先扫描一遍该缓冲,以避免磁盘搜索,
    #提高查询速度,如果需要排序大量数据,可适当调高该值。但MySQL会为每个客户连接发放该缓冲空间,所以应尽量适当设置该值,以避免内存开销过大。
    net_buffer_length = 16K
    #通信缓冲区在查询期间被重置到该大小。通常不要改变该参数值,但是如果内存不足,可以将它设置为查询期望的大小。
    #(即,客户发出的SQL语句期望的长度。如果语句超过这个长度,缓冲区自动地被扩大,直到max_allowed_packet个字节。)
    myisam_sort_buffer_size = 128M
    #当对MyISAM表执行repair table或创建索引时,用以缓存排序索引;设置太小时可能会遇到” myisam_sort_buffer_size is too small”
    bulk_insert_buffer_size = 32M
    #默认8M,当对MyISAM非空表执行insert … select/ insert … values(…),(…)或者load data infile时,使用树状cache缓存数据,每个thread分配一个;
    #注:当对MyISAM表load 大文件时,调大bulk_insert_buffer_size/myisam_sort_buffer_size/key_buffer_size会极大提升速度
    thread_cache_size = 384
    #thread_cahe_size线程池,线程缓存。用来缓存空闲的线程,以至于不被销毁,如果线程缓存在的空闲线程,需要重新建立新连接,
    #则会优先调用线程池中的缓存,很快就能响应连接请求。每建立一个连接,都需要一个线程与之匹配。
    query_cache_size = 0
    #工作原理: 一个SELECT查询在DB中工作后,DB会把该语句缓存下来,当同样的一个SQL再次来到DB里调用时,DB在该表没发生变化的情况下把结果从缓存中返回给Client。
    #在数据库写入量或是更新量也比较大的系统,该参数不适合分配过大。而且在高并发,写入量大的系统,建系把该功能禁掉。
    query_cache_type = 0
    #决定是否缓存查询结果。这个变量有三个取值:0,1,2,分别代表了off、on、demand。
    tmp_table_size = 1024M
    #它规定了内部内存临时表的最大值,每个线程都要分配。(实际起限制作用的是tmp_table_size和max_heap_table_size的最小值。)
    #如果内存临时表超出了限制,MySQL就会自动地把它转化为基于磁盘的MyISAM表,存储在指定的tmpdir目录下
    max_heap_table_size = 512M
    #独立的内存表所允许的最大容量.# 此选项为了防止意外创建一个超大的内存表导致永尽所有的内存资源.
    open_files_limit = 10240
    #mysql打开最大文件数
    max_connections = 2000
    #MySQL无论如何都会保留一个用于管理员(SUPER)登陆的连接,用于管理员连接数据库进行维护操作,即使当前连接数已经达到了max_connections。
    #因此MySQL的实际最大可连接数为max_connections+1;
    #这个参数实际起作用的最大值(实际最大可连接数)为16384,即该参数最大值不能超过16384,即使超过也以16384为准;
    #增加max_connections参数的值,不会占用太多系统资源。系统资源(CPU、内存)的占用主要取决于查询的密度、效率等;
    #该参数设置过小的最明显特征是出现”Too many connections”错误;
    max-user-connections = 0
    #用来限制用户资源的,0不限制;对整个服务器的用户限制
    max_connect_errors = 100000
    #max_connect_errors是一个MySQL中与安全有关的计数器值,它负责阻止过多尝试失败的客户端以防止暴力破解密码的情况。max_connect_errors的值与性能并无太大关系。
    #当此值设置为10时,意味着如果某一客户端尝试连接此MySQL服务器,但是失败(如密码错误等等)10次,则MySQL会无条件强制阻止此客户端连接。
    table_open_cache = 5120
    #表描述符缓存大小,可减少文件打开/关闭次数;
    interactive_timeout = 86400
    #interactive_time -- 指的是mysql在关闭一个交互的连接之前所要等待的秒数(交互连接如mysql gui tool中的连接
    wait_timeout = 86400
    #wait_timeout -- 指的是MySQL在关闭一个非交互的连接之前所要等待的秒数
    binlog_cache_size = 16M
    #二进制日志缓冲大小
    #我们知道InnoDB存储引擎是支持事务的,实现事务需要依赖于日志技术,为了性能,日志编码采用二进制格式。那么,我们如何记日志呢?有日志的时候,就直接写磁盘?
    #可是磁盘的效率是很低的,如果你用过Nginx,,一般Nginx输出access log都是要缓冲输出的。因此,记录二进制日志的时候,我们是否也需要考虑Cache呢?
    #答案是肯定的,但是Cache不是直接持久化,于是面临安全性的问题——因为系统宕机时,Cache中可能有残余的数据没来得及写入磁盘。因此,Cache要权衡,要恰到好处:
    #既减少磁盘I/O,满足性能要求;又保证Cache无残留,及时持久化,满足安全要求。
    slow_query_log = true
    #开启慢查询
    slow_query_log_file = /usr/local/mysql/data/slow_query_log.log
    #慢查询地址
    long_query_time = 1
    #超过的时间为1s;MySQL能够记录执行时间超过参数 long_query_time 设置值的SQL语句,默认是不记录的。
    log-slow-admin-statements
    log-queries-not-using-indexes
    #记录管理语句和没有使用index的查询记录
    # 主从复制配置 *****************************************************
    # *** Replication related settings ***
    binlog_format = ROW
    #在复制方面的改进就是引进了新的复制技术:基于行的复制。简言之,这种新技术就是关注表中发生变化的记录,而非以前的照抄 binlog 模式。
    #从 MySQL 5.1.12 开始,可以用以下三种模式来实现:基于SQL语句的复制(statement-based replication, SBR),基于行的复制(row-based replication, RBR),混合模式复制(mixed-based replication, MBR)。相应地,binlog的格式也有三种:STATEMENT,ROW,MIXED。MBR 模式中,SBR 模式是默认的。
    #max_binlog_cache_size = 102400
    # 为每个session 最大可分配的内存,在事务过程中用来存储二进制日志的缓存。
    log-bin = /usr/local/mysql/data/binlog/mysql-bin
    #开启二进制日志功能,binlog数据位置
    log-bin-index = /usr/local/mysql/data/binlog/mysql-bin.index
    relay-log = /usr/local/mysql/data/relay/mysql-relay-bin
    #relay-log日志记录的是从服务器I/O线程将主服务器的二进制日志读取过来记录到从服务器本地文件,
    #然后SQL线程会读取relay-log日志的内容并应用到从服务器
    relay-log-index = /usr/local/mysql/data/relay/mysql-relay-bin.index
    #binlog传到备机被写道relaylog里,备机的slave sql线程从relaylog里读取然后应用到本地。
    # *******************主要配置*********************
    # 主服务器配置
    server-id = 1
    #服务端ID,用来高可用时做区分
    #binlog-ignore-db = mysql
    #binlog-ignore-db = sys
    #binlog-ignore-db = binlog
    #binlog-ignore-db = relay
    #binlog-ignore-db = tmp
    #binlog-ignore-db = test
    #binlog-ignore-db = information_schema
    #binlog-ignore-db = performance_schema
    # 不同步哪些数据库
    #binlog-do-db = game
    # 只同步哪些数据库,除此之外,其他不同步
    # 从服务器配置
    #server-id = 2
    #服务端ID,用来高可用时做区分
    #replicate-ignore-db = mysql
    #replicate-ignore-db = sys
    #replicate-ignore-db = relay
    #replicate-ignore-db = tmp
    #replicate-ignore-db = test
    #replicate-ignore-db = information_schema
    #replicate-ignore-db = performance_schema
    # 不同步哪些数据库
    #replicate-do-db = game
    # 只同步哪些数据库,除此之外,其他不同步
    # *******************主要配置*********************
    log_slave_updates = 1
    #log_slave_updates是将从服务器从主服务器收到的更新记入到从服务器自己的二进制日志文件中。
    expire-logs-days = 15
    #二进制日志自动删除的天数。默认值为0,表示“没有自动删除”。启动时和二进制日志循环时可能删除。
    max_binlog_size = 128M
    #如果二进制日志写入的内容超出给定值,日志就会发生滚动。你不能将该变量设置为大于1GB或小于4096字节。 默认值是1GB。
    #replicate-wild-ignore-table = mysql.%
    #replicate-wild-ignore-table参数能同步所有跨数据库的更新,比如replicate-do-db或者replicate-ignore-db不会同步类似
    #replicate-wild-do-table = db_name.%
    #设定需要复制的Table
    #slave-skip-errors = 1062,1053,1146
    #复制时跳过一些错误;不要胡乱使用这些跳过错误的参数,除非你非常确定你在做什么。当你使用这些参数时候,MYSQL会忽略那些错误,
    #这样会导致你的主从服务器数据不一致。
    auto_increment_offset = 1
    auto_increment_increment = 2
    #这两个参数一般用在主主同步中,用来错开自增值, 防止键值冲突
    relay_log_info_repository = TABLE
    #将中继日志的信息写入表:mysql.slave_realy_log_info
    master_info_repository = TABLE
    #将master的连接信息写入表:mysql.salve_master_info
    relay_log_recovery = on
    #中继日志自我修复;当slave从库宕机后,假如relay-log损坏了,导致一部分中继日志没有处理,则自动放弃所有未执行的relay-log,
    #并且重新从master上获取日志,这样就保证了relay-log的完整性
    # 主从复制配置结束 *****************************************************
    # *** innodb setting ***
    innodb_buffer_pool_size = 128M
    #InnoDB 用来高速缓冲数据和索引内存缓冲大小。 更大的设置可以使访问数据时减少磁盘 I/O。
    innodb_data_file_path = ibdata1:10M:autoextend
    #单独指定数据文件的路径与大小
    innodb_flush_log_at_trx_commit = 2
    #每次commit 日志缓存中的数据刷到磁盘中。通常设置为 1,意味着在事务提交前日志已被写入磁盘, 事务可以运行更长以及服务崩溃后的修复能力。
    #如果你愿意减弱这个安全,或你运行的是比较小的事务处理,可以将它设置为 0 ,以减少写日志文件的磁盘 I/O。这个选项默认设置为 0。
    #sync_binlog = 1000
    #sync_binlog=n,当每进行n次事务提交之后,MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘。
    innodb_read_io_threads = 8
    innodb_write_io_threads = 8
    #对于多核的CPU机器,可以修改innodb_read_io_threads和innodb_write_io_threads来增加IO线程,来充分利用多核的性能
    innodb_open_files = 1000
    #限制Innodb能打开的表的数量
    innodb_purge_threads = 1
    #开始碎片回收线程。这个应该能让碎片回收得更及时而且不影响其他线程的操作
    innodb_log_buffer_size = 8M
    #InnoDB 将日志写入日志磁盘文件前的缓冲大小。理想值为 1M 至 8M。大的日志缓冲允许事务运行时不需要将日志保存入磁盘而只到事务被提交(commit)。
    #因此,如果有大的事务处理,设置大的日志缓冲可以减少磁盘I/O。
    innodb_log_file_size = 128M
    #日志组中的每个日志文件的大小(单位 MB)。如果 n 是日志组中日志文件的数目,那么理想的数值为 1M 至下面设置的缓冲池(buffer pool)大小的 1/n。较大的值,
    #可以减少刷新缓冲池的次数,从而减少磁盘 I/O。但是大的日志文件意味着在崩溃时需要更长的时间来恢复数据。
    innodb_log_files_in_group = 3
    #指定有三个日志组
    #innodb_lock_wait_timeout = 120
    #在回滚(rooled back)之前,InnoDB 事务将等待超时的时间(单位 秒)
    innodb_max_dirty_pages_pct = 75
    #innodb_max_dirty_pages_pct作用:控制Innodb的脏页在缓冲中在那个百分比之下,值在范围1-100,默认为90.这个参数的另一个用处:
    #当Innodb的内存分配过大,致使swap占用严重时,可以适当的减小调整这个值,使达到swap空间释放出来。建义:这个值最大在90%,最小在15%。
    #太大,缓存中每次更新需要致换数据页太多,太小,放的数据页太小,更新操作太慢。
    innodb_buffer_pool_instances = 4
    #innodb_buffer_pool_size 一致 可以开启多个内存缓冲池,把需要缓冲的数据hash到不同的缓冲池中,这样可以并行的内存读写。
    innodb_io_capacity = 500
    #这个参数据控制Innodb checkpoint时的IO能力
    innodb_file_per_table = 1
    #作用:使每个Innodb的表,有自已独立的表空间。如删除文件后可以回收那部分空间。
    #分配原则:只有使用不使用。但DB还需要有一个公共的表空间。
    innodb_change_buffering = inserts
    #当更新/插入的非聚集索引的数据所对应的页不在内存中时(对非聚集索引的更新操作通常会带来随机IO),会将其放到一个insert buffer中, #当随后页面被读到内存中时,会将这些变化的记录merge到页中。当服务器比较空闲时,后台线程也会做merge操作
    innodb_adaptive_flushing = 1
    #该值影响每秒刷新脏页的操作,开启此配置后,刷新脏页会通过判断产生重做日志的速度来判断最合适的刷新脏页的数量;
    transaction-isolation = READ-COMMITTED
    #数据库事务隔离级别 ,读取提交内容
    innodb_flush_method = fsync
    #innodb_flush_method这个参数控制着innodb数据文件及redo log的打开、刷写模式
    #InnoDB使用O_DIRECT模式打开数据文件,用fsync()函数去更新日志和数据文件。
    #innodb_use_sys_malloc = 1
    #默认设置值为1.设置为0:表示Innodb使用自带的内存分配程序;设置为1:表示InnoDB使用操作系统的内存分配程序。
    [mysqldump]
    quick
    #它强制 mysqldump 从服务器查询取得记录直接输出而不是取得所有记录后将它们缓存到内存中
    max_allowed_packet = 512M
    #限制server接受的数据包大小;指代mysql服务器端和客户端在一次传送数据包的过程当中数据包的大小
    net_buffer_length = 16384
    #TCP/IP和套接字通信缓冲区大小,创建长度达net_buffer_length的行
    [mysql]
    auto-rehash
    #auto-rehash是自动补全的意思
    [isamchk]
    #isamchk数据检测恢复工具
    key_buffer = 256M
    sort_buffer_size = 256M
    read_buffer = 2M
    write_buffer = 2M
    [myisamchk]
    #使用myisamchk实用程序来获得有关你的数据库桌表的信息、检查和修复他们或优化他们
    key_buffer = 256M
    sort_buffer_size = 256M
    read_buffer = 2M
    write_buffer = 2M
    [mysqlhotcopy]
    interactive-timeout
    #mysqlhotcopy使用lock tables、flush tables和cp或scp来快速备份数据库.它是备份数据库或单个表最快的途径,完全属于物理备份,但只能用于备份MyISAM存储引擎和运行在数据库目录所在的机器上.
    #与mysqldump备份不同,mysqldump属于逻辑备份,备份时是执行的sql语句.使用mysqlhotcopy命令前需要要安装相应的软件依赖包.
    
  7. 安装jdbc驱动

     	mkdir -p /usr/share/java
    cd /usr/share/java 把 mysql-connector-java-5.1.46.jar 拷贝到该目录下
    chmod 777 mysql-connector-java-5.1.46.jar
    ln -s mysql-connector-java-5.1.46.jar mysql-connector-java.jar
    

    在这里插入图片描述

  8. 建立CM、Hive等需要的表

    create database metastore default character set utf8;  
    CREATE USER 'hive'@'%' IDENTIFIED BY 'password';   
    GRANT ALL PRIVILEGES ON metastore. * TO 'hive'@'%';   
    FLUSH PRIVILEGES;  
    
    
    create database cm default character set utf8;  
    CREATE USER 'cm'@'%' IDENTIFIED BY 'password';   
    GRANT ALL PRIVILEGES ON cm. * TO 'cm'@'%';   
    FLUSH PRIVILEGES;  
    
    
    create database am default character set utf8;   
    CREATE USER 'am'@'%' IDENTIFIED BY 'password';    
    GRANT ALL PRIVILEGES ON am. * TO 'am'@'%';    
    FLUSH PRIVILEGES;      
    
    
    create database rm default character set utf8;   
    CREATE USER 'rm'@'%' IDENTIFIED BY 'password';    
    GRANT ALL PRIVILEGES ON rm. * TO 'rm'@'%';    
    FLUSH PRIVILEGES;
    
    
    create database hue default character set utf8;   
    CREATE USER 'hue'@'%' IDENTIFIED BY 'password';    
    GRANT ALL PRIVILEGES ON hue. * TO 'hue'@'%';    
    FLUSH PRIVILEGES;
    
    
    create database oozie default character set utf8;   
    CREATE USER 'oozie'@'%' IDENTIFIED BY 'password';    
    GRANT ALL PRIVILEGES ON oozie. * TO 'oozie'@'%';    
    FLUSH PRIVILEGES;
    
    
    create database sentry default character set utf8;   
    CREATE USER 'sentry'@'%' IDENTIFIED BY 'password';    
    GRANT ALL PRIVILEGES ON sentry. * TO 'sentry'@'%';    
    FLUSH PRIVILEGES;
    
    
    create database nav_ms default character set utf8;   
    CREATE USER 'nav_ms'@'%' IDENTIFIED BY 'password';    
    GRANT ALL PRIVILEGES ON nav_ms. * TO 'nav_ms'@'%';    
    FLUSH PRIVILEGES;
    
    
    create database nav_as default character set utf8;  
    CREATE USER 'nav_as'@'%' IDENTIFIED BY 'password';   
    GRANT ALL PRIVILEGES ON nav_as. * TO 'nav_as'@'%';   
    FLUSH PRIVILEGES;
    

    在这里插入图片描述

二、Cloudera Manager安装


  1. 配置本地repo源
    1.下载CM6.1的安装包,地址为:
        https://archive.cloudera.com/cm6/6.1.0/redhat7/yum/RPMS/x86_64/cloudera-manager-agent-6.1.0-769885.el7.x86_64.rpm         
        https://archive.cloudera.com/cm6/6.1.0/redhat7/yum/RPMS/x86_64/cloudera-manager-daemons-6.1.0-769885.el7.x86_64.rpm        
        https://archive.cloudera.com/cm6/6.1.0/redhat7/yum/RPMS/x86_64/cloudera-manager-server-6.1.0-769885.el7.x86_64.rpm      
        https://archive.cloudera.com/cm6/6.1.0/redhat7/yum/RPMS/x86_64/cloudera-manager-server-db-2-6.1.0-769885.el7.x86_64.rpm      
        https://archive.cloudera.com/cm6/6.1.0/redhat7/yum/RPMS/x86_64/oracle-j2sdk1.8-1.8.0+update141-1.x86_64.rpm
        https://archive.cloudera.com/cm6/6.1.0/allkeys.asc
    
    2.下载CDH6.1的安装包,地址为:
        https://archive.cloudera.com/cdh6/6.1.0/parcels/CDH-6.1.0-1.cdh6.1.0.p0.770702-el7.parcel
        https://archive.cloudera.com/cdh6/6.1.0/parcels/CDH-6.1.0-1.cdh6.1.0.p0.770702-el7.parcel.sha256
        https://archive.cloudera.com/cdh6/6.1.0/parcels/manifest.json
    
    3.cdh6.1.0 和 cm6.1.0
        mkdir /root/cdh6.1.0   把 CDH 6.1.0 的三个文件放到/root/cdh 6.1.0中,并且注意把sha256后缀的文件名修改为sha
        mkdir /root/cm6.1.0     把 Cloudera Manager 6.1.0 的6个文件放到/root/cm6.1.0中
    
    
    4.执行createrepo命令生成rpm元数据。
        cd /root/cm6.1.0
        yum install createrepo
        createrepo . (注意此命令的最后带一个点) 最终 cm6.1目录下多了一个repodata目录,,如下图所示
        
    5.配置Web服务器
        将 cdh6.1目录 和 cm6.1目录 移动到/var/www/html目录下, 使得用户可以通过HTTP访问这些rpm包。
        cd /root
        mkdir -p /var/www/html
        mv ./cdh6.1.0/ ./cm6.1.0/ /var/www/html
    
    
    6.使得用户可以通过HTTP访问这些/var/www/html目录下的文件
        1.yum install httpd  安装httpd服务
        2.systemctl start httpd 启动httpd服务
        3.ps -ef | grep httpd 查看httpd服务是否启动
        4.vim /etc/yum.repos.d/os.repo 以下为文件内容    
            [osrepo]
            name=os_repo
            baseurl=http://192.168.215.138/cm6.1.0
            enabled=true
            gpgcheck=false
        5.sudo yum repolist
        6.vim /etc/httpd/conf/httpd.conf
            修改 /etc/httpd/conf/httpd.conf 配置文件,在<IfModule mime_module>中修改以下内容
            把 AddType application/x-gzip .gz .tgz 第 284 行 修改为 AddType application/x-gzip .gz .tgz .parcel
        7.重启httpd服务 systemctl restart httpd
        8.浏览器即可打开以下链接:如正常访问,则如下图所示
            http://192.168.215.138/cdh6.1.0/
            http://192.168.215.138/cm6.1.0/
    
    
    7.制作Cloudera Manager的repo源
        1.vim /etc/yum.repos.d/cm.repo 以下为文件内容
            [cmrepo]
            name=cm_repo
            baseurl=http://192.168.215.138/cm6.1.0
            enable=true
            gpgcheck=false
        2.sudo yum repolist
        3.重启httpd服务 systemctl restart httpd
    
    注意:
    在这里插入图片描述
    访问repo:
    在这里插入图片描述
    在这里插入图片描述
  2. 安装Cloudera Manager Server
```shell
 	1.安装CM6.1时,请先安装官方提供的JDK:oracle-j2sdk1.8-1.8.0+update141-1.x86_64.rpm
    1.第一种方式:(目前使用这种方式即可)
        因为已经配置好repo仓库所以yum时会到192.168.215.138/cm6.1.0目录下找到oracle-j2sdk1.8-1.8.0+update141-1.x86_64.rpm进行安装
        yum -y install oracle-j2sdk1.8-1.8.0+update141-1.x86_64
        默认安装在 /usr/java/jdk1.8.0_141-cloudera
        vim /etc/profile 文件中内容如下
            JAVA_HOME=/usr/java/jdk1.8.0_141-cloudera
                CLASSPATH=.:$JAVA_HOME/lib/tools.jar
                PATH=$JAVA_HOME/bin:$PATH
            export JAVA_HOME CLASSPATH PATH
        重新加载profile配置文件,让配置文件生效:source /etc/profile     
            检查是否已配置好新的JDK:java -version
            如果是采用三台虚拟机部署全分布式的话,需要将环境变量分发到对应的节点上,现在是配置单节点,所以不需要做
            scp -r /etc/profile root@NODE2:/etc/
            scp -r /etc/profile root@NODE3:/etc/
    2.第二种方式(暂不使用这种方式安装)
        直接使用 rpm -ivh 命令安装 rpm 文件的方式
        rpm -ivh oracle-j2sdk1.8-1.8.0+update141-1.x86_64.rpm
        默认安装在 /usr/java/jdk1.8.0_141-cloudera

2.通过yum安装Cloudera Manager Server:(Cloudera Manager Server的源 已经配置到了repo库中)
    yum -y install cloudera-manager-server
    最后一行显示 Complete!

3.初始化数据库
    执行:/opt/cloudera/cm/schema/scm_prepare_database.sh mysql cm cm password
    成功后,最后一行显示 All done, your SCM database is configured correctly!

4.启动Cloudera Manager Server
    必须保证MySQL启动了,才能正常启动Cloudera Manager Server:service mysql start
    查看MySQL是否启动:ps -ef | grep mysql,如已启动,则最后一行显示 root      12860   1183  0 20:46 pts/0    00:00:00 grep --color=auto mysql
    启动Cloudera Manager Server:systemctl start cloudera-scm-server 
    查看是否启动:ps -ef | grep cloudera-scm-server ,如正常启动,则最后一行显示:root      12911   1183  0 20:49 pts/0    00:00:00 grep --color=auto cloudera-scm-server
    查看cloudera-scm-server状态:systemctl status cloudera-scm-server ,如正常则显示 Active: active (running)

5.检查端口是否监听
    如未安装 netstat,则需要安装netstat,执行:yum install net-tools   注意,centos7默认安装的时候一般都已经安装有的
    查看端口,执行:netstat -lnpt | grep 7180 要等一段时间启动完全启动成功后,才能看到端口被使用,然后才能真正访问到CM的登录网页
             正在情况下,则显示 tcp 0  0 0.0.0.0:7180  0.0.0.0:*  LISTEN  68289/java

6.通过 192.168.215.138:7180/cmf/login 访问 CM
```

如正常访问,则显示如下,用户名和密码都是admin
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021011517162297.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N1amlhbmdtaW5n,size_16,color_FFFFFF,t_70)

三、安装CDH6.1.0


  1. 安装前注意事项(注意:这里是单节点安装)
    在CDH安装之前必须保证NODE1主节点中的以下程序均已启动
    1.确保每台机器已经完成了时间同步,如未同步则执行:ntpdate -u ntp6.aliyun.com  (根据aliyun提供的服务进行)
        确保已经启动ntpd时间同步服务:systemctl status ntpd,如已经启动,则显示Active: active (running) since
        否则执行:systemctl start ntpd 或者 systemctl restart ntpd
        查看ntpd时间同步服务进程是否存在:ps -ef | grep ntpd,如存在,则显示 root      13025   1183  0 20:59 pts/0    00:00:00 grep --color=auto ntpd
        查看时间同步状态 ntpstat
        查看时间:date 或 timedatectl
    
    2.确保MySQL已启动,才能正常启动Cloudera Manager Server,执行:service mysql status,  如正常,则显示SUCCESS! MySQL running (3337)
    
    3.确保httpd已启动,执行:systemctl status httpd ,如未启动,则执行:systemctl start httpd 进行启动
      启动httpd服务之后,可以浏览器查看 192.168.215.138/cm6.1.0/ 和 192.168.215.138/cdh6.1.0/
    
    4.确保cloudera-scm-server已经启动,如未启动,则执行:systemctl start cloudera-scm-server 启动之后需要一段时间才能完全整个启动(一般一分钟之内),才可以访问得到 192.168.215.138:7180/cmf/login
      如需要停止,则执行:systemctl stop cloudera-scm-server    
      如需要重启,则执行:systemctl restart cloudera-scm-server        
      启动Cloudera Manager Server,一般自动启动,无需手动
        1.查看是否启动:ps -ef | grep cloudera-scm-server 
        2.查看启动状态:systemctl status cloudera-scm-server,启动正常显示 Active: active (running)
        3.cloudera-scm-server 默认使用的端口 7180,那么就可以通过 192.168.215.138:7180/cmf/login 访问 CM
        4.可以通过netstat来查看cloudera-scm-server是否启动:netstat -lnpt | grep 7180  
          正常启动,则显示 tcp 0  0 0.0.0.0:7180  0.0.0.0:*  LISTEN  68289/java
    
  2. 安装CDH
    1. CDH集群安装向导
      通过 192.168.215.138:7180/cmf/login 访问 CM,如下图:
      在这里插入图片描述

    2. 登录成功后,点击继续
      在这里插入图片描述

    3. 勾选复选框接受该协议,点击继续
      在这里插入图片描述

    4. 默认我们有60天的试用期,点击继续
      在这里插入图片描述

    5. 进入集群安装页面,点击继续
      在这里插入图片描述

    6. 可以直接忽略当前的TLS传输层安全协议,点击继续按钮,进入下一步
      在这里插入图片描述

    7. 输入主机ip或者名称,点击搜索找到主机后点击继续,注意这里可以输入多个,如有多台主机,则按照如下方式进行输入。格式:192.168.215.138,192.168.215.139,192.168.215.140 多台主机间使用英文模式下的逗号进行分割。这里我只有一台,所以只输入一台的主机名或者ip地址:
      在这里插入图片描述

    8. 选择自定义存储库,输入cm的http地址:http://192.168.215.138/cm6.1.0/
      在这里插入图片描述
      使用Parcel选择,点击“更多选项”,点击“-”删除其它所有地址,输入 http://192.168.215.138/cdh6.1.0/, 点击“保存更改”,点击“继续”
      在这里插入图片描述
      注意,当点击保存更改按钮后,弹窗关闭,需要在原来的页面上选择CDH的版本,如下图所示,然后继续
      在这里插入图片描述

    9. 进入下一步,选择jdk,然后点击继续按钮
      在这里插入图片描述

    10. 输入ssh账号密码(即root用户密码),点击继续按钮
      在这里插入图片描述

    11. 进入下一步,安装Cloudera Manager相关到各个节点,等待agent安装完毕后,自动跳转到下一步开始分发parcel,点击“继续”。如下图为正在安装所需要的组件 :
      在这里插入图片描述
      上图执行完毕后,会跳转到如下图所示页面,下载所需的parcels,并进行分发
      在这里插入图片描述
      执行完毕后,如下图所示:
      在这里插入图片描述

    12. 进入下一步主机检查,确保所有检查项均通过。Fayson的机器因为有多个Java版本有一些警告,此步可以忽略。具体警告信息即解决方案如下:

      1.警告:
          从CDH 6开始,PostgreSQL支持的Hue要求Psycopg2版本至少为2.5.4,有关详细信息,请参阅文档。
          如果主机不运行CDH 6,或者不使用PostgreSQL运行Hue,或者不兼容RHEL 6,则可以忽略此警告。
          以下主机具有不兼容的Psycopg2版本“2.5.1”:
      2.解决:
          首先安装epel扩展源:yum -y install epel-release
          更新完成之后,就可安装pip:yum -y install python-pip
          安装完成之后清除cache:yum clean all
          更新pip:pip install --upgrade pip
          更新psycopg2:pip install --upgrade psycopg2 还是无法解决,暂时忽略
          其他:
               安装 python3 如下:
               1、yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make
      
               2、安装libffi库:yum install libffi-devel -y
                  注意:
                  python3中有个内置模块叫ctypes,它是python3的外部函数库模块,提供了兼容C语言的数据类型,并通过它调用Linux系统下的共享库(Shared library),此模块需要使用centos7系统中外部函数库(Foreign              function library)的开发链接库(头文件和链接库)。
                  由于在centos7系统中没有安装外部函数库(libffi)的开发链接库软件包,所以在安装pip的时候就报了"ModuleNotFoundError: No module named '_ctypes'"的错误。
      
               2、下载python3.7.2:https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tar.xz,然后上传到虚拟机上,比如就上传到/root目录下
               3、解压并安装   
                      tar -xvJf Python-3.7.2.tar.xz
                      cd /root/Python-3.7.2
                      ./configure prefix=/usr/local/python3
                      make && make install
                      #添加python3的软链接
                      ln -s /usr/local/python3/bin/python3 /usr/bin/python3
                      #添加 pip3 的软链接
                      ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
      
              4、执行python3 -V  看看输出的是不是python3的版本
              5、执行python2 -V 和 python -V 看到的就是python2的版本
              6、如果执行 python -V 是python3的版本的话,需要修改如下情况:
                  因为执行yum需要python2版本,所以我们还要修改yum的配置,执行 vi /usr/bin/yum 把 #! /usr/bin/python 修改为 #! /usr/bin/python2
                  同理 vi /usr/libexec/urlgrabber-ext-down 文件里面的 #! /usr/bin/python 也要修改为 #! /usr/bin/python2
      
    13. 选择需要安装的服务
      在这里插入图片描述

    14. 进入集群角色分配,可参考如下官网链接:

      https://www.cloudera.com/documentation/enterprise/6/6.0/topics/cm_ig_host_allocations.html#host_role_assignments按照主机查看
      

      按照主机查看,默认的配置(单机的话不需要修改),选择继续按钮即可
      在这里插入图片描述

    15. 测试数据库连接
      和前面的MySQL数据库建立的数据库名和用户名密码是相关的,如下所示 :

      create database metastore default character set utf8;                   
      CREATE USER 'hive'@'%' IDENTIFIED BY 'password';
                            
      create database am default character set utf8;                    
      CREATE USER 'am'@'%' IDENTIFIED BY 'password';  
      
      1.强烈不推荐写bind-address=xxx,那么后面的CDH安装对应的组件时要填写的“数据库主机名称”默认使用主机名。
      2.如果/etc/my.cnf中配置了bind-address=localhost 的话,那么在CDH的安装页面中,配置连接数据库的主机名称必须为localhost。   
          缺点:但是在安装hue时,“数据库主机名称”并无法使用localhost或任何主机名,所以造成无法安装hue 
      3.不配置 bind-address=localhost 的话,则使用主机名(NDOE1)作为此处的数据库主机名称 
      4.如果安装impala,在impala daemon节点上还需要安装perl:yum install perl   rpm -qa | grep perl 
      5.如果安装hue,需要在相关节点上安装python-lxml:yum install python-lxml   rpm -qa | grep python-lxml
      

      在这里插入图片描述

    16. 进入目录设置,此处使用默认目录,根据实际情况进行目录修改(默认不需要修改),点击继续按钮:
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      至此,全部步骤已经完成了!你们也试试吧~!

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐