CDH大数据平台搭建终极版
经过无数次的失败,终于将CDH安装到两台普通的笔记本电脑上,主要失败原因有以下几点:
- 不熟悉安装过程,官方给出的安装方法有三种,所以都尝试了一遍,浪费了大量时间,所以有时候方法多不见得是一件好事。
- 安装设备太差,有时会因为占用内存或者CPU占用过高而死机。
- 安装网络环境太差,导致传输过程可能出现超时失败现象。
- 安装时间过久,导致出错后重新再来时间付出太多。
以下讲的方法不是最优的方法,但是是我们最后的方法,可供参考。
1.搭建环境
两台笔记本电脑A和B,自带内存分别为12G和8G,安装VMware 12。
A开一个虚拟机,2*CPU,8G内存,使用桥接网卡模式,安装CentOS6.5,充当主机Master。
B开两个虚拟机,1*CPU,2G内存,使用桥接网卡模式,安装CentOS6.5,充当分机Slave1,Slave2。
两台电脑通过网线连接到学校内网,使用内网网络环境搭建,三台虚拟机的root密码必须一致。
2.安装前的准备
首先先下载以下安装包
- cloudera-manager-el6-cm5.8.0_x86_64.tar.gz (Cloudera Manager 安装包,el6代表使用的CentOs6.x,cm-5.8.0代表使用的Cloudera Manager版本为5.8.0)
- CDH-5.8.0-1.cdh5.8.0.p0.42-el6.parcel (CDH离线资源包)
- CDH-5.8.0-1.cdh5.8.0.p0.42-el6.parcel.sha1
- manifest.json
- cm5.8.0-centos6.tar.gz (里面有一些必要的环境)
- mysql-connector-java-5.1.6-bin.jar (JDBC)
下载路径分别为
http://archive.cloudera.com/cm5/cm/5/
http://archive.cloudera.com/cdh5/parcels/5.8.0/
http://archive.cloudera.com/cm5/repo-as-tarball/5.8.0/
注意:不要图方便少下什么,或者少安装什么,尤其是JDK一定要安装官方的,要不会导致后面Spark配制出错,这个地方我们起码失败了5、6次,一定要全部下下来,重来的代价会更高
3.安装前的配置
首先进入root权限:输入su
,再输入密码即可
3.1.配置主机名
分别修改各节点/etc/sysconfic/network文件,设置主机名为Master,Slave1,Slave2。
找到HOSTNAME可进行修改,名字以方便识别主节点和分节点为标准。
修改完后执行service network restart
重启服务。
使用hostname
进行验证。
如果没有生效,那就重启虚拟机。
3.2.关闭防火墙
执行命令:service iptables stop
再执行:chkconfig iptables off
使用chkconfig --list|grep iptables
检查是否全关
如果为iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off
则说明关完了
3.3.绑定ip与主机名
先查看ifconfig
三台虚拟机的ip。
分别在三台虚拟机上打开并更改hosts
vi /etc/hosts
输入如下
192.168.30.21 Master
192.168.30.22 Slave1
192.168.30.23 Slave2
配置完后,3台虚拟机互ping ip和主机名,验证是否配置成功。
3.4.配置ssh免密码登录(默认已安装ssh)
在Master中使用ssh-keygen -t rsa
生成秘钥,一路回车.
cd ~/.ssh
找到id_rsa.pub
,将其写入到authorized_keys
中.
输入cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
.
输入ssh Master
看看是否已经免秘钥,第一次可能要输密码和输一个yes.
成功后同理在其他两台机子上输入ssh-keygen -t rsa
生成秘钥。
将生成的秘钥如果是图形化的界面直接粘贴到Master的authorized_keys
中,再由Master使用scp分发给其他两台主机。
如果不是图形化,那就用putty,xshell等等登录虚拟机粘贴,如果没有,那就用scp传。
使用scp将authorized_keys
传给slave1和slave2,输入scp ~/.ssh/authorized_keys root@slave1:~/.ssh
把slave1改为slave2及传给2。
互相使用ssh hostname
登录对方看看是否免秘钥,不行检查authorized_keys
是否正确。
3.5.关闭SELINUX
setenforce 0 #临时生效
或
修改/etc/selinux/config 文件的 SELINUX=disabled #重启生效
3.6.安装Mysql(master节点)
首先使用rpm -qa|grep -i mysql
检查是否安装了Mysql,如果有
使用rpm -e 包名
删除Mysql包。
然后下载MySQL包
http://dev.mysql.com/downloads/mysql/#downloads
我使用的是MySQL-5.5.49-1.linux2.6.x86_64.rpm-bundle.tar这个文件,解压它得到
MySQL-client-5.5.49-1.linux2.6.x86_64.rpm
MySQL-devel-5.5.49-1.linux2.6.x86_64.rpm
MySQL-embedded-5.5.49-1.linux2.6.x86_64.rpm
MySQL-server-5.5.49-1.linux2.6.x86_64.rpm
MySQL-shared-5.5.49-1.linux2.6.x86_64.rpm
MySQL-shared-compat-5.5.49-1.linux2.6.x86_64.rpm
MySQL-test-5.5.49-1.linux2.6.x86_64.rpm
使用rpm -ivh MySQL*
全部安装,一个都不能少,要不可能会导致后面报错!
然后使用/usr/bin/mysql_secure_installation
改mysql密码。
输入mysql -u root -p
进入mysql。
首先创建用户
CREATE USER 'hive'@'%' IDENTIFIED BY 'hive';
CREATE USER 'hue'@'%' IDENTIFIED BY 'hue';
CREATE USER 'oozie'@'%' IDENTIFIED BY 'oozie';
在创建数据库
CREATE DATABASE hive;
CREATE DATABASE hue;
CREATE DATABASE oozie;
最后赋予各个用户权限
GRANT ALL ON hive.* TO 'hive'@'%'
GRANT ALL ON hue.* TO 'hue'@'%'
GRANT ALL ON oozie.* TO 'oozie'@'%'
3.7.安装JDK
解压cm5.8.0-centos6.tar.gz
后打开里面的rpm
文件夹,里面应该有一个JDK 1.6
和一个 Oracle JDK
,两个都要安装上。然后输入java -version
应该可以看到
java version "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b04)
Java HotSpot(TM) 64-Bit Server VM (build 20.6-b01, mixed mode)
3.8.配置NTP服务(所有节点)
安装NTP服务,使用yum install ntp
安装
修改ntp配置vi /etc/ntp.conf
Master设置server 210.72.145.44 #这是中国国家授时中心的IP
Slave1~2设置 server master
设置开机时自动运行时间服务
chkconfig ntpd on
启动或停止时间服务
service ntpd start
service ntpd stop
service ntpd restart
查看ntp服务状态watch ntpq -p
4.安装Cloudera Manager Server和Agent
4.1.创建cloudera-manager文件夹(1~7步在三个节点都要进行)
mkdir /opt/cloudera-manager
4.2.在master节点解压安装包至/opt/cloudera-manager默认目录
tar -zxvf cloudera-manager-el6-cm5.8.0x8664.tar.gz -C /opt/cloudera-manager
4.3.创建用户
useradd --system --home=/opt/cloudera-manager/cm-5.8.0/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
4.4.创建log文件夹
mkdir /var/log/cloudera-scm-server
chown cloudera-scm:cloudera-scm /var/log/cloudera-scm-server
4.5.修改agent指向的sever地址
进入到cd /opt/cloudera-manager/cm-5.8.0/etc/cloudera-scm-agent
使用vim config.ini
将server_host=localhost
改为server_host=master
4.6.创建存放parcel的文件夹
mkdir -p /opt/cloudera/parcel-repo
chown cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo
mkdir -p /opt/cloudera/parcels
chown cloudera-scm:cloudera-scm /opt/cloudera/parcels
4.7.创建run/cloudera-scm-agent文件夹
mkdir /opt/cloudera-manager/cm-5.8.0/run/cloudera-scm-agent
如果有则不用创建。
以下开始是在Master上进行!
4.8.为Cloudera Manager 5建立数据库
将mysql-connector-java-5.1.6-bin.jar文件放到/opt/cm-5.8.0/share/cmf/lib/中。
cp mysql-connector-java-5.1.6-bin.jar /opt/cloudera-manager/cm-5.8.0/share/cmf/lib/
4.9.在master节点初始化CM5的数据库
/opt/cloudera-manager/cm-5.8.0/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -uroot -proot --scm-host localhost scm scm scm
4.10.准备Parcels,用以安装CDH5
将CHD5相关的Parcel包放到主节点的/opt/cloudera/parcel-repo/目录中(parcel-repo需要手动创建)。
相关的文件如下:
- CDH-5.8.0-1.cdh5.8.0.p0.42-el6.parcel
- CDH-5.8.0-1.cdh5.8.0.p0.42-el6.parcel.sha1
- manifest.json
最后将CDH-5.8.0-1.cdh5.8.0.p0.42-el6.parcel.sha1,重命名为CDH-5.8.0-1.cdh5.8.0.p0.42-el6.parcel.sha,这点必须注意,否则,系统会重新下载CDH-5.3.8-1.cdh5.3.8.p0.5-el6.parcel.sha文件。
4.11.执行启动脚本
在master节点启动服务端:
/opt/cloudera-manager/cm-5.8.0/etc/init.d/cloudera-scm-server start
在所有节点启动Agent:
/opt/cloudera-manager/cm-5.8.0/etc/init.d/cloudera-scm-agent start
等待5分钟,分别使用
/opt/cloudera-manager/cm-5.8.0/etc/init.d/cloudera-scm-server status
/opt/cloudera-manager/cm-5.8.0/etc/init.d/cloudera-scm-agent status
检查server和agent状态。如果出错,比如死掉了之类的,去
/opt/cloudera-manager/cm-5.8.0/log
里面查看日志,看看是哪里报错了
如果agent报错是以下这样
Traceback (most recent call last):
File "/opt/cloudera-manager/cm-5.8.0/lib64/cmf/agent/build/env/lib/python2.6/site-packages/cmf-5.8.0-py2.6.egg/cmf/agent.py", line 2163, in connect_to_new_supervisor
self.get_supervisor_process_info()
File "/opt/cloudera-manager/cm-5.8.0/lib64/cmf/agent/build/env/lib/python2.6/site-packages/cmf-5.8.0-py2.6.egg/cmf/agent.py", line 2185, in get_supervisor_process_info
self.identifier = self.supervisor_client.supervisor.getIdentification()
File "/usr/lib64/python2.6/xmlrpclib.py", line 1199, in __call__
return self.__send(self.__name, args)
File "/usr/lib64/python2.6/xmlrpclib.py", line 1489, in __request
verbose=self.__verbose
File "/opt/cloudera-manager/cm-5.8.0/lib64/cmf/agent/build/env/lib/python2.6/site-packages/supervisor-3.0-py2.6.egg/supervisor/xmlrpc.py", line 470, in request
'' )
ProtocolError: <ProtocolError for 127.0.0.1/RPC2: 401 Unauthorized>
重启虚拟机即可解决,是因为有什么程序占用了那个端口。
5.配置CDH集群
PS:由于某些原因,安装的时候我的主机名也就是Master是叫yao5,不要在意
验证都正常工作后,就在浏览器打开http://master:7180进入CDH管理界面,由于CM Server的启动需要花点时间,这里可能要等待一会(我最久等了20分钟)才能访问,默认的用户名和密码均为admin。
5.1.为CDH群集安装指定主机
在为CDH群集安装指定主机这一步(忘截图了==|||),要能直接在当前管理的主机能看到三台机子,分别为Master,Slave1,Slave2.才说明安装正确了,如果搜不到,说明可能是你偷懒直接复制cm-5.8.0
这个文件夹给其他主机了,因为在启动的时候会生成一个SSID
,是这个机子唯一的,所以搜索的时候可能会出问题。
5.2.群集安装
接下来是群集安装,这一步点选使用Parcel(建议)
,将网络地址全部删除,退出来后要能看到可以选择本地包才说明本地配置对了,如果没看到,可能有以下几个原因
- 未将CDH-5.8.0-1.cdh5.8.0.p0.42-el6.parcel.sha1,重命名为CDH-5.8.0-1.cdh5.8.0.p0.42-el6.parcel.sha
cloudera
,parcel-repo
和parcels
三个文件夹的权限设置没有设置好。
安装完成后如上图。
5.3.检查主机正确性
如果出现和上图一样,就说明离成功又近了一步,如果出现了其他错误,比如出现JAVA版本不一致,想想你是不是自己安JDK了,这个地方会导致后面Spark安装失败,没有例外,因为这里我们起码重装了5次,才发现必须用官方给的JDK。
按照给出的方式修改,输入
echo 10 > /proc/sys/vm/swappiness
echo never > /sys/kernel/mm/transparent_hugepage/defrag
如果你想重启后不出问题,可以按上面的修改其他那些文件。
修改完后点击重新运行,得到以下样子
是不是看起来很舒服。
5.4.选择在集群上安装的服务
我们选择安装含Spark的内核
5.5.自定义角色分配
注意将DataNode选成所有主机,还有下面的Zookeeper选成所有主机,其他默认就可以了。
5.6.数据库设置
之前已经配置过数据库,直接像上面那样填即可,可能会在Hue测试连接的时候失败,那就是你没有安装完MySQL包里share,最好全部安装,防止报各种奇怪的错。
5.7.所需目录结构
默认即可,不用改动什么。
5.8.等待初始化和启动服务
这个地方初始化可能会出各种问题
1.Spark报错,一般都是JDK未使用官方版本。
2.Hive,Hbase,Hue等报错,类似于下图
解决办法也就是将mysql-connector-java-5.1.6-bin.jar拷贝到hive存放jar文件的目录重试即可。
cp mysql-connector-java-5.1.6-bin.jar /opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/hive/lib/
3.Oozie报错,显示timeout,这里是因为网络环境太差,传输很慢,所以要把超时时间设置久一点,我们将超时时间调到了300s。
如上图出现报错,浏览器打开另一个标签页,进入http://master:7180,点击oozie组件,搜索oozie_upload_sharelib_cmd_timeout parameter 和 change it to something bigger 然后将270改为600即可解决。
最后安装成功
6.调试CDH集群
安装完成后会因为电脑过卡,内存过小,硬盘空间不够等等问题导致会有很多运行状态不佳的主机
经过将内存阈值,分配空间阈值,报警阈值调小后即可解决,最后等待一会便可以达到全绿,满足强迫症的你。
输入http://master:8888 可以进入Hue中,使用Hive,Pig和Oozie
在终端输入spark-shell
可以进入Spark-shell.
我们可以使用hdfs hadoop jar \/opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar \pi 10 100
来测试mapreduce
,运行结果如下
END
CDH大数据平台搭建终极版的更多相关文章
- CDH 大数据平台搭建
一.概述 Cloudera版本(Cloudera’s Distribution Including Apache Hadoop,简称“CDH”),基于Web的用户界面,支持大多数Hadoop组件,包括 ...
- 大数据平台搭建(hadoop+spark)
大数据平台搭建(hadoop+spark) 一.基本信息 1. 服务器基本信息 主机名 ip地址 安装服务 spark-master 172.16.200.81 jdk.hadoop.spark.sc ...
- CM记录-CDH大数据平台实施经验总结2016(转载)
CDH大数据平台实施经验总结2016(转载) 2016年负责实施了一个生产环境的大数据平台,用的CDH平台+docker容器的方式,过了快半年了,现在把总结发出来. 1. 平台规划注意事项 1.1 业 ...
- product of大数据平台搭建------CM 和CDH安装
一.安装说明 CM是由cloudera公司提供的大数据组件自动部署和监控管理工具,相应的和CDH是cloudera公司在开源的hadoop社区版的基础上做了商业化的封装的大数据平台. 采用离线安装模式 ...
- HDP 大数据平台搭建
一.概述 Apache Ambari是一个基于Web的支持Apache Hadoop集群的供应.管理和监控的开源工具,Ambari已支持大多数Hadoop组件,包括HDFS.MapReduce.Hiv ...
- 大数据平台搭建-zookeeper集群的搭建
本系列文章主要阐述大数据计算平台相关框架的搭建,包括如下内容: 基础环境安装 zookeeper集群的搭建 kafka集群的搭建 hadoop/hbase集群的搭建 spark集群的搭建 flink集 ...
- 大数据平台搭建:Hadoop
To construct big data distributed platform based on Hadoop is a common method. Hadoop comes fron Goo ...
- 大数据平台搭建 - cdh5.11.1 - hadoop集群安装
一.前言 由于线下测试的需要,需要在公司线下(测试)环境搭建大数据集群. 那么CDH是什么? hadoop是一个开源项目,所以很多公司再这个基础上进行商业化,不收费的hadoop版本主要有三个,分别是 ...
- 大数据平台搭建-kafka集群的搭建
本系列文章主要阐述大数据计算平台相关框架的搭建,包括如下内容: 基础环境安装 zookeeper集群的搭建 kafka集群的搭建 hadoop/hbase集群的搭建 spark集群的搭建 flink集 ...
随机推荐
- linux I/O 内存分配和映射
I/O 内存区必须在使用前分配. 分配内存区的接口是( 在 <linux/ioport.h> 定义): struct resource *request_mem_region(unsign ...
- Spring Tool Suite记录
快速查询:选中项目名按CTRL+H
- E40笔记本无线网卡
E40笔记本无线网卡详情 网卡名称 Intel(R) Dual Band Wireless-AC 3160 网卡厂商 英特尔 Mac地址 34:E6:AD: 规格 - 基本要素 状态 Launched ...
- 学习Java第七周
重要知识点 1.“super”的用法 构造器和方法,都用关键字super指向超类,但是用的方法不一样.方法用这个关键字去执行被重载的超类中的方法 2.接口和抽象类的异同 相同: 1.接口和抽象类都有抽 ...
- Mac 安装Maven,并设置环境变量
1 / 打开电脑,找到终端命令行工具,输入maven环境变量查询工具: mvn -v 2 / 执行上述命令后,此时没有安装的两个提示信息,一个时没有mvn命令,一个时没有安装maven.执行下面命令开 ...
- 浅谈月薪3万 iOS程序员 的职业规划与成长!(进阶篇)
前言: 干了这么多年的iOS,虽然接触了许多七七八八的东西.技术,但是感觉本身iOS却没有什么质的飞越,可能跟自己接触的项目深度有关,于是决定在学习其他技术的同时,加强自己在iOS方面的学习,提高自己 ...
- 如何修改eclipse中Dynamic web module的 version
我们直接在eclipse中修改Dynamic Web Module的话会报错,改不了的 所以我们可以找到项目文件中的.setting文件下的org.eclipse.wst.common.project ...
- 将Samba设置为Active Directory域控制器
一 简介 从版本4.0开始,samba可以作为Active Directory(AD)域控制器(DC)运行,如果在生产环境中安装samba,建议运行两个或者多个DC用于故障转移 本文介绍如何让将一个S ...
- Hello2020(前四题题解)
Hello,2020!新的一年从快乐的掉分开始…… 我在m3.codeforces.com这个镜像网站中一开始还打不开D题,我…… 还有话说今天这场为什么那么多二分. 比赛传送门:https://co ...
- 1092 最好吃的月饼 (20分)C语言
月饼是久负盛名的中国传统糕点之一,自唐朝以来,已经发展出几百品种. 若想评比出一种"最好吃"的月饼,那势必在吃货界引发一场腥风血雨-- 在这里我们用数字说话,给出全国各地各种月饼的 ...