分享

一步一步离线部署cloudera &hadoop

helloCC 发表于 2015-9-28 22:24:08 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 0 33211
相关包的下载地址
  CDH5.4.5 版本:http://pan.baidu.com/s/1hqCnSuK
最新版本可参考

准备工作:系统环境搭建
    1、 安装CentOS6.7,并将所有虚拟机网络设置为主机模式。
    2、 关闭防火墙(所有节点)
    3、 修改配置文件进行网络配置(所有节点)
3.1.网络设置
        [root@localhostDesktop]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
                 DEVICE=eth1                 #设置网络接口名称
                 ONBOOT=yes               #设置网络接口在系统启动时激活。
                 BOOTPROTO=static                #配置为静态地址
                 IPADDR=192.168.84.103
                 NETMASK=255.255.255.0
                 GATEWAY=192.168.84.1        #网络接口的默认网关
3.2.主机名配置文件   vi /etc/sysconfig/network
        NETWORKING=yes
        HOSTNAME=master.hadoop             设置主机名称, 查看主机名 hostname $name
3.3.本地主机名称解析文件 vi /etc/hosts
        192.168.84.101master
        192.168.84.102datanode1
        192.168.84.103datanode2
3.4、重启网络服务 #service network restart
3.5、重启系统: #reboot -h 0
4、 安装JDK(所有节点)
4.1.  卸载系统自带OPEN-JDK(所有节点)
  安装好的Centos系统有时会自动安装OpenJdk,用命令java -version查看
使用 rpm -qa | grep java 查询java相关的包,使用 rpm -e --nodeps 包名卸载.
     4.2.  安装JDK(所有节点)
        [root@datanode1Desktop]# cd /mnt/hgfs/tools/jdk/
             [root@datanode1 jdk]# rpm -ivhjdk-7u79-linux-x64.rpm
       4.3.   修改系统配置环境变量~/.bash_profile文件
              [root]#vim ~/.bash_profile
        在文件的最后面加入以下行:
    #set javaenvironment
    JAVA_HOME=/usr/java/jdk1.7.0_79
    PATH=$JAVA_HOME/bin:$PATH
    CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib
    export JAVA_HOME CLASSPATH PATH
      重新加载.bash_profile文件使生效
            [root]#source ~/.bash_profile
    备注:一般而言,配置环境变量时,如果所有用户都会使用,则可在/etc/profile里  配置;如果个人使用,就在自己的用户目录下的.bash_profile里配置。采用后者方法   更为安全,它可以把使用这些环境变量的权限控制到用户级别。JAVA_HOME 设置为JAVA的安装路径。    4.5.  检验java是否安装成功
       [root]#java -version
   5、 安装NTP服务(所有节点)
5.1修改选定的服务器的本地时间  
              #date -s "2015-09-23 19:38:30"   标准时间
              
#clock -w         将修改后的时间写入硬件时钟,确保重启有效
5.2. 配置NTP服务器,在选定的NTP服务器(假定IP为192.168.84.101)上执行:
           $vim /etc/ntp.conf
5.2.1. 192.168.84.101的本地时钟作为时间供给源,这样即便失去网络连接,它也可以继续为网络提供服务;
              server 127.127.1.0
              fudge127.127.1.0 stratum 10
              #server 0.centos.pool.ntp.org iburst
              #server1.centos.pool.ntp.org iburst
              #server2.centos.pool.ntp.org iburst
              #server3.centos.pool.ntp.org iburst
5.2.2. 配置客户端的授权,也就是给指定的机器(客户端)设置访问NTP Server的权限
       restrict 192.168.84.1 mask255.255.255.240 nomodify notrap
       这一行的含义是授权192.168.84.1网段上的所有机器可以从这台机器上查询和同步时间。
5.2.3 配置开机启动
           $service ntpd start     
        $chkconfigntpd on
5.3. 配置NTP客户端
5.3.1在所有客户端上vim /etc/ntp.conf,添加:
              server192.168.84.101
5.3.2 手动同步时间
              $ntpdate -u 192.168.84.101 (内网ntp服务器)
5.3.3 配置开机启动
           $service ntpd start     
        $chkconfig ntpd on
注意:当server与client之间的时间误差过大时(可能是1000秒),处于对修改时间可能对系统和应用带来不可预知的问题,NTP将停止时间同步!所以如果发现NTP启动之后时间并不进行同步时,应该考虑到可能是时间差过大引起的,此时需要先手动进行时间同步!
6、 SSH无密码登录配置
       在Hadoop中,namenode是通过SSH(Secure Shell)来启动和停止各个DataNode上的各种守护进程的,这就须要在节点之间执行指令的时候是不须要输入密码的形式,故我们须要配置SSH运用无密码公钥认证的形式。
    其配置方法是通过为master上的用户hadoop生成其密钥对,询问其保存路径时直接回车采用默认路径,当提示要为生成的密钥输入passphrase的时候,直接回车,也就是将其设定为空密码。生成的密钥对id_rsa,id_rsa.pub,默认存储在/home/hadoop/.ssh目录下,然后将id_rsa.pub的内容复制到每个机器(也包括本机)的/home/hadoop/.ssh/authorized_keys文件中。
6.1、生成公钥
       在master和datanode机器上,执行
              [root@master~]$ ssh-keygen -t dsa
       然后三个回车下去,此时会在~/.ssh目录下生成一对密钥。
6.2、复制公钥
l  设置master无密码登录datanode
              首先把master上的公钥追加到authorized_keys文件
              [root@master~]$ cd /root/.ssh/
        [root@master .ssh]$ cat id_dsa.pub >> authorized_keys
              修改authorized_keys文件权限.
              [root@master .ssh]$chmod 600 authorized_keys
              然后把master的公钥文件拷贝到datanode上
              [root@master.ssh]$ scp id_dsa.pub datanode1:~/.ssh/master.pub

              登录到datanode服务器, 修改权限
              [root@datanode1~]$ cd /root/.ssh/
        [root@datanode1 .ssh]$cat master.pub >> authorized_keys
        [root@datanode1 .ssh]$chmod 600 authorized_keys
              回到master服务器, 测试在master是否不用输入密码便可登录到datanode
        [root@master .ssh]$ssh datanode1
l  设置datanode无密码登录master(仿照上面步骤)
登录datanode1服务器:
           [root@datanode1 /]$ cd /root/.ssh/
        [root@datanode1 .ssh]$ cat id_dsa.pub >> authorized_keys
        [root@datanode1 .ssh]$chmod 600 authorized_keys
        [root@datanode1 .ssh]$scp id_dsa.pub master:~/.ssh/datanode1.pub
              登录master服务器:
           [root@master ~]$ cd /root/.ssh/
        [root@master .ssh]$cat datanode1.pub >> authorized_keys
        [root@master .ssh]$chmod 600 authorized_keys
        回到datanode1服务器测试SSH
              [root@datanode1 .ssh]$ ssh master
7、 安装配置MySql(主节点)
l  检查系统是否已经安装MySQL,如果已经安装则先删除
        [root@localhostlib]# rpm -qa|grep -i mysql
            mysql-libs-5.1.71-1.el6.x86_64
        [root@localhostlib]# rpm -e mysql-libs-5.1.71-1.el6.x86_64 --nodeps
         查看残留的目录:
        [root@localhostlib]# whereis mysql
        [root@localhostDesktop]# rm -rf /usr/lib64/mysql
l  手动进行MySQL安装
        打开master终端,进入放置MySQL安装程序的文件夹目录
                     [root@masterDesktop]# cd /mnt/hgfs/tools/MySQL/5.6.26
        安装MySQL服务端                    
            [root@masterMySQL]# rpm -ivh MySQL-server-5.6.26-1.el6.x86_64.rpm
                warning:MySQL-server-5.6.26-1.el6.x86_64.rpm: Header V3                    
                DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
                Preparing...    ######################################[100%]
                1:MySQL-server              ########################### [100%]
                ............
                New default config file was created as/usr/my.cnf and
                will be used by default by the server whenyou start it.
                You may edit this file to change serversettings
        安装MySQL客户端
                     [root@master MySQL]#rpm -ivh MySQL-client-5.6.26-1.el6.x86_64.rpm
        设置开机启动
            [root@master ~]# chkconfig mysql on
            [root@master ~]# chkconfig --list | grepmysql
                mysql     0:off 1:off   2:on    3:on    4:on    5:on    6:off
                   启动mysql服务
           [root@master ~]# service mysql start
            Starting MySQL..SUCCESS!
        设置root的初试密码
                       [root@master 5.6.26]#service mysql stop
            [root@master5.6.26]# mysqld_safe --skip-grant-tables &
            [root@master5.6.26]# mysql -uroot -p回车进入
                            mysql>use mysql;
                       mysql>update user set password=PASSWORD("mysql")whereuser="root";
                            mysql> flush privileges;
              mysql> quit;
        [root@master 5.6.26]# service mysql restart
                   [root@master5.6.26]# mysql -uroot -pmysql
        mysql> SET PASSWORD = PASSWORD('mysql');
                   mysql>select 1;
        创建以下数据库:
        mysql> createdatabase hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
        mysql> createdatabase amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
           授权root用户在主节点拥有所有数据库的访问权限
                   mysql>grant all privileges on *.* to 'root'@'master' identified by 'mysql' with grant option;

                            注:授权root用户在主节点master拥有所有数据库的访问权限
8、 安装ClouderaManager Server 和Agent
    下载地址http://archive-primary.cloudera.com/cm5/cm/5/,下载完成后只上传到master节点即可。然后解压到/opt目录下,不能解压到其他地方,因为cdh5的源会默认在/opt/cloudera/parcel-repo寻找。 [root@master opt]# cp /mnt/hgfs/tools/hadoop/cloudera/5.4.6/cloudera-manager-el6-cm5.4.6_x86_64.tar.gz  /opt
         [root@master opt]#tar xzvf cloudera-manager*.tar.gz
  ClouderaManager 5建立数据库
         首先需要去MySql的官网下载JDBC驱动,http://dev.mysql.com/downloads/connector/j/ ,     解压后,找到mysql-connector-java-5.1.33-bin.jar,放到/opt/cm-5.1.3/share/cmf/lib/中。
                  [root@master ~]# cp/mnt/hgfs/tools/MySQL/mysql-connector-java-5.1.36-bin.jar /opt/cm-5.4.6/share/cmf/lib
[root@master ~]#cp /mnt/hgfs/tools/MySQL/mysql-connector-java-5.1.36-bin.jar  /opt/cloudera/parcels/CDH-5.4.5-1.cdh5.4.5.p0.7/lib/oozie/libext
         在主节点初始化CM5的数据库:
       /opt/cm-5.4.6/share/cmf/schema/scm_prepare_database.shmysql cm -hlocalhost -uroot -pmysql --scm-hostlocalhost scm scm scm
Agent配置
              修改/opt/cm-5.1.3/etc/cloudera-scm-agent/config.ini中的server_host为主节点的主机名:
                            [root@master ~]#vi /opt/cm-5.4.6/etc/cloudera-scm-agent/config.ini
                            server_host=master
同步Agent到其他节点
                       [root@master ~]#scp -r  /opt/cm-5.4.6root@datanode2:/opt/cm-5.4.6
在所有节点创建cloudera-scm用户
              useradd --system --home=/opt/cm-5.4.6/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCMUser" cloudera-scm
准备Parcels,用以安装CDH5
     将CHD5相关的Parcel包放到主节点的/opt/cloudera/parcel-repo/目录中(parcel-repo需要手动创    建)。相关的文件如下:
[root@master 5.4.6]# cp/mnt/hgfs/tools/hadoop/cloudera/5.4.6/CDH-* /opt/cloudera/parcel-repo
[root@master 5.4.6]# cp /mnt/hgfs/tools/hadoop/cloudera/5.4.6/man*/opt/cloudera/parcel-repo
l  CDH-5.4.5-1.cdh5.4.5.p0.12-el6.parcel
l  CDH-5.4.5-1.cdh5.4.5.p0.12-el6.parcel.sha1
l  manifest.json
     最后将CDH-5.4.5-1.cdh5.4.5.p0.12-el6.parcel.sha1,重命名为  CDH-5.4.5-1.cdh5.4.5.p0.12-el6.parcel.sha,这点必须注意,否则,系统会重新下载 CDH-5.4.5-1.cdh5.4.5.p0.12-el6.parcel文件。
相关启动脚本
通过 /opt/cm-5.4.6/etc/init.d/cloudera-scm-serverstart 启动服务端。
通过 /opt/cm-5.4.6/etc/init.d/cloudera-scm-agent start 启动Agent服务。
我们启动的其实是个service脚本,需要停止服务将以上的start参数改为stop就可以了,重启是restart。
CDH5的安装配置
  Cloudera Manager Server和Agent都启动以后,就可以进行CDH5的安装配置了。
这时可以通过浏览器访问主节点的7180端口测试一下了(由于CMServer的启动需要花点时间,这里可能要等待一会才能访问),默认的用户名和密码均为admin:   
      http://master:7180/

9.问题及解决
问题1:OOzie安装过程报错java.lang.Exception: Could not connect to the database: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver        at org.apache.oozie.tools.OozieDBCLI.validateConnection(OozieDBCLI.java:473)        at org.apache.oozie.tools.OozieDBCLI.createDB(OozieDBCLI.java:179)................
[root@master Desktop]#vi /opt/cloudera/parcels/CDH-5.4.5-1.cdh5.4.5.p0.7/etc/oozie/conf.dist/oozie-env.sh
说明:打开oozie-env.sh文件,添加exportJAVA_HOME=/usr/local/jdk1.7
问题2:安装Hive或OOzie的时候可能会报错,因为我们使用了MySql作为元数据存储,hive或OOzie默认没有带mysql的驱动,通过以下命令拷贝一个就行了:cp  /mnt/hgfs/tools/MySQL/mysql-connector-java-5.1.36-bin.jar  /opt/cloudera/parcels/CDH-5.4.5-1.cdh5.4.5.p0.7/lib/hive/lib
cp /mnt/hgfs/tools/MySQL/mysql-connector-java-5.1.36-bin.jar/opt/cloudera/parcels/CDH-5.4.5-1.cdh5.4.5.p0.7/lib/oozie/lib
问题3:Cloudera 建议将/proc/sys/vm/swappiness 设置为 0。当前设置为 60。使用 sysctl 命令在运行时更改该设置并编辑 /etc/sysctl.conf 以在重启后保存该设置。您可以继续进行安装,但可能会遇到问题,ClouderaManager 报告您的主机由于交换运行状况不佳。以下主机受到影响:
解决办法:执行下面即可
       echo 0 > /proc/sys/vm/swappiness
      echo never >/sys/kernel/mm/redhat_transparent_hugepage/defrag






没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条