有部分内容来自 http://www.wangyongkui.com/hadoop-cdh5/ 这个文件是根据官网操作,翻译的不错,但是有个别地方有错误
系统环境
1. 4台联想R510服务器,其中master节点4核心、8GB,其它节点双核心、4GB。
2. 网卡:100M。
3. 共有硬盘6TB。
4. 网络环境内网。
5. Centos6.5 x64(安装系统时尽量把开发包安装齐全,另master节点需要Mysql可以在安装系统时勾选)。
准备工作
1.1 卸载系统自带OPEN-JDK(所有节点)
安装好的Centos系统有时会自动安装OpenJdk,用命令java -version查看:
如有上述显示,说明系统里已经有OpenJdk,执行以下命令查看系统中有哪些OpenJdk相关包:
rpm -qa | grep java
其中有如下包必须卸载,根据系统版本不同,各个包版本号会有所差异: java-1.5.0-gcj-1.5.0.0-29.1.el6.x86_64 java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64 java-1.6.0-openjdk-devel-1.6.0.0-1.66.1.13.0.el6.x86_64 执行以下命令,卸载:
说明你如果你的系统也是centos 6.5 x64 你需要卸载jdk 如下
rpm -e --nodeps java-1.6.0-openjdk-devel-1.6.0.0-1.66.1.13.0.el6.x86_64
rpm -e --nodeps java-1.7.0-openjdk-devel-1.7.0.45-2.4.3.3.el6.x86_64
rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64
rpm -e --nodeps libvirt-java-0.4.9-1.el6.noarch
rpm -e --nodeps tzdata-java-2013g-1.el6.noarch
rpm -e --nodeps java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64
rpm -e --nodeps libvirt-java-devel-0.4.9-1.el6.noarch
安装JDK(所有节点,有你几台机器就按照几台)
1.2 安装jdk
(1)使用工具把jdk、hadoop复制到linux的/root/Downloads
(2)cp /root/Downloads/* /usr/local
(3)cd /usr/local
赋予执行权限 chmod u+x jdk-7u71-linux-x64.tar.gz
(4) tar -zxvf jdk-7u71-linux-x64.tar.gz
(5)重命名 mv jdk1.7.0_71 jdk
(6)执行命令 vi /etc/profile 设置环境变量
增加两行 export JAVA_HOME=/usr/local/jdk
export PATH=.:$JAVA_HOME/bin:$PATH
保存退出
执行命令 source /etc/profile
(7)验证:执行命令java -version
1.3 修改主机名
(1)执行命令hostname cdh1 修改会话中的hostname
(2)验证:执行命令hostname
(3)执行命令vi /etc/sysconfig/network 修改文件中的 hostname=cdh1
(4)验证:执行命令reboot -h now 重启机器
1.4 设置ip与hostname绑定
其中HOSTNAME与主机名一致。主机名如果跟系统安装时不一致请执行hostname命令让其立即生效,否则会影响各节点互相访问。修改/etc/hosts文件,添加:
(1)执行命令vi /etc/hosts
在文本最后增加一行 10.8.166.241 cdh1
10.8.166.242 cdh2
10.8.166.243 cdh3
10.8.166.244 cdh4
1.5 打通SSH(所有节点)
这里master节点和其他datanode节点会略有区别。 首先所有节点均执行如下命令,遇到提示一路回车即可:
1.6 ssh免密码登陆
(1)执行命令ssh-keygen -t rsa (然后一路Enter) 产生秘钥位于/root/.ssh/
(2)执行命令cp /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys 产生授权文件
(3)验证:ssh localhost (ssh 主机名)
1.7克隆操作
方式一
(1)如果克隆的直接下一步;
(2)判断本系统是否密码配置成功:
ssh cdh2 (ssh 主机名)
(3)主节点把密码传到从节点
ssh-copy-id -i cdh2
方式二
(1)ssh登陆到从节点
ssh cdh2
(2)从节点把密码传到主节点
ssh-copy-id -i cdh1
这两个只需操作一个就行了
cd /root/.ssh/
然后输入密码即可,以后再到其他机器就不需要密码额。
1.8关闭防火墙(所有节点)
防火墙会引起hadoop相关组件通讯的各种异常。
1.8.1关闭防火墙
(1)执行命令service iptables stop (说明:临时关闭)
(2)验证:执行命令service iptables status (说明:查看防火墙状态)
1.8.2关闭防火墙的自动开启
(1)执行命令chkconfig iptables off (说明:重启后生效)
(2)验证:执行命令chkconfig --list|grep iptables
1.9关闭selinux
1 .命令: vi /etc/sysconfig/selinux 或者
修改/etc/selinux/config 下的 SELINUX=disabled (重启后生效)。
2.“SELINUX=”后的信息为“disabled”
3.setenforce 0 (临时生效)
4.重启机器 指令 reboot
2.0 (非必须项)安装NTP服务(所有节点)
(备注:此操作我没有用,我命令:date查看一下系统时间,几个机器没有差别,再说也是内网,响应速度非常快)
集群中所有主机必须保持时间同步,如果时间相差较大会引起各种问题。 具体思路如下:
1. master节点作为ntp服务器与外界对时中心同步时间,随后对所有datanode节点提供时间同步服务。
2. 所有datanode节点以master节点为基础同步时间。
所有节点安装相关组件:ntp与ntpdate。按顺序安装即可,完成后,配置开机启动:
chkconfig ntpd on
检查是否设置成功:
chkconfig --list ntpd
其中2-5为on状态就代表成功。
配置内网NTP服务器(master节点)
在配置之前,先使用ntpdate手动同步一下时间,免得本机与对时中心时间差距太大,使得ntpd不能正常同步。这里选用65.55.56.206作为对时中心。
ntdate -u 65.55.56.206
ntp服务只有一个配置文件,配置好了就OK。 这里只给出有用的配置,不需要的配置都用#注掉,这里就不在给出:
driftfile /var/lib/ntp/driftrestrict 127.0.0.1restrict -6 ::1restrict default nomodify notrap server 65.55.56.206 preferincludefile /etc/ntp/crypto/pwkeys /etc/ntp/keys
配置文件完成,保存退出,启动服务,执行如下命令:
service ntpd startchkconfig ntpd on (设置开机启动)
检查是否成功,用ntpstart命令查看同步状态,出现以下状态代表启动成功:
synchronised to NTP server () at stratum 2time correct to within 74 mspolling server every 128 s
如果出现异常请等待几分钟,一般等待5-10分钟才能同步。
配置ntp客户端(所有datanode节点)ok保存退出,请求服务器前,请先使用ntpdate手动同步一下时间:
ntdate -u 192.168.1.101 (内网ntp服务器)
这里可能出现同步失败的情况,请不要着急,一般是本地的ntp服务器还没有正常启动,一般需要等待5-10分钟才可以正常同步。启动服务:
service ntpd start
chkconfig ntpd on
因为是连接内网,这次启动等待的时间会比master节点快一些,但是也需要耐心等待一会儿。
2.1 Mysql配置(master节点)
只需要配置master节点的Mysql即可。(这里不再介绍如何安装Mysql) 将mysql设置为开机启动:
chkconfig mysqld on
本次安装需要创建如下数据库(不包括Cloudera Manager的数据库,Cloudera Manager数据库有相关脚本创建,后面会有说明)
--hive数据库create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci--集群监控数据库create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci--hue数据库create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci
以上数据库,可能会根据安装组件的不同略有差别。 给用户授权(这里密码设为hadoop)
grant all on *.* to root@"%" Identified by "hadoop";
正式开工
安装Cloudera Manager 5(cm5)
下载地址http://archive-primary.cloudera.com/cm5/cm/5/,根据自己的系统选择相应的版本,本次安装选用的是cloudera-manager-el6-cm5.0.0_x86_64.tar.gz。下载完成后只上传到master节点即可。然后解压到/opt目录下,不能解压到其他地方,因为cdh5的源会默认在/opt/cloudera/parcel-repo寻找,怎么制作cdh5的本地源文件会在之后介绍。给所有节点添加cloudera-scm用户:
userdel --system --home=/opt/cm-5.3.0/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
修改/opt/cm-5.3.0/etc/cloudera-scm-agent/config.ini 下面的serer_host
server_host=cdh1
为Cloudera Manager 5建立数据库:
/opt/cm-5.3.0/share/cmf/schema/scm_prepare_database.sh mysql cm -h -uroot -proot --scm-host localhost scm scm scm
格式是:scm_prepare_database.sh 数据库类型 数据库 服务器 用户名 密码 –scm-host Cloudera_Manager_Server所在的机器,后面那三个不知道代表什么,直接照抄官网的了。 因为我们用的是Mysql数据库,所以我们需要下载Mysql的JDBC驱动,本次从官网上下载最新稳定版:mysql-connector-java-5.1.30.tar.gz,解压之后找到mysql-connector-java-5.1.30-bin.jar放到/opt/cm-5.3.0/share/cmf/lib/目录下。 开启Cloudera Manager 5 Server端:
1
/opt/cm-5.3.0/etc/init.d/cloudera-scm-server start
注意server首次启动不要立即关闭或重启,因为首次启动会自动创建相关表以及数据,如果因为特殊原因中途退出,请先删除所有表以及数据之后再次启动,否则将会出现启动不成功的情况。 开启Cloudera Manager 5 Agents端。 先scp /opt/cm-5.0.0到所有datanode节点上,然后在每台机器上开启Agents端:
1
scp -r /opt/cm-5.3.0 root@datanode1:/opt/cm-5.3.0
等待拷贝成功,在所有datanode节点上启动:(注意必须以管理员权限启动)
1
sudo /opt/cm-5.3.0/etc/init.d/cloudera-scm-agent start
浏览器启动Cloudera Manager 5 控制台(默认端口号是7180),启动成功就会看到登陆页面。
安装CDH5
先下载到本地http://archive-primary.cloudera.com/cdh5/parcels/5.3.0/,这里需要下载两样东西,首先是与自己系统版本相对应的parcel包,然后是manifest.json文件。下载完成后将这两个文件放到master节点的/opt/cloudera/parcel-repo下(目录在安装Cloudera Manager 5时已经生成),注意目录一个字都不能错,接下来打开manifest.json文件,里面是json格式的配置。
关于这个步骤我们可以更简单的操作,在官网上其实已经给出hash码,我们将其下载,并重命名为CDH-5.3.0-1.cdh5.3.0.p0.30-el6.parcel.sha
方式二(如果你想体验一下就用方式二,想简单就用方式一)
我们需要的就是与我们系统版本相对应的hash码,因为我们用的是Centos6.5,所以找到如下位置:
在这个大括号的最下面找到“hash”所对应的值。
将“hash”的值复制下来,然后创建一个文件,文件名与你的parel包名一致,并加上.sha后缀:
这样你的目录下将有这3个文件,将“hash”的值复制到新建的sha文件中,并保存,好了,我们的本地源制作完成了。这样基本大功告成了,再之后的操作就是控制台按照步骤安装即可。
如果在安装时选择了安装Hive,可能会遇到安装失败的问题,查看一下日志发现时安装Hive时需要安装JDBC驱动,所以同样我们将Mysql的驱动包拷贝到/opt/cloudera/parcels/CDH-5.3.0-1.cdh5.3.0.p0.47/lib/hive/lib/目录下,之后再继续安装就不会遇到问题了。
拷贝这个目录如果还是出问题的话,就执行下面步骤
错误1
JDBC driver cannot be found. Unable to find the JDBC database jar on host :cdh1
解决方法:将mysql的jar 文件放到 /usr/share/java (记住是host :cdh1 主机的)
再次测试链接可能还会有下面问题,我是mysql 的root 用户链接, 密码也正确
并且我在Windows平台也用mysqll链接工具也能正常链接成功。这里测试链接就是过不去,并报一下问题
错误2
Logon denied for user/password. Able to find the database server and databas
解决方法:新一个Mysql 用户 并授权你