1. 硬件准备

    使用了五台机器,其中两台8c16g,三台4c8g。一台4c8g用于搭建cmServer和NFS服务端,另外4台作为cloudera-manager agent部署CDH集群。

ip 主要服务/角色 hostname(hosts配置与此一致) 机器规格
10.2.223.237 cmServer NFS server v-xstest-849-171208-cdh-1.hx 4c8g200g
10.2.223.239 Namenode,resouceManager,Hbase Master等 v-xstest-855-171208-cdh2-1.novalocal 8c16g200g
10.2.223.242 SecondaryNamenode,hive,hue等 v-xstest-856-171208-cdh2-2.novalocal 8c16g200g
10.2.223.224 Datanode,regionServer,nodeManager等 v-xstest-850-171208-cdh-2.novalocal 4c8g200g
10.2.223.197 Datanode,regionServer,nodeManager等 v-xstest-851-171208-cdh-3.novalocal 4c8g200g

2. NFS搭建

2.1 NFS简介

    NFS 就是 Network FileSystem 的缩写,最早之前是由sun 这家公司所发展出来的。 它最大的功能就是可以透过网络,让不同的机器、不同的操作系统、可以彼此分享个别的档案 (share files)。所以,你也可以简单的将他看做是一个文件服务器 (file server) 呢!这个 NFS 服务器可以让你的 PC 来将网络远程的 NFS 服务器分享的目录,挂载到本地端的机器当中, 在本地端的机器看起来,那个远程主机的目录就好像是自己的一个磁盘分区槽一样 (partition)!使用上面相当的便利!

2.2 安装NFS

  • 查看系统是否已经安装NFS
rpm -qa | grep nfs
rpm -qa | grep rpcbind
  • yum安装NFS
yum -y install nfs-utils rpcbind

2.3 NFS服务端配置

  • 在NFS服务端上创建共享目录/opt/share并设置权限
mkdir -p /opt/share
chmod 666 /opt/share
  • 编辑/etc/exports文件
vim /etc/exports
/opt/share *(rw,no_root_squash,no_all_squash,sync) 配置生效命令:
exportfs -r
  • 参数说明:
参数值    内容说明
rw  ro 该目录分享的权限是可擦写 (read-write) 或只读 (read-only),但最终能不能读写,还是与文件系统的 rwx 及身份有关。 sync  async sync 代表数据会同步写入到内存与硬盘中,async 则代表数据会先暂存于内存当中,而非直接写入硬盘! no_root_squash  root_squash 客户端使用 NFS 文件系统的账号若为 root 时,系统该如何判断这个账号的身份?预设的情况下,客户端 root 的身份会由 root_squash 的设定压缩成 nfsnobody, 如此对服务器的系统会较有保障。但如果你想要开放客户端使用 root 身份来操作服务器的文件系统,那么这里就得要开 no_root_squash 才行! all_squash 不论登入 NFS 的使用者身份为何, 他的身份都会被压缩成为匿名用户,通常也就是 nobody(nfsnobody) 啦! anonuid  anongid anon 意指 anonymous (匿名者) 前面关于 *_squash 提到的匿名用户的 UID 设定值,通常为 nobody(nfsnobody),但是你可以自行设定这个 UID 的值!当然,这个 UID 必需要存在于你的 /etc/passwd 当中! anonuid 指的是 UID 而 anongid 则是群组的 GID 啰。
  • 启动服务
service rpcbind start
service nfs start

2.4 NFS客户端配置

  • 安装以及启动同上
  • 客户端设置
mkdir -p /opt/share
showmount -e 10.2.223.237
mount -t nfs 10.2.223.237:/opt/share /opt/share -o proto=tcp -o nolock

3. SSH免密登录

3.1 实现方法

    要实现多台机器相互之间免密登录,只需要将每台机器ssh-keygen生成的公钥(id_rsa.pub)写到一个文件authorized_keys,然后将这个文件复制到每台机器的~/.ssh/authorized_keys,这样就可以互通了。

3.2 具体步骤

hosts文件编辑,注意一定要保持与每台机器hostname一致,将hosts文件写到/opt/share/ssh,便于同步
每台机器执行 ssh-keygen -t rsa -f ~/.ssh/id_rsa,连续回车两次
将每台机器的id\_rsa.pub写到/opt/share/ssh/authorized\_keys
每台机器执行/opt/share/ssh/sync\_config.sh,保持hosts,authorized\_keys一致
sync\_config.sh:
#!/bin/bash
rm -f /etc/hosts
cp /opt/share/ssh/hosts /etc/hosts
rm -f /root/.ssh/authorized_keys
cp /opt/share/ssh/authorized_keys /root/.ssh/authorized_keys

4. 安装Cloudera Manager Server和Agent

    使用cm5.4.1 el6版本,el5会有python版本问题,el6内置的python2.6.

4.1 资源下载

cm安装包:http://archive.cloudera.com/cm5/cm/5/cloudera-manager-el6-cm5.4.1_x86_64.tar.gz
cm资源包(parcel):http://archive.cloudera.com/cdh5/parcels/5.4.1/CDH-5.4.1-1.cdh5.4.1.p0.6-el6.parcel
其他:http://archive.cloudera.com/cdh5/parcels/5.4.1/CDH-5.4.1-1.cdh5.4.1.p0.6-el6.parcel.sha1
http://archive.cloudera.com/cdh5/parcels/5.4.1/manifest.json
另外需要准备mysql-jdbc jar包,这个从maven仓库找一个就行,我用的是:mysql-connector-java-5.1.34.jar

将上面下载资源上传到NFS目录/opt/share/cdh,mysql-connector-java-5.1.34.jar放到/opt/share

4.2 安装

  • 解压:所有机器
mkdir -p /opt/cloudera-manager
tar xvzf share/cloudera-manager*.tar.gz -C /opt/cloudera-manager
  • 添加用户:所有机器
useradd --system --home=/opt/cloudera-manager/cm-5.4.1/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
  • 修改cloudera-scm-agent config.ini:所有机器
vim /opt/cloudera-manager/cm-5.4.1/etc/cloudera-scm-agent/config.ini
修改server.host=10.2.223.237 #即cloudera manager Server地址
  • 数据库初始化:仅需要 cloudera manager server 执行
cp /opt/share/mysql-connector-java-5.1.34.jar /opt/cloudera-manager/cm-5.4.1/share/cmf/lib
/opt/cloudera-manager/cm-5.4.1/share/cmf/schema/scm_prepare_database.sh mysql cm_new -h 10.2.222.25 -ubigdata -p'bigdata123' --scm-host 10.2.223.237 bigdata bigdata123 --force
注释:cm_new 数据库名称,自己填写 -h -u -p连接数据库配置,如果没有mysql需要自己搭建 ,--scm-host 后面bigdata bigdata123这两个是需要连接的数据库配置,而不是网上的scm scm scm
注2:这个命令执行主要是创建数据库,并且在/opt/cloudera-manager/cm-5.4.1/etc/cloudera-scm-server/db.properties生成数据库配置,如果配置成功就OK了,可以忽略其他报错
  • 创建parcel-repo文件夹:cloudera manager server,注意文件夹名字不要写错,这个与后面CM配置页面里面设置对应,也可以修改,建议默认值保持一致
mkdir -p /opt/cloudera/parcel-repo
cp /opt/share/cdh/CDH-5.4.1-1.cdh5.4.1.p0.6-el6.parcel.sha1 /opt/cloudera/parcel-repo/CDH-5.4.1-1.cdh5.4.1.p0.6-el6.parcel.sha #注意修改名称sha1 sha
cp /opt/share/cdh/manifest.json /opt/cloudera/parcel-repo
chown cloudera-scm:cloudera-scm -R /opt/cloudera/parcel-repo/
  • 创建parcels文件夹:cloudera manager agent
mkdir -p /opt/cloudera/parcels
chown cloudera-scm:cloudera-scm /opt/cloudera/parcels

4.3 启动服务

  • Manager Server:/opt/cloudera-manager/cm-5.4.1/etc/init.d/cloudera-scm-server start
  • Agent : /opt/cloudera-manager/cm-5.4.1/etc/init.d/cloudera-scm-agent start

5. CDH配置安装

    登录配置页面10.2.223.237:7180 默认账号秘密: admin admin

由于本人安装时候没有一个个页面截图,具体大家第一次进入之后就可以看到,傻瓜式操作。

5.1 导航安装

  • 登录进入以后,选择免费版,进入为CDH集群指定安装主机页面后,如果配置安装正确,所有agent机器都会出现在当前管理的主机,如果没有,则启动错误或者config.ini配置错误。检查启动日志,修改错误后,删除4.2中创建的数据库并且重新执行数据库初始化,重启服务
  • 进入群集安装页面,会让你选择CDH版本,勾选使用parcel建议 以及CDH-5.4.1-1.cdh5.4.1.p0.6
  • 进入群集设置,选择需要安装的服务,建议自定义服务,安装你需要的相关服务即可
  • 接下来是集群分配各节点角色:这块最好不要按照默认配置的来,相关的服务最好可以合理分配一下,比如我的两台8c16g就用来安装Namenode ,resourceManger,hbase master,sendcondary namenode,hive以及hue等。同时,自己手动分配的时候,也会对集群相关服务更了解,后面安装出错的时候更容易找到日志定位问题
  • 配置hive/oozie/active monitor数据库:需要提前创建好
  • 安装服务:各个服务按顺序安装,中间出错的时候请在对应的机器上找到相关的日志,服务的日志都是在/opt/cloudera-manager/cm-5.4.1/run/cloudera-scm-agent/process/,在里面找该服务相关的文件夹,进入之后就可以找到日志文件了。修复问题后,点击重试,会从最近失败的服务开始重新安装,直到所以安装完成就行了。
  • 如果没有安装结束就退出,没有关系,http://10.2.223.237:7180/cmf/hardware/hosts 这个是主机管理页面,可以看每台机器上还有哪些机器没有启动服务,手动启动也可以的

5.2 服务配置修改

  • 修改集群显示名称:默认Cluster 1,直接修改初始化数据库脚本的数据库名.clusters表,修改display_name
  • 其他服务配置:比如hdfs,hbase等,直接在群集选项中选择该服务,进入以后点击配置就可以了

6. 相关错误以及心得

6.1 常见错误

  • scm_prepare_database.sh执行报错
之前我也是参考网上的执行命令,但是没人解释最后三个scm scm  scm是什么意思,具体在4.2中我已经强调了,只要后面数据库创建成功并且对应的db.properties文件配置没错就行了
  • 配置hive/oozie数据库出错
要提前创建数据库,并且安装服务的机器上在/opt/cloudera-manager/cm-5.4.1/share/cmf/lib有mysql-connector jar包
  • 仅完成1个步骤。首个失败:主机bigdata-cdh-client(id=2)上的客户端配置(id=1)已使用1退出,而预期值为0
在安装服务界面,执行失败时,点击查看详细信息,会给出这样类似的错误信息。查看/opt/cloudera-manager/cm-5.4.1/run/cloudera-scm-agent/process目录下相关日志。
发现上面这个错误信息是由于JAVA_HOME问题,启动脚本中,JAVA_HOME并不是根据环境变量来获取,而是在它列举的几个目录下寻找,所以只要把你的java路径ln -s过去就行,比如我的 ln -s /opt/jdk/jdk1.7-7u80/ /usr/java/jdk1.7
  • hive metastore server启动失败 Caused by: org.datanucleus.store.rdbms.connectionpool.DatastoreDriverNotFoundException: The specified datastore driver ("com.mysql.jdbc.Driver") was not found in the CLASSPATH
将mysql-connectorxxx.jar拷贝到/opt/cloudera/parcels/CDH-5.4.1-1.cdh5.4.1.p0.6/lib/hive/lib下,只需要拷贝hive metastore server这台就行了
  • urlopen error [Errno -2] Name or service not known> - agent197
我之前为了识别方便,修改了hosts和机器的hostname,但是在我们的DNS服务器中仍无法修改,可以通过nslookup  ip 查看比如nslookup 10.2.223.237,发现这个里面的name仍然是修改hostname之前的。
所以建议不要轻易修改hostname,在配置的hosts中也要保持与hostname一致
  • 安装向导页面创建hive metastore数据库表出错:org.apache.hive.beeline.HiveSchemaHelper.getConnectionToMetastore(HiveSchemaHelper.java:79
cp /opt/share/mysql-connector-java-5.1.34.jar  /opt/cloudera/parcels/CDH-5.4.1-1.cdh5.4.1.p0.6/lib/hadoop/lib)
  • oozie创建数据库表失败,没有com.mysql.jdbc.driver
cp /opt/share/mysql-connector-java-5.1.34.jar  /opt/cloudera/parcels/CDH-5.4.1-1.cdh5.4.1.p0.6/lib/oozie/libtools
  • oozie服务启动失败:stdout.log中也是没有com.mysql.jdbc.driver
首先,删除oozie数据库并重新创建
然后cp /opt/share/mysql-connector-java-5.1.34.jar /opt/cloudera/parcels/CDH-5.4.1-1.cdh5.4.1.p0.6/lib/hadoop/lib

6.2 建议&心得

  • 请一定先搭建好NFS,而不是通过大量的scp节省人力。
  • cm是一个帮助你安装hadoop生态的管理工具,类似ambari,但是需要了解并修改每个服务的基本配置
  • 在安装服务过程中一定要找日志,只有日志才会告诉你具体的问题

CDH集群搭建部署的更多相关文章

  1. CDH集群搭建视频教程 百度云网盘下载

     CDH集群搭建视频教程 百度云网盘下载 链接: http://pan.baidu.com/s/1i5DVBlb   密码:2mny

  2. apigateway-kong(五)集群搭建部署

    kong 集群将使得系统通过增加更多机器,从而实现水平扩展,承接更多的请求流量.它们将共享同样的配置且使用同一个数据库.kong 集群中的的所有节点都连接同一个数据库. 你需要在 kong 集群的上一 ...

  3. redis主从复制,哨兵以及集群搭建部署

    redis主从复制 1.redis支持多实例的功能,一台机器上,可以运行多个单个的redis数据库 环境准备,运行3个redis数据库,达到 1主 2从的配置 主库 6379.conf port 63 ...

  4. RocketMq 集群搭建 部署

    原文链接:https://blog.csdn.net/weixin_40533111/article/details/84451219 作者小太阳^_^,转载请注明出处,谢谢 前言本文基于最新版roc ...

  5. 1、CDH集群搭建

    一.准备工作 1.系统环境 系统centos6.5 节点三台: 192.168.1.130 192.168.1.131 192.168.1.132 1.所有节点关闭防火墙 service iptabl ...

  6. Redis 集群搭建详细指南

    先有鸡还是先有蛋? 最近有朋友问了一个问题,说毕业后去大城市还是小城市?去大公司还是小公司?我的回答都是大城市!大公司! 为什么这么说呢,你想一下,无论女孩男孩找朋友都喜欢找个子高胸大的.同样的道理嘛 ...

  7. Linux下zookeeper集群搭建

    Linux下zookeeper集群搭建 部署前准备 下载zookeeper的安装包 http://zookeeper.apache.org/releases.html 我下载的版本是zookeeper ...

  8. HBase HA分布式集群搭建

    HBase HA分布式集群搭建部署———集群架构 搭建之前建议先学习好HBase基本构架原理:https://www.cnblogs.com/lyywj170403/p/9203012.html 集群 ...

  9. Kubernetes 深入学习(一) —— 入门和集群安装部署

    一.简介 1.Kubernetes 是什么 Kubernetes 是一个全新的基于容器技术的分布式架构解决方案,是 Google 开源的一个容器集群管理系统,Kubernetes 简称 K8S. Ku ...

随机推荐

  1. 探究Angular依赖注入对象$injector

    $injector其实是一个IOC容器,包含了很多我们通过.module()和$provide创建的模块和服务.$injector服务提供了对依赖注入器对象的访问,当然我们也可以调用angular.i ...

  2. 版本控制之五:SVN trunk(主线) branch(分支) tag(标记) 用法详解和详细操作步骤(转)

    使用场景: 假如你的项目(这里指的是手机客户端项目)的某个版本(例如1.0版本)已经完成开发.测试并已经上线了,接下来接到新的需求,新需求的开发需要修改多个文件中的代码,当需求已经开始开发一段时间的时 ...

  3. 通过命令行使用cl.exe编译器

    转载http://www.cnblogs.com/mizhongqin/archive/2013/03/11/cmd_cl-exe_vs2010.html 与在IDE中编译相比,命令行模式编译速度更快 ...

  4. java多线程开发容易犯的错误

    昨天在社区上看到有人讨论多线程使用,多线程遇到一些问题以及一些使用技巧记录一下.为什么要使用多线程, 不能是为了用而用,和设计模式一样用的合理,会让程序更易于理解,用的不合理反而会让程序变得更难理解. ...

  5. 2017 多校训练 1006 Function

    Function Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total ...

  6. HDU 5242 Game(三个贪心)

    Game Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  7. Einbahnstrasse

    Einbahnstrasse Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...

  8. Flex布局:实现左右两列自伸缩撑满效果的

    目前测试支持的浏览器: 兼容IE10及以上.Chrom.Firefox浏览器. 假如考虑IE10以下浏览器,可以考虑其他写法. 话不多说,上代码:   <div style="back ...

  9. Struts2+Spring+Hibernate实现员工管理增删改查功能(一)之ssh框架整合

    前言        转载请标明出处:http://www.cnblogs.com/smfx1314/p/7795837.html 本项目是我写的一个练习,目的是回顾ssh框架的整合以及使用.项目介绍: ...

  10. zabbix 3.2 高可用实现方式二-pacemaker+corosync实现zabbix高可用集群

    一.pacemaker 是什么 1.pacemaker 简单说明 2.pacemaker 由来 二.pacemaker 特点 三.pacemaker 内部结构 1.群集组件说明: 2.功能概述 四.c ...