上两周参与了公司大数据环境的搭建,最终采用的是cloudera公司提供的Cloudera Manager图形化安装方式,这个和Ambari比较类似,只不过cm支持中文。
首先,笔者来谈谈自己的一些感受。其实,笔者也是刚接触大数据没多久,但是比较有幸能在公司接触大数据相关的东西,所以想抓住这个机会,让自己能够成为广大hadoop粉丝的一员。
对于学习任何东西,在笔者看来,在稍微对此技术有一点了解之后,第一步比较重要的就是搭环境,因为没有环境后面的学习无法继续。就向学习java,你不会使用eclipse,那是件很痛苦的事。另外,我们可以假设哪天你的领导或是面试官问你,我们公司有一个新项目需要交由你负责完成,你说你连个环境都不会搭,比如前台的框架使用requirejs+jquery easyui(或是angularJS、extJS等)+html5+bootstrap+less,后台的框架使用springMVC+spring+mybatis(或者是ssh),另外在加上redis、elasticsearch、webservice(例如cxf)、maven、android以及海量数据相关的技术等。你说你做了很多项目,有很多项目经验,也单独完成过某个模块,然而到头来,你连一个基本的环境都搭不起来。所以大家得多锻炼自己的动手能力才行。
下面,直入正题。由于此次参与的项目会使用到hadoop相关的几个技术,例如Hbase、Hive、Impala、Spark、Zookeeper等技术,首先准备逐个逐个的安装,然后等都安装成功后再尝试使用cm一键安装方式。结果在安装impala的时候遇到比较大的麻烦,因为使用的是rpm安装方式,需要先安装好相关的依赖,然后启动一直报错缺少相关的jar包,也是蛋疼。然后,直接放弃这种方式,采用cm一键安装。
其实,hadoop从2004年,Google发表论文开始,到现如今,hadoop已经发展日益成熟、壮大。但是,对于集群环境的安装确实是一件比较痛苦的事,经常要花费大数据人员的大量时间和精力。所以任何东西没有做不到,只有你想不到的,图像化安装应运而生,大大节省了程序员的工作量。
下面,笔者分以下几个步骤进行介绍cm的安装过程:
大家可以访问http://www.cloudera.com/downloads/manager/5-6-0.html这个地址,查看一下cm安装的环境要求,centos需要使用6.4以上而且是64位的,同时对内存以及磁盘的空间都有严格的要求。
像笔者公司大数据测试环境的服务器内存都是65G左右,磁盘都是2T左右的。所以,没有一个可靠的环境是不行的。由于笔者不能随意使用公司的服务器,所以只能使用虚拟机安装了三台linux系统,也是够呛。最后基本上已经成功了,但是由于内存的原因,基本上无法运行了,也不能添加任何服务了,呵呵。但是在真实测试环境搭的是已经成功运行了。
首先,配置给三台服务器配置好ip:
执行:vim /etc/sysconfig/network-scripts/ifcfg-eth0
设置如下:
DEVICE="eth0"
BOOTPROTO="static"
HWADDR="00:0C:29:4E:BB:D5"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="b530dd2b-639e-4746-ba0d-254c78811de1"
IPADDR="172.31.26.200"
NETMASK="255.255.255.0"
GATEWAY="172.31.26.254"
DNS1="****"(这个自己设置一下)
然后,执行service network restart重启一下网络。
接下来,就是关闭SELinux、关闭防火墙。
关闭SELinux:
暂时关闭:setenforce 0 搭环境一定要注意关闭,像搭httpd服务的时候必须关掉。
执行vi /etc/selinux/config ,
设置
SELINUX=disabled
便可永久关闭。
关闭防火墙:
1) 重启后生效
开启: chkconfig iptables on
关闭: chkconfig iptables off
2) 即时生效,重启后失效
开启: service iptables start
关闭: service iptables stop
接下来,就是修改一下hosts文件,像大数据中一般使用主机名。
执行:vim /etc/hosts,添加
172.31.26.200 bigData200
172.31.26.222 bigData222
172.31.26.223 bigData223
三个节点都要添加。
如果某个过程中遇到错误,大家可以自行百度,都可以找到相应的解决办法。
建立Master到每一台Slave的SSH受信证书。由于Master将会通过SSH启动所有Slave的Hadoop,所以需要建立单向或者双向证书保证命令执行时不需要再输入密码。在Master和所有的Slave机器上执行:ssh-keygen -t rsa。执行此命令的时候,看到提示只需要回车。然后就会在/root/.ssh/下面产生id_rsa.pub的证书文件,通过scp将Master机器上的这个文件拷贝到Slave上(记得修改名称),例如:scp root@masterIP:/root/.ssh/id_rsa.pub /root/.ssh/46_rsa.pub,然后执行cat /root/.ssh/46_rsa.pub >>/root/.ssh/authorized_keys,建立authorized_keys文件即可,可以打开这个文件看看,也就是rsa的公钥作为key,user@IP作为value。从slave到master反向也是一样的操作。
然后每台服务器上都修改ssh的配置文件:vim /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
执行:vim /etc/ssh/ssh_config:
StrictHostKeyChecking no
最后,可以看下主节点和子节点上的authorized_keys
执行cat /root/.ssh/authorized_keys,
也就是说,你要无密码登录哪台主机,就得在那台主机上有一个授权的key。
这个配置,其实是为了保证slave节点与主节点的时间保持一致。
如果没有安装ntp服务,则先安装:
ntp安装:
yum -y install ntp /yum安装NTP服务/
chkconfig –add ntpd /添加NTP/
chkconfig ntpd on /开机自启动NTP/
设置:
1.在iDriller主节点上编辑配置文件/etc/ntp.conf
vim /etc/ntp.conf
去掉一下两行前面的#号
#server 127.127.1.0 # local clock
#fudge 127.127.1.0 stratum 10
在iDriller子节点上分别编辑配置文件/etc/ntp.conf
vim /etc/ntp.conf
在#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap行下面增加行:
server bigData200
启动ntp服务:
service ntpd start
验证:
watch ntpq -p
安装clush需要先配置好ssh免登陆。Clush可以在集群上并行执行shell命令并收集命令输出,所以分发文件就比较方便了。
大家可以先去下载clustershell-1.6-1.el6.noarch.rpm,然后安装:
rpm -ivh clustershell-1.6-1.el6.noarch.rpm
这个只需要安装在主节点上,安装好后,执行
vim /etc/clustershell/groups,然后清空所有设置:
all:bigData200,bigData222,bigData223
slaves:bigData222,bigData223
然后,我们可以创建一个文件touch /tmp/testfile,进行测试
clush -g all –copy /tmp/testfile –dest /tmp/,看是否分发到从节点上。
这一步可以说是最麻烦的,麻烦就在准备源,也就是rmp包,因为安装某个包时会有先安装很多依赖,所以这些包都得准备好。另外,为什么要使用本地源呢,因为大数据服务器一般是不会联网的,同时不使用本地源传输速度非常慢。
首先,需要安装一个httpd服务,这个可以不安装在集群的节点上,都行。
yum -y install httpd
service httpd restart
chkconfig httpd on
然后,http默认是将文件全部放在/var/www/html/下的:
这里,把cm相关的包放在cm目录下,把相关的常用包放在iso下,把升级包放在parcels下,然后启动服务后直接在浏览器中便可访问,如下
至于,需要哪些包,大家可以自行查阅下资料。
这里,我们先执行:cd /etc/yum.repos.d/
然后创建一个目录bak,把这些默认源移到bak下,添加本地源cm.repo和iso.repo:
cm.repo:
[cm]
name=cm
baseurl=http://rzx161/cm
enabled=1
gpgcheck=0
iso.repo:
[iso]
name=iso
baseurl=http://rzx161/iso
enabled=1
gpgckeck=0
gpgkey=http://172.31.25.161/iso/RPM-GPG-KEY-CentOS-6
然后使用clush分发到另外两条从节点上去,执行
clush -g all --copy *.repo --dest /etc/yum.repos.d/
先卸载原有mysql
rpm -qa | grep -i mysql | xargs rpm -e –nodeps
然后安装驱动
yum -y install mysql-connector-java
执行
yum -y install cloudera-manager-server*
yum -y install mysql-server
分别安装cm server和mysql。
设置服务为开机启动:
chkconfig cloudera-scm-server on
chkconfig cloudera-scm-server-db on
chkconfig mysqld on
启动mysql:service mysqld start
在mysql中创建对应用户和数据库:
mysql>create database cmf default character set utf8 collate utf8_general_ci;
mysql>grant all on cmf.* to 'cmf'@'localhost' identified by 'cmf';
mysql>flush privileges;
mysql>exit;
编辑/etc/cloudera-scm-server/db.properties,将cmf库正确配置:
com.cloudera.cmf.db.type=mysql
com.cloudera.cmf.db.host=localhost
com.cloudera.cmf.db.name=cmf
com.cloudera.cmf.db.user=cmf
com.cloudera.cmf.db.password=cmf
启动cm:
service cloudera-scm-server-db start
service cloudera-scm-server start
在浏览器访问这个地址便可看到:
密码默认是admin。
登陆进去后就是按照步骤操作:
当时,笔者前两次安装到这个位置都失败了,主要是系统版本的原因,导致一些依赖有问题,真是悲剧。这个过程中要填一些源,就把刚才搭建httpd中的路径http://172.31.25.161/cm/和http://172.31.25.161/parcels/填写进去即可。
这里我们可以看到,cm中可以添加很多服务,我们可以选择需要的服务先安装,之后也可以新增服务。
最好服务都成功后,并按照提示修改下相应的配置,便可看到:
在cm可以修改对于服务的配置文件,还可以执行命令,还可以监控服务等,之后都不需要到linux服务上去操作了,可见这种图形化操作界面的强大之处。
好了,此次cm一键安装就介绍到这儿了,讲到不是很仔细,希望给大家带来帮助,后面的话,笔者也就逐一学习使用这些技术,与大家一起共同学习分享!