经过无数次的失败,终于将CDH安装到两台普通的笔记本电脑上,主要失败原因有以下几点:

  1. 不熟悉安装过程,官方给出的安装方法有三种,所以都尝试了一遍,浪费了大量时间,所以有时候方法多不见得是一件好事。
  2. 安装设备太差,有时会因为占用内存或者CPU占用过高而死机。
  3. 安装网络环境太差,导致传输过程可能出现超时失败现象。
  4. 安装时间过久,导致出错后重新再来时间付出太多。

以下讲的方法不是最优的方法,但是是我们最后的方法,可供参考。

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(建议),将网络地址全部删除,退出来后要能看到可以选择本地包才说明本地配置对了,如果没看到,可能有以下几个原因

  1. 未将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
  2. cloudera,parcel-repoparcels三个文件夹的权限设置没有设置好。

安装完成后如上图。

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大数据平台搭建终极版的更多相关文章

  1. CDH 大数据平台搭建

    一.概述 Cloudera版本(Cloudera’s Distribution Including Apache Hadoop,简称“CDH”),基于Web的用户界面,支持大多数Hadoop组件,包括 ...

  2. 大数据平台搭建(hadoop+spark)

    大数据平台搭建(hadoop+spark) 一.基本信息 1. 服务器基本信息 主机名 ip地址 安装服务 spark-master 172.16.200.81 jdk.hadoop.spark.sc ...

  3. CM记录-CDH大数据平台实施经验总结2016(转载)

    CDH大数据平台实施经验总结2016(转载) 2016年负责实施了一个生产环境的大数据平台,用的CDH平台+docker容器的方式,过了快半年了,现在把总结发出来. 1. 平台规划注意事项 1.1 业 ...

  4. product of大数据平台搭建------CM 和CDH安装

    一.安装说明 CM是由cloudera公司提供的大数据组件自动部署和监控管理工具,相应的和CDH是cloudera公司在开源的hadoop社区版的基础上做了商业化的封装的大数据平台. 采用离线安装模式 ...

  5. HDP 大数据平台搭建

    一.概述 Apache Ambari是一个基于Web的支持Apache Hadoop集群的供应.管理和监控的开源工具,Ambari已支持大多数Hadoop组件,包括HDFS.MapReduce.Hiv ...

  6. 大数据平台搭建-zookeeper集群的搭建

    本系列文章主要阐述大数据计算平台相关框架的搭建,包括如下内容: 基础环境安装 zookeeper集群的搭建 kafka集群的搭建 hadoop/hbase集群的搭建 spark集群的搭建 flink集 ...

  7. 大数据平台搭建:Hadoop

    To construct big data distributed platform based on Hadoop is a common method. Hadoop comes fron Goo ...

  8. 大数据平台搭建 - cdh5.11.1 - hadoop集群安装

    一.前言 由于线下测试的需要,需要在公司线下(测试)环境搭建大数据集群. 那么CDH是什么? hadoop是一个开源项目,所以很多公司再这个基础上进行商业化,不收费的hadoop版本主要有三个,分别是 ...

  9. 大数据平台搭建-kafka集群的搭建

    本系列文章主要阐述大数据计算平台相关框架的搭建,包括如下内容: 基础环境安装 zookeeper集群的搭建 kafka集群的搭建 hadoop/hbase集群的搭建 spark集群的搭建 flink集 ...

随机推荐

  1. 关于css中浮动的理解及实际应用

    一.元素浮动的意义及使用:1. 浮动的意义:设置了浮动属性的元素会脱离普通标准流的控制,移动到其父元素中指定的位置的过程,将块级元素放在一行,浮动会脱离标准流,不占位置,会影响标准流,浮动只有左右浮动 ...

  2. 【codeforces 764A】Taymyr is calling you

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  3. dotnet 如何调试某个文件是哪个代码创建

    我发现了自己的软件,会在桌面创建一个 1.txt 文件,但是我不知道是哪个代码创建的,那么如何进行快速的调试找到是哪个代码创建的 最简单的方法是使用 VisualStudio 全局搜 1.txt 看是 ...

  4. Cookie的使用、Cookie详解、HTTP cookies 详解、获取cookie的方法、客户端获取Cookie、深入解析cookie

    Cookie是指某些网站为了辨别用户身份.进行session跟踪而存储在用户本地终端上的数据(通常经过加密),比如说有些网站需要登录才能访问某个页面,在登录之前,你想抓取某个页面内容是不允许的.那么我 ...

  5. 使用IDEA创建基于Maven SpringMvc项目

    使用IDEA创建基于Maven SpringMvc项目 1.通过程序启动——create project,或者file--New-projec打开New project 2.自定义groupid等信息 ...

  6. CSDN博客 专用备份工具

    CSDN博客 专用备份工具 用要的朋友可下载. 本程序为个人所用,仅供学习.作者:潇湘博客网站:http://blog.csdn.NET/fkedwgwy默认文件存放位置为用户名文件夹下,也可以直接自 ...

  7. 非GUI-Qt程序运行后显示Console(简单好用:在pro文件中加入: CONFIG += console)

    ----我的生活,我的点点滴滴!! 有很多时候,我们在程序中添加了好Debug信息,方便程序在运行期间打印出一些我们需要的信息或者,想用他来显示一些必要信息时, 那么console就太重要了,曾几何时 ...

  8. python3.6中使用selenium + chromedriver访问Chrome浏览器时报错

    from selenium import webdriver from selenium.webdriver.chrome.options import Options if __name__ == ...

  9. 「2018-12-02模拟赛」T1 最短路 解题报告

    1.最短路(short.pas/cpp/in/out) 问题描述: 小 C 终于被小 X 感动了,于是决定与他看电影,然而小 X 距离电影院非常远,现在假设 每条道路需要花费小 X 的时间为 1,由于 ...

  10. 10_时间戳timeStamp 和 时间 time 转换, 根据时间节点倒计时

    1: 时间戳 timeStamp 获取的几种方法及其优劣, 第一种只能精确到秒, 故不推荐使用, 最最常用的也是最官方的是第三种, 通过原型方法进行调用获取精确到毫秒数 : var timestamp ...