环境准备:
本机:mac
虚拟机软件:parallels desktop
虚拟机系统:Linux-CentOS 6.5 64位
主节点:master(1台)
从节点:slave1(1台)
原先设置了俩台从节点,资源太紧张,导致各种问题。做实验只能先部署俩台了。mster节点内存最少4G,slave1最少 1G。
系统准备:
1. 修改主机名:
vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=master.hadoop
2. 修改IP:
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0”
BOOTPROTO="dhcp”
HWADDR="00:1C:42:DD:1C:64”
IPV6INIT="yes”
NM_CONTROLLED="yes”
ONBOOT="yes”
TYPE="Ethernet”
UUID="08593a90-0e8e-42d8-9835-098f07632ad1”
#IPADDR=192.168.1.27
#NETMASK=255.255.255.0
//设置网关
GATEWAY=10.211.55.2
此处IP配置根据自己机器实际情况配置。
目的肯定是所有节点可以ping通,如果需要在本地物理机上访问虚拟机集群的页面啥的,需要虚拟机与物理宿主机互ping通。
3. 修改主机名与IP的映射关系:
vim /etc/hosts
10.211.55.4 master.hadoop
10.211.55.5 slave1.hadoop
4. 关闭防火墙
service iptables stop
chkconfig iptables —list
chkconfig iptables off
5. 安装JDK
安装好的Centos系统有时会自动安装OpenJdk,
用命令java -version查看:
rpm -qa |grep java
删除:rpm -e —nodeps
rpm -ivh jdk-7u55-linux-x64.rpm
配置一个全局的JAVA_HOME变量:
echo "JAVA_HOME=/usr/java/latest/" >> /etc/environment
执行命令,查看Jdk是否安装正确
java -version
6. 关闭selinux:
修改/etc/selinux/config 下的 SELINUX=disabled
7. ulimit设置
echo '* soft nofile 65536' >>/etc/security/limits.conf
echo '* hard nofile 65536' >>/etc/security/limits.conf
echo '* soft nproc 131072' >>/etc/security/limits.conf
echo '* hard nproc 131072' >>/etc/security/limits.conf
echo '* soft nofile 65536' >>/etc/security/limits.d/90-nproc.conf
echo '* hard nofile 65536' >>/etc/security/limits.d/90-nproc.conf
echo '* soft nproc 131072' >>/etc/security/limits.d/90-nproc.conf
echo '* hard nproc 131072' >>/etc/security/limits.d/90-nproc.conf
8. reboot
软件安装:
1 . 打通SSH(所有节点)
这里master节点和其他datanode节点会略有区别。
首先说有节点均执行如下命令,遇到提示一路回车即可:
ssh-keygen -t rsa
ssh-copy-id localhost
无密码登录自己(注意:这里master节点必须的)
ssh-copy-id 需要无密登录的机器
然后输入密码即可,以后再到其他机器就不需要密码额
2 . 安装mysql(master节点)
http://blog.csdn.net/korder/article/details/37509355
本次安装需要创建如下数据库
(不包括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
--oozie数据库
create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci
以上数据库,可能会根据安装组件的不同略有差别。
给用户授权(这里密码设为hadoop)
grant all on *.* to root@"%" Identified by "hadoop";
3 . 正式开工安装Cloudera Manager 5(cm5)
根据自己的系统选择相应的版本,
拷贝cloudera-manager-el6-cm5.5.0_x86_64.tar到master节点的/opt目录下:
(解压到/opt目录下,不能解压到其他地方,因为cdh5的源会默认在/opt/cloudera/parcel-repo寻找)
tar xvf cloudera-manager-el6-cm5.5.0_x86_64.tar
得到cm-5.5.0和cloudera俩个目录
给所有节点添加cloudera-scm用户:
useradd –system –home=/opt/cm-5.0.0/run/cloudera-scm-server –no-create-home –shell=/bin/false –comment “Cloudera SCM User” cloudera-scm
修改/opt/cm-5.0.0/etc/cloudera-scm-agent/config.ini 下面的serer_host
server_host=master.hadoop
为Cloudera Manager 5建立数据库:
/opt/cm-5.0.0/share/cmf/schema/scm_prepare_database.sh mysql cm
-hlocalhost -uroot -phadoop –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.0.0/share/cmf/lib/目录下。 开启Cloudera Manager 5 Server端:
/opt/cm-5.0.0/etc/init.d/cloudera-scm-server start
设置开机启动:
cp /opt/cm-5.0.0/etc/init.d/cloudera-scm-server /etc/init.d/cloudera-scm-server
chkconfig cloudera-scm-server on
注意server首次启动不要立即关闭或重启,因为首次启动会自动创建相关表以及数据,如果因为特殊原因中途退出,请先删除所有表以及数据之后再次启动,否则将会出现启动不成功的情况。 开启Cloudera Manager 5 Agents端。 先scp /opt/cm-5.0.0到所有datanode节点上,然后在每台机器上开启Agents端:
scp -r /opt/cm-5.0.0 root@slave1:/opt/cm-5.0.0
等待拷贝成功,在所有datanode节点上启动:(注意必须以管理员权限启动)
/opt/cm-5.0.0/etc/init.d/cloudera-scm-agent start
设置开机启动:
cp /opt/cm-5.0.0/etc/init.d/cloudera-scm-agent /etc/init.d/cloudera-scm-agent
chkconfig cloudera-scm-agent on
浏览器启动Cloudera Manager 5 控制台(默认端口号是7180),启动成功就会看到登陆页面。
admin/admin
4 . 安装CDH5
先下载到本地http://archive-primary.cloudera.com/cdh5/parcels/5.5.0/,这里需要下载两样东西,首先是与自己系统版本相对应的parcel包,然后是manifest.json文件。下载完成后将这两个文件放到master节点的/opt/cloudera/parcel-repo下(目录在安装Cloudera Manager 5时已经生成),注意目录一个字都不能错,接下来打开manifest.json文件,里面是json格式的配置,我们需要的就是与我们系统版本相对应的hash码,因为我们用的是Centos6.5,所以找到如下位置:
vim manifest.json
在文件中查找与你下载对应的.parcel
比如 /xxx-xxx-el6.parcel
在找到的位置下面就看到hash值了。
将“hash”的值复制下来,然后创建一个文件,文件名与你的parel包名一致,并加上.sha后缀。
这样你的目录下将有这3个文件,将“hash”的值复制到新建的sha文件中,并保存,好了,我们的本地源制作完成了。这样基本大功告成了,再之后的操作就是控制台按照步骤安装即可。
xxx-xxx-el6.parcel
xxx-xxx-el6.parcel.sha
manifest.json
打开master.hadoop:7180,登陆控制台,默认账户和密码都是admin,安装时选择免费版,之后由于cm5对中文的支持很强大,按照提示安装即可,如果系统配置有什么问题在安装过程中会有提示,根据提示给系统安装组件就可以了。
如果在安装时选择了安装Hive,可能会遇到安装失败的问题,查看一下日志发现时安装Hive时需要安装JDBC驱动,所以同样我们将Mysql的驱动包拷贝到/opt/cloudera/parcels/CDH-5.0.0-1.cdh5.0.0.p0.47/lib/hive/lib/目录下,之后再继续安装就不会遇到问题了。
安装过程中常出现的一些状况,请参考:
5 . 图解安装:
Cloudera Manager 5 配置好了,server和agent端都正常启动。
CDH5也下载好了,并存放在master节点的/opt/cloudera/parcel-repo下,当然这里有三个文件,参考上一步骤。
在物理宿主机上打开 http://master.hadoop:7180 登录:
admin/admin
如果本地没有配置hosts,则用http://ip:7180
登录后,是一些协议什么的,同意就行了:
继续,选择版本:
这里我们选择第一个,Cloudera Express,以前有50节点限制,现在没有了:
继续:
这里让配置安装哪些主机,说明:哪台机器装了cm5的agent,这里就会默认显示出来,并为受控状态。如果想新增主机,可以在新主机页签出,输入hostname或者ip来搜索。继续:
选择CDH的版本:因为我装的是最新的,所以如图,如果你装的时候有选择,根据自己下的版本对应选择就是了。继续:
让装JDK了,不装,继续:
是否启用单用户模式,啥意思? 就是问你是否需要集群只需一个用户就可以管理。我还是习惯hdfs就是hdfs,hadoop就是hadoop,yarn就是yarn,各自干各的,不用选,继续:
安装截图有点乱,集群装时,可能有漏抓图了,不过没事,大致知道咋回事就行了。这张意思是下载解压parcel,如果第一个‘已下载’出现红色,不用管,那是因为你已经提前下载好了,然后等待它执行完整个流程。继续:
检查主机正确性,一般会出现俩个警告:
解决办法:
echo 0 > /proc/sys/vm/swappiness
echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag
cat /etc/sysctl.conf
vm.swappiness=0
sysctl -p
选择自定义:
选择要安装的服务:注意自己的内存大小,继续:
默认就行了,也可以自己配置,继续:
数据库连接测试,继续:
默认继续:
没了。最后一页,完成,恭喜成功了!