CDH集群搭建部署
2017-12-13 23:56
295 查看
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
查看系统是否已经安装NFSrpm -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 startAgent : /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,但是需要了解并修改每个服务的基本配置
在安装服务过程中一定要找日志,只有日志才会告诉你具体的问题
相关文章推荐
- CDH5.9.0集群部署与搭建
- Cloudera 5.7集群部署(二)--CM、CDH安装
- Cloudera 5.7集群部署(二)--CM、CDH安装
- 基于Jenkins搭建集群部署环境
- Redis3.2+Tomcat实现集群的Session管理 -- tomcat-redis-session-manager的编译和开发部署环境搭建
- Ceph部署(一)集群搭建
- ridis集群搭建部署详细文档
- kafka分布式集群搭建部署简单记录
- 大数据集群之CDH版本搭建完整版
- redis主从集群搭建及容灾部署
- 主从集群搭建及容灾部署redis
- CDH 集群如何部署一个新的服务
- Spark集群基于Zookeeper的HA搭建部署笔记(转)
- 离线部署 CDH 5.12.1 及使用 CDH 部署 Hadoop 大数据平台集群服务
- CDH集群离线部署
- CDH 版本 Hadoop集群搭建
- Spark集群环境搭建+Maven、SBT编译部署+IDEA开发(二)