相关包的下载地址 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上
登录到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 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 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建立数据库 [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/libcp /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
|