公司生产环境RHEL6.4下的Cloudera环境搭建详解

来源:互联网 发布:广告市场有多大 知乎 编辑:程序博客网 时间:2024/05/09 01:36

 

1  准备安装介质

1.1 底层服务器

服务器比较多,有HP,DELL,IBM多家服务器。

1.2 虚拟化

选用vmsphere的虚拟化

1.3 操作系统

选用Redhat Enterprise Linux 6.4作为操作系统,下载地址:

http://www.redhat.com

1.4     Java开发与运行环境

选用Oracle jdk1.7.0_55作为JAVA开发与运行环境,下载地址:

http://www.oracle.com/technetwork/java/javase/downloads/index.html

1.5     Cloudera Manager(CM)

本文选用Cloudera Manager5.4.1作为管理平台,下载地址:

http://archive.cloudera.com/cm5/redhat/6/x86_64/cm/5.4.1/RPMS/x86_64/

1.6     Cloudera Distribution Hadoop(CDH)

本文选用CDH5作为云计算环境,相关的组件包下载地址:

http://archive.cloudera.com/cdh5/redhat/6/x86_64/cdh/5.4.1/RPMS/x86_64/

2  安装虚拟化

2.1 安装Vmware Vsphere

此处是运维的事,这次就先不介绍了,如有需要可以加QQ群找我。

3  安装与配置操作系统

3.1 安装系统

 3.1.1关闭防火墙 和SELinux

     说明:如果不关闭,集群间通信可能会出问题,造成服务不能正常启动。生产环境如果要做为在线服务还是需要。

  1.1关闭防火墙:

    serviceiptables stop (临时关闭)

    chkconfigiptables off(重启后生效)

  1.2关闭SELINUX:

    setenforce0 (临时生效)(这个方法我没有运行成功)  

    修改/etc/selinux/config 下的SELINUX=disabled (重启后永久生效 )该方法测              试有效。

查看selinux状态:/usr/sbin/sestatus–v

 3.1.2修改主机名

说明:

a.三台机器都需要进行相同操作

b./etc/sysconfig/network配置对应的主机名

c./etc/hosts 三台机器内容相同,来实现三台机器相互可以通过主机名访问

d.如果机器较多可以通过配置DNS服务器来解析主机名

  1)修改/etc/sysconfig/network文件

NETWORKING=yes    

HOSTNAME=bigdata-cdh01.epri.com.cn

 2)修改/etc/hosts文件

192.168.5.198 bigdata-cdh01.epri.com.cn bigdata-cdh01192.168.5.200 bigdata-cdh02.epri.com.cn bigdata-cdh02192.168.5.201 bigdata-cdh03.epri.com.cn bigdata-cdh03192.168.5.202 bigdata-cdh04.epri.com.cn bigdata-cdh04192.168.5.203 bigdata-cdh05.epri.com.cn bigdata-cdh05192.168.5.204 bigdata-cdh06.epri.com.cn bigdata-cdh06192.168.5.205 bigdata-cdh07.epri.com.cn bigdata-cdh07192.168.5.206 bigdata-cdh08.epri.com.cn bigdata-cdh08

  3)重启网络服务后生效:servicenetwork restart

测试中重启网络服务会断网,而且不会自动连接,需要点击一下连接图标才能再次连接,请谨慎操作

3.2 建立用户与所属组

3.3 安装JAVA开发与运行环境

安装JDK6,配置环境变量

3.3.1先删除系统自带的jdk

rpm -qa | grep java

rpm -e --nodeps java-1.5.0-gcj-1.5.0.0-29.1.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 --nodepsjava-1.6.0-openjdk-devel-1.6.0.0-1.66.1.13.0.el6.x86_64

3.3.2安装jdk  rpm -ivh  jdk-7u55-linux-x64.rpm默认会安装在/usr/java下

rpm -ivh jdk-*.rpm安装jdk

用命令:vi /etc/profile

用快捷键Shift+g在末尾添加如下             `            

exportJAVA_HOME=/usr/java/jdk1.7.0_55
export PATH=$JAVA_HOME/bin:$PATH 
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 

检验安装是否成功java -version 检测是否成功

3.4 创建SSH认证证书

在所有服务器中执行命令ssh-keygen -t rsa,默认在/root/.ssh目录下生成证书文件,如下图所示:


将主节点和所有子节点目录/root/.ssh下的公钥文件id_rsa.pub分别重命名为authorized_keys_master、authorized_keys_node1、authorized_keys_node2、authorized_keys_node3。

利用以下命令将子节点的证书文件传送到主节点:

scp /root/.ssh/authorized_keys_node1 root@cloudera-manager:/root/.ssh

利用以下命令将主节点与所有子节点的认证信息都加入authorized_keys中:

cat authorized_keys_master>>authorized_keys

catauthorized_keys_node1 >>authorized_keys

catauthorized_keys_node2>>authorized_keys

catauthorized_keys_node3>>authorized_keys

利用以下命令将认证的证书文件分发到子节点:

scp authorized_keysroot@cloudera-node225:/root/.ssh

设置authorized_keys权限
$ chmod 600 authorized_keys 
设置.ssh目录权限
$ chmod 700 -R .ssh

4  安装Cloudera Manager
cm前期准备工作,在/opt/下创建cloudera目录,然后在目录下创建cm,下面存放的是,rpm文件。
在/var/www/html目录下创建cdh5并拷入以下文件:

CDH-5.3.3-1.cdh5.3.3.p0.5-el6.parcel

CDH-5.3.3-1.cdh5.3.3.p0.5-el6.parcel.sha

manifest.json

4.1   


而parcel-repo是自动生成。


4.2 创建用户

adduser cloudera-scm

4.3 修改Cloudera Manager Agent配置文件

修改/etc/cloudera-scm-agent/config.ini中的server_host为主节点的主机名

4.4 安装RPM软件包

依次安装以下软件包:

enterprise-debuginfo

cloudera-manager-daemons

cloudera-manager-agent

cloudera-manager-server

cloudera-manager-server-db

4.5 MySQL数据库的安装与配置

chkconfig mysqld on设置开机启动,并service mysqldstart启动mysql服务,

并根据提示设置root的初试密码:mysqladmin-u root password 'xxxx'。

mysql -uroot -pxxxx进入mysql命令行,创建以下数据库:

默认mysql不会生成 /etc/my.cnf文件,cp  /usr/my.cnf  /etc/my.cnf 

配置my.cnf

[client]

default-character-set=utf8

[mysqld]

default-character-set=utf8

default-collation=utf8_general_ci

default-storage-engine=InnoDB

创建数据库

create database cmf;

3) 建数据库,授权。需要哪些库呢,免费版:amon、hmon、hive、smon、scm(Cloudera Manager 自身,我自己命名的)

 这些库的名字其实是可以自定义的。其它都是官网示例的名字,就这样吧。保持一致。只有最后一个库是我自己命名的。

--hive数据库  

create database hive  DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

--集群监控数据库  

create database amon DEFAULT CHARSET utf8 COLLATEutf8_general_ci;   

create database smon DEFAULT CHARSET utf8 COLLATEutf8_general_ci;  

create database hmon DEFAULT CHARSET utf8 COLLATEutf8_general_ci;  

--hue数据库

create database hue DEFAULT CHARSET utf8 COLLATEutf8_general_ci;

--oozie数据库

create database oozie DEFAULT CHARSET utf8 COLLATEutf8_general_ci;

并登录后用命令SHOW VARIABLES LIKE 'character%';查看值是否为utf8;

创建用户及远程授权连接

 grant all on *.* toroot@"%" Identified by "root";

GRANT ALL PRIVILEGES ON *.* TO 'cmf'@'%' IDENTIFIED BY'cmf' WITH GRANT OPTION;

GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%' IDENTIFIED BY 'hive'WITH GRANT OPTION;

GRANT ALL PRIVILEGES ON *.* TO 'hue'@'%' IDENTIFIED BY 'hue'WITH GRANT OPTION;

GRANT ALL PRIVILEGES ON *.* TO oozie@'%' IDENTIFIED BY 'oozie'WITH GRANT OPTION;

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.2.101'IDENTIFIED BY 'admin' WITH GRANT OPTION;

FLUSH PRIVILEGES;

修改/etc/cloudera-scm-server/db.properties文件,内容如下:


将mysql-connector-java.jar文件放置于/usr/share/cmf/lib/目录中。

4.6 启动服务

依次启动以下服务:

mysqld、cloudera-scm-server-db、cloudera-scm-server、httpd

4.7 端口映射

7180、7182

完成后可以通过浏览器访问http://192.168.2.100:7180

5  通过Cloudera Manager安装CDH

时钟同步,以其中一个主机作为服务器添加如下:

vi   /etc/ntp.conf

# add by liupeng on 2015-06-25

#restrict 192.168.5.0 mask 255.255.255.0 nomodify notrap

server 127.127.1.0 minpoll 4 maxpoll 5

fudge 127.127.1.0 stratum 2

检测成功与否

chkconfig --list ntpd

其中2-5为on状态就代表成功

其他的主机也开启服务,然后添加

先执行ntpdate 192.168.5.198

然后执行service ntpd start

#server 0.rhel.pool.ntp.org

#server 1.rhel.pool.ntp.org

#server 2.rhel.pool.ntp.org

server 192.168.5.198

检查是否成功,用ntp stat命令查看同步状态,出现以下状态代表启动成功:

synchronised to NTP server () at stratum 2

time correct to within 74 ms

polling server every 128 s

注意点:ntp服务器搭建完成后,节点就会与时间服务器进行时间同步,Cloudera建议采用ntp的方式进行时间同步,如果采用crontab+ntp的方式,cloudera manager是无法判断是否安装了ntp的,会一直报"The host's NTP service is not synchronized to any remoteserver"这样的错误(本人就是这样做的,导致集群一直报错,但是时间本来就没有误差,搞了好久才解决)


修改/etc/cloudera-scm-agent/config.ini文件中以下内容:server_host=cloudera-manager

server_port=7182

所有节点主机都将/proc/sys/vm/swappiness设置为0,方法如下:

执行命令echo 0 > /proc/sys/vm/swappiness

禁用“透明大页面”:

/sys/kernel/mm/redhat_transparent_hugepage/defrag设置为nerver,方法如下:

执行命令echo never >/sys/kernel/mm/redhat_transparent_hugepage/defrag

 


























6  运行&测试


'''


到此安装结束。


最后是个人简介:

个人就职于世界500强前5的国有企业,从事大数据,云计算,人工智能方面的研究和开发工作,个人比较喜欢开源,所以努力把自己工作中遇到的问题以博客的形式保存下来反馈于互联网,如果大家比较感兴趣可以加QQ群688281396进行交流。

原创粉丝点击