Kafka+Storm+HBase项目Demo(1)--CDH搭建hadoop集群

这是一个类似淘宝双11大屏幕的项目 。

kafka+storm+hbase整合:kafka作为分布式消息系统,实时消息系统,有生产者和消费者;storm作为大数据的实时处理系统;hbase是apache hadoop 的数据库,其具有高效的读写性能。

Cloudera的CDH和Apache的Hadoop的区别
目前而言,不收费的Hadoop版本主要有三个(均是国外厂商),分别是:Apache(最原始的版本,所有发行版均基于这个版本进行改进)、Cloudera版本(Cloudera’s Distribution Including Apache hadoop,简称CDH)、Hortonworks版本(Hortonworks Data Platform,简称“HDP”),对于国内而言,绝大多数选择CDH版本,CDH和Apache版本主要区别如下:
(1) CDH对Hadoop版本的划分非常清晰,只有两个系列的版本,分别是cdh3和cdh4,分别对应第一代Hadoop(Hadoop 1.0)和第二代Hadoop(Hadoop 2.0),相比而言,Apache版本则混乱得多;比Apache hadoop在兼容性,安全性,稳定性上有增强。
(2)CDH3版本是基于Apache hadoop 0.20.2改进的,并融入了最新的patch,CDH4版本是基于Apache hadoop 2.X改进的,CDH总是并应用了最新Bug修复或者Feature的Patch,并比Apache hadoop同功能版本提早发布,更新速度比Apache官方快。
(3)安全 CDH支持Kerberos安全认证,apache hadoop则使用简陋的用户名匹配认证
(4)CDH文档清晰,很多采用Apache版本的用户都会阅读CDH提供的文档,包括安装文档、升级文档等。
(5)CDH支持Yum/Apt包,Tar包,RPM包,Cloudera Manager四种方式安装,Apache hadoop只支持Tar包安装。
注:CDH使用推荐的Yum/Apt包安装时,有以下几个好处:
1、联网安装、升级,非常方便
2、自动下载依赖软件包
3、Hadoop生态系统包自动匹配,不需要你寻找与当前Hadoop匹配的Hbase,Flume,Hive等软件,Yum/Apt会根据当前安装Hadoop版本自动寻找匹配版本的软件包,并保证兼容性。
4、自动创建相关目录并软链到合适的地方(如conf和logs等目录);自动创建hdfs, mapred用户,hdfs用户是HDFS的最高权限用户,mapred用户则负责mapreduce执行过程中相关目录的权限。

安装环境
三台机器(虚拟机或真实机器)
CentOS 6.5 x64 (内存2G以上)

相关包的下载地址:
ClouderaManager地址:http://archive.cloudera.com/cm5/cm/5/
CDH安装包地址:http://archive.cloudera.com/cdh5/parcels/latest/
由于我们的操作系统为CentOS6.5,需要下载以下文件:
CDH-5.3.3-1.cdh5.3.3.p0.5-el6.parcel
CDH-5.3.3-1.cdh5.3.3.p0.5-el6.parcel.sha1
manifest.json
JDBC:http://download.softagency.net/MySQL/Downloads/Connector-J/

准备工作:系统环境搭建
以下操作均用root用户操作。

1.网络配置(所有节点)
vi /etc/sysconfig/network修改hostname:
NETWORKING=yes
HOSTNAME=cdh1
通过service network restart重启网络服务生效。
vi /etc/hosts,修改ip与主机名的对应关系:
192.168.1.101 cdh1
192.168.1.102 cdh2
192.168.1.103 cdh3

2.打通SSH,设置ssh无密码登陆(所有节点)
执行ssh-****** -t rsa,一路回车,生成无密码的**对。
将公钥添加到认证文件中:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys,并设置authorized_keys的访问权限:chmod 600 ~/.ssh/authorized_keys。
通过scp命令将各节点的认证文件拷贝到所有其他节点使得各节点能够相互访问。

3.安装Oracle的Java(所有节点)
CentOS自带OpenJdk,不过运行CDH5需要使用oracle的JDK,需要Java 7的支持。
卸载自带的OpenJdk,使用rpm -qa | grep java查询java相关的包,使用rpm -e --nodeps 包名卸载之。
去Oracle的官网下载jdk的rpm安装包,并使用rpm -ivh 包名安装,最后配置环境变量。

4.安装配置MySQL(主节点)
通过yum install mysql-server安装mysql服务器。chkconfig mysqld on设置开机启动,并service mysqld start启动mysql服务,并根据提示设置root的初试密码:mysqladmin -u root password ‘xxxx’。
mysql -uroot -pxxxx进入mysql命令行,创建以下数据库:
create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

5.关闭防火墙和SELinux(所有节点)
注意:需要在所有的节点上执行,因为涉及到的端口太多了,临时关闭防火墙是为了安装起来更方便,安装完毕后可以根据需要设置防火墙策略,保证集群安全。
关闭防火墙:
service iptables stop #临时关闭
chkconfig iptables off #重启后生效
关闭SELINUX:
setenforce 0 #临时生效
或修改/etc/selinux/config 文件的 SELINUX=disabled #重启生效

6.ntp时间同步
1)安装NTP(每个节点)
yum install ntp

2)配置NTP
master配置:(选用复旦大学ntp服务器)
vi /etc/ntp.conf
server ntp.sjtu.edu.cn prefer

slave配置:(同步master)
vi /etc/ntp.conf
server cdh1

3)开启NTP服务
service ntpd start
chkconfig ntpd on

4)查看同步效果
命令:ntpstat

正式开工
安装Cloudera Manager Server 和Agent
主节点解压安装
cloudera manager的目录默认位置在/opt下,解压:tar xzvf cloudera-manager*.tar.gz将解压后的cm-5.3.3和cloudera目录放到/opt目录下。
为Cloudera Manager 5建立数据库
首先需要去MySql的官网下载JDBC驱动,http://dev.mysql.com/downloads/connector/j/,解压后,找到mysql-connector-java-5.1.35-bin.jar,放到/opt/cm-5.3.3/share/cmf/lib/中。

在主节点初始化CM5的数据库:
/opt/cm-5.3.3/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -uroot -pxxxx --scm-host localhost scm scm scm

Agent配置
修改/opt/cm-5.3.3/etc/cloudera-scm-agent/config.ini中的server_host为主节点的主机名。
同步Agent到其他节点
scp -r /opt/cm-5.3.3 [email protected]:/opt/

在所有节点创建cloudera-scm用户
useradd --system --home=/opt/cm-5.3.3/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment “Cloudera SCM User” cloudera-scm

准备Parcels,用以安装CDH5
将CHD5相关的Parcel包放到主节点的/opt/cloudera/parcel-repo/目录中(parcel-repo需要手动创建)。
相关的文件如下:
CDH-5.3.3-1.cdh5.3.3.p0.5-el6.parcel
CDH-5.3.3-1.cdh5.3.3.p0.5-el6.parcel.sha1
manifest.json
最后将CDH-5.3.3-1.cdh5.3.3.p0.5-el6.parcel.sha1,重命名为CDH-5.3.3-1.cdh5.3.3.p0.5-el6.parcel.sha,这点必须注意,否则,系统会重新下载CDH-5.3.3-1.cdh5.3.3.p0.5-el6.parcel.sha1文件。

相关启动脚本
通过/opt/cm-5.3.3/etc/init.d/cloudera-scm-server start启动服务端。
通过/opt/cm-5.3.3/etc/init.d/cloudera-scm-agent start启动Agent服务。
我们启动的其实是个service脚本,需要停止服务将以上的start参数改为stop就可以了,重启是restart。

CDH5的安装配置
Cloudera Manager Server和Agent都启动以后,就可以进行CDH5的安装配置了。
这时可以通过浏览器访问主节点的7180端口测试一下了(由于CM Server的启动需要花点时间,这里可能要等待一会才能访问),默认的用户名和密码均为admin:
Kafka+Storm+HBase项目Demo(1)--CDH搭建hadoop集群
Kafka+Storm+HBase项目Demo(1)--CDH搭建hadoop集群
各个Agent节点正常启动后,可以在当前管理的主机列表中看到对应的节点。选择要安装的节点,点继续。
Kafka+Storm+HBase项目Demo(1)--CDH搭建hadoop集群
接下来,出现以下包名,说明本地Parcel包配置无误,直接点继续就可以了。
Kafka+Storm+HBase项目Demo(1)--CDH搭建hadoop集群
点击,继续,如果配置本地Parcel包无误,那么下图中的已下载,应该是瞬间就完成了,然后就是耐心等待分配过程就行了。
Kafka+Storm+HBase项目Demo(1)--CDH搭建hadoop集群
接下来是服务器检查,
会提示错误,解决办法
echo 0 >/proc/sys/vm/swappiness(临时生效)
echo never >/sys/kernel/mm/redhat_transparent_hugepage/defrag(临时生效)

重启永久生效:
vi /etc/sysctl.conf
vm.swappiness=0
vi /etc/rc.local
echo never >/sys/kernel/mm/redhat_transparent_hugepage/defrag

Kafka+Storm+HBase项目Demo(1)--CDH搭建hadoop集群
接下来是选择安装服务:
Kafka+Storm+HBase项目Demo(1)--CDH搭建hadoop集群
服务配置,一般情况下保持默认就可以了(Cloudera Manager会根据机器的配置自动进行配置,如果需要特殊调整,自行进行设置就可以了):
Kafka+Storm+HBase项目Demo(1)--CDH搭建hadoop集群
接下来是数据库的设置,检查通过后就可以进行下一步的操作了
Kafka+Storm+HBase项目Demo(1)--CDH搭建hadoop集群
下面是集群设置的审查页面,全部保持默认配置即可:
Kafka+Storm+HBase项目Demo(1)--CDH搭建hadoop集群
终于到安装各个服务的地方了,注意,这里安装hive的时候可能会报错,因为我们使用了MySql作为hive的元数据存储,hive默认没有带mysql的驱动,通过以下命令拷贝一个就行了:
cp /opt/cm-5.3.3/share/cmf/lib/mysql-connector-java-5.1.35-bin.jar /opt/cloudera/parcels/CDH-5.3.3-1.cdh5.3.3.p0.5-el6.parcel/lib/hive/lib/
Kafka+Storm+HBase项目Demo(1)--CDH搭建hadoop集群
等待至完成。
Kafka+Storm+HBase项目Demo(1)--CDH搭建hadoop集群