离线安装Cloudera Manager 5和CDH5及与遇到的问题总结

 

     今天介绍一下:在linux系统下,如何搭建CDH集群.

1.1Cloudera Manager简介

Cloudera Manager是一个拥有集群自动化安装、中心化管理、集群监控、报警功能的一个工具(软件),使得安装集群从几天的时间缩短在几个小时内,

运维人员从数十人降低到几人以内,极大的提高集群管理的效率。

Cloudera Manager有四大功能:
   (1)管理:对集群进行管理,如添加、删除节点等操作。
   (2)监控:监控集群的健康情况,对设置的各种指标和系统运行情况进行全面监控。
   (3)诊断:对集群出现的问题进行诊断,对出现的问题给出建议解决方案。
     (4)集成:对hadoop的多组件进行整合

1.2 CDH简介

 

CDH全称 Cloudera's Distribution, including Apache Hadoop

• 是Hadoop众多分支中的一种,由Cloudera维护,基于稳定版本的Apache Hadoop构建

• 提供了Hadoop的核心
    –  可扩展存储
    –  分布式计算
• 基于Web的用户界面

 

1.3 系统环境

1)操作环境:linux系统,CentOS 6.5 x64

2)所需软件:ClouderaManager版本5.7.5

下载地址:http://archive.cloudera.com/cm5/cm/5/

             CDH版本:5.7.5

3)安装方式:

方共给出了3种安装方式:

第一种要求所有机器都能连网,但是由于连接的是外网~~你们懂得,问题很多,成功安装记录很低

第二种需要下载很多包。

第三种离线安装    该方法对系统侵入性最小,最大优点可实现全离线安装,而且重装非常方便。后期的集群统一包升级也非常好。

基于以上原因,我们选择第三种安装方式

1.4 用户配置

   Linux系统对于用户的权限管控是很严格管理员root用户具有最大的权限,为了保障系统稳定性和减少误操作而导致系统奔溃的问题,root用户一般不作为常规的用户。

因此对于cdh平台的搭建,我们需要单独创建用户,可以方便权限的管控

这里我们创建用户:hmaster密码:matercom168

1.5网络配置

  1)修改主机名:

假定我们发现我们的机器的主机名不是我们想要的,通过对"/etc/sysconfig/network"文件修改其中"HOSTNAME"后面的值,改成我们规划的名称。

输入命令:# vi /etc/sysconfig/network 将主机名修改为:gp-master

 

从节点的名字:从go-node01开始类推。

通过service network restart使之生效。

离线安装Cloudera Manager 5和CDH5及与遇到的问题总结_第1张图片

 

2)修改ip地址

使用 ifconfig命令查看本机的ip地址,如果和理想的有出入,就要重新设置本机的ip地址

使用 vi /etc/sysconfig/network-scripts/ifcfg-eth0 命令对ip地址进行修改

 

3)在/etc/hosts文件里配置集群里的所有节点的ip地址和主机名

   输入命令:# vi /etc/hosts 配置好集群里的所有节点的ip地址和主机名

注意:本机的也要写进去!

192.168.137.128 gp-master

192.168.137.129 gp-node01

   

1.6 配置ssh免密登录

通过ssh免密登录,我们在集群的各个节点之间进行操作不必频繁的输入密码,会很大程度的提供开发的效率。

首先,通过ssh-keygen -t rsa生成无密码的密钥对,期间连续按3次回车,结果如下:

  离线安装Cloudera Manager 5和CDH5及与遇到的问题总结_第2张图片

将公钥添加到认证文件中,cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

 

并设置authorized_keys的访问权限:# chmod 600 ~/.ssh/authorized_keys

 

将集群里其他节点的公钥追加到主节点,主节点在使用scp命令同步到每一个节点上。

 

在主节点上使用命令ssh gp-node02,无需输入密码成功进入名称节点。

使用ifconfig命令查看当前ip,显示如下:

  离线安装Cloudera Manager 5和CDH5及与遇到的问题总结_第3张图片

说明免密登录配置成功。

 

 

 

1.7 配置java环境变量

1)安装jdk

在官网上下载好jdk之后,通过软件,FileZilla将压缩包拖放usr/local/java目录下,如果没有java目录,就使用 mkdir java命令在usr/local目录下创建java

使用命令tar -zxvf jdk7u79linuxx64.tar.gz解压

 

2)配置环境变量主要有两种方式:

一种是通过vi /etc/profile,这种方式是对所有用户生效,并且具有最高的优先级

另一种是通过vi .bash_profile,这种方式是只对当前用户(我们这里的用户是hmaster)

执行以下命令:

 

在这里我采用的是第一种方式:

在原配置文件添加:

# set java environment

export JAVA_HOME=/usr/local/java/jdk1.7.0_79  

export JRE_HOME=/usr/local/java/jdk1.7.0_79/jre  

export PATH=$PATH:/usr/local/java/jdk1.7.0_79/bin 

 

 

3)使配置生效并进行验证

更改完之后,使用source /etc/profile保存配置

之后输入  java -version查看当前版本,出现如下证明:环境变量配置成功.

 

 1.8 关闭防火墙

防火墙不关掉的话在之后的过程中会出现一些莫名其妙的问题,因此我们提前将防火墙关闭以绝后患。

首先使用service iptables stop临时关闭防火墙,这种方式重启后防火墙会生效

接下来使用 chkconfig iptables off命令永久关闭防火墙

以上两个命令执行完毕后使用查看防火墙状态service iptables status

显示如下:证明防火墙已经关闭。

 

1.9安装MySql

使用命令 # rpm -pa | grep mysql 查看本机是否安装MySql,

如果已经安装使用命令rpm -ev mysql文件名--nodeps删除。

使用yum命令安装mysql:yum install mysql

 

选中的版本为我们所需要的。

  离线安装Cloudera Manager 5和CDH5及与遇到的问题总结_第4张图片

使用 yum install mysql-server.x86_64安装需要的mysql

使用chkconfig mysqld on设置为开机启动,service mysqld start启动MySql服务

按照如下截图所示的命令mysqladmin -u root password 'mastercom168'

设置密码,我设置的是mastercom168

之后输入用户名和密码  mysql -uroot -pmastercom168

,进入到MySql服务,MySql安装完成。

  离线安装Cloudera Manager 5和CDH5及与遇到的问题总结_第5张图片

接下来创建我们所需要的数据库

#hive  hive数据库

create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

#activity monitor

create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

设置root授权访问以上所有的数据库:

#授权root用户在主节点拥有所有数据库的访问权限

grant all privileges on *.* to 'root'@'gp-master' identified by 'mastercom168' with grant option;

flush privileges;

 

1.10所有的节点配置时间同步服务

集群中所有主机必须保持时间同步,如果时间差距过大,回引起各种问题。

在主节点和从节点输入date,可以看到,我的集群里各个节点之间的时间是同步的。

 

 

我这里就不用配置时间同步。

 

附:时间同步的配置方法:

如果各个主机上的时间不同步或者存在较大差异时,需要配置时间同步。

将gp-master节点作为ntp服务器与外界对时中心同步时间,随后对所有datanode节点提供时间同步服务。

所有datanode节点以master节点为基础同步时间。

所有节点安装相关组件:yum install ntp。

完成后,配置开机启动:chkconfig ntpd on

检查是否设置成功:chkconfig --list ntpd

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

 

主节点配置

在配置之前,先使用ntpdate手动同步一下时间,免得本机与对时中心时间差距太大,使得ntp不能正常同步。这里选用主节点作为对时中心ntpdate -u 192.168.137.128。

 

ntp服务只有一个配置文件,/etc/ntp.conf,适当修改该文件即可

这里只给出有用的配置,其余的配置都用#注掉,这里就不在给出:

driftfile /var/lib/ntp/drift

restrict default nomodify notrap nopeer noquery

restrict 127.0.0.1

restrict ::1

server gp-master #(主机名或ip)

includefile /etc/ntp/crypto/pw

keys /etc/ntp/keys

disable monitor

配置文件完成,保存退出。

启动服务,执行如下命令:service ntpd start

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

 

如果出现异常请稍等片刻。

 

配置ntp客户端(所有datanode节点):同主节点。

ok保存退出。

请求服务器前,先使用ntpdate手动同步一下时间:

ntpdate -u gp-master(主节点ntp服务器)

 

这里可能出现同步失败的情况,请不要着急,一般是本地的ntp服务器还没有正常启动,一般需要等待5-10分钟才可以正常同步。

启动服务:service ntpd start

如此,时间同步配置完成。

2Cloudera Manager服务配置

有了上述的准备工作之后,接下来可以正式开始集群的安装。

以上的准备工作的细节必须注意!

哪一点没有注意到都会导致之后的安装失败!

 

2.1安装Cloudera Manager Server和Agent

主节点解压安装cloudera manager的目录默认位置在/opt下,解压:tar -zxvf cloudera-manager*.tar.gz

我们将解压后的cm-5.7.5和cloudera目录放到/opt目录下。

2.2 为Cloudera Manager建立数据库

首先需要去MySql的官网下载JDBC,http://dev.mysql.com/downloads/connector/j/

 

解压后,找到mysql-connector-java-5.1.45-bin.jar,

放到/opt/cm-5.7.5/share/cmf/lib/中。

在主节点初始化CM5的数据库:

执行命令:/opt/cm-5.7.5/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -uroot -pmastercom168 --scm-host localhost scm scm scm

2.3 Agent配置

修改/opt/cm-5.7.5/etc/cloudera-scm-agent/config.ini中的server_host为主节点的主机名。gp-master

同步Agent到其他节点:

scp -r /opt/cm-5.7.5 root@gp-node02:/opt/

在所有节点创建cloudera-scm用户:

useradd --system --home=/opt/cm-5.7.5/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm

 

准备Parcels,用以安装CDH5

   

2.4 配置Parcel

将CHD5相关的Parcel包放到主节点的/opt/cloudera/parcel-repo/目录中。

 

相关的文件如下:

 

CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel

CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel.sha1

manifest.json

 

最后将CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel.sha1,重命名为CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel.sha使用命令:

 mv CDH-5.7.5-1.cdh5.7.5.p0.3-el6.parcel.sha1 CDH-5.7.5-1.cdh5.7.5.p0.3-el6.parcel.sha

 

这点必须注意,否则,系统会重新下载CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel文件。

 

启动相关脚本主节点的Service和Agent,其余节点的Agent.

 

主节点通过/opt/cm-5.7.5/etc/init.d/cloudera-scm-server start启动服务端。

 

所有节点通过/opt/cm-5.7.5/etc/init.d/cloudera-scm-agent start启动Agent服务。

 

我们启动的其实是个service脚本,需要停止服务将以上的start参数改为stop就可以了,重启是restart。

输入命令 lsof -i :7180检测7180端口的状态:

 

上面的结果说明,7180端口已经启动,我们就可以通过界面监控集群了

2.5 启动及验证

上面的主节点的service和所有节点的agent全部成功启动之后,

就可以通过浏览器输入主节点的ip:7180进入cloudera manager界面进行操作

如图,输入:192.168.137.128:7180进入界面

(service刚刚启动,可能不能马上进入界面,稍等一下即可)。

 离线安装Cloudera Manager 5和CDH5及与遇到的问题总结_第6张图片

默认的账户名和密码都是admin.

输入 admin

     admin

点击登录,完成登录操作。

 

 

 

3CDH集群安装

根据界面上的提示进行CDH集群的安装

离线安装Cloudera Manager 5和CDH5及与遇到的问题总结_第7张图片

3.1 为CDH集群安装指定主机

 

在是的,我接受最终用户许可条款和条件点击一下,

点击继续进行下一步。

 离线安装Cloudera Manager 5和CDH5及与遇到的问题总结_第8张图片

 

接下来要为cdh群集安装指定主机。

注意要选择当前管理的主机(点击新主机旁边的位置)!

将集群里所有的节点全部选上!!

如果有哪个应该出现的节点没有出现,

就说明该节点的agent启动出现了问题。

就去它的agent日志文件下面排查问题。

agent日志文件存放在:/opt/cm-5.7.5/log/cloudera-scm-agent目录下

 文件名是: cloudera-scm-agent.log

 离线安装Cloudera Manager 5和CDH5及与遇到的问题总结_第9张图片

点击使用Parcel,进行路径的设置

这个路径很关键,如果设置有问题的话就会进行在线安装,不仅耗时,还会出现各种各样的问题!

如果你将cm的安装包放在了opt包下面,前面两个的路径就沿用默认的配置!

如果使用的是自定义路径,就将opt替换为实际的路径!

选择安装版本,这里我使用的是CDH5.7.5

剩下的使用默认的选项即可。

 

 

 

3.2 检查主机的正确性

 离线安装Cloudera Manager 5和CDH5及与遇到的问题总结_第10张图片

点击继续进行下一步,检查主机的正确性

这里,有问题的话要解决问题。

这里验证全部正确,却提示了两个警告。

这两个警告如果不处理可能对我们的集群产生影响。

 

第一个警告的处理方式,执行echo 0 > /proc/sys/vm/swappiness命令

将该环境变量临时设置为0

对于第二个警告:使用命令:

echo never > /sys/kernel/mm/transparent_hugepage/defrag

并且修改文件   vi /etc/rc.local

在文件的末尾加上该命令:

echo never > /sys/kernel/mm/transparent_hugepage/defrag

 离线安装Cloudera Manager 5和CDH5及与遇到的问题总结_第11张图片

 

 

 

拖到该界面的下面,我们看到:这是Cloudera Manager下对应的各种软件的版本

可以看到,我们关注的几个软件:

Hadoop是2.6.0,Spark是1.6.0

Hbase是1.2.0,Hive是1.1.0

都是我们熟悉的版本。

 离线安装Cloudera Manager 5和CDH5及与遇到的问题总结_第12张图片

 离线安装Cloudera Manager 5和CDH5及与遇到的问题总结_第13张图片

 

 离线安装Cloudera Manager 5和CDH5及与遇到的问题总结_第14张图片

 离线安装Cloudera Manager 5和CDH5及与遇到的问题总结_第15张图片

点击完成。

 

3.3 集群设置

 离线安装Cloudera Manager 5和CDH5及与遇到的问题总结_第16张图片

接下来开始进行集群的设置,选择需要安装的CDH5服务,这里,我选择安装全部。即点击

所有服务。

可以根据实际需要选择自定义服务,选择自己所需要的组件进行安装。

建议不要像我这么选,先只安装核心组件,这样会增加安装成功几率,后面需要什么在安装什么也是可以的.

 

 

3.4自定义角色分配

 离线安装Cloudera Manager 5和CDH5及与遇到的问题总结_第17张图片

自定义各个组件的分配。确定某个组件安装在集群的哪个节点上。

这里,全部根据默认配置搭配即可。

 

 

 

3.5数据库检测

 离线安装Cloudera Manager 5和CDH5及与遇到的问题总结_第18张图片

这里,就用到了文档开始时安装MySql时我们创建的两个数据库。

一个是amon,一个是hive

用户名均为root ,密码均为mastercom168。

输入结束后,点击测试连接检验数据库。

如图,两个数据库连接均提示Successful。这是,可以点击继续进行下一步。

 

3.6目录设置

 

这一步,我们主要配置各个组件的一些重要属性,及其数据的存储目录,总结如下:

HDFS的根目录,          存在/hbase路径下

DataNode数据目录,       存在/dfs/dn目录下

HDFS检查点目录,         存在/dfs/snn目录下

NameNode数据目录,      存在/dfs/nn目录下

Hive仓库目录,            存在/usr/hive/warehouse

Hive Metastore服务器端口:   9083

Impala Daemon暂存目录:   /impala/impalad

HDFS数据目录:   /solr

NodeManager本地目录:   /yarn/nm

数据目录:   /var/lib/zookeeper

事务日志目录:   /var/lib/zookeeper

 

 离线安装Cloudera Manager 5和CDH5及与遇到的问题总结_第19张图片

 

 

 

 

 

3.7组件首次运行

集群里配置好的组件进行首次运行操作!

 离线安装Cloudera Manager 5和CDH5及与遇到的问题总结_第20张图片

全部运行成功后点击完成即可!

之后就可以通过界面管理集群啦!

4通过界面管理集群

 

4.1 群集

 

 

主要包括3个部分:Cluster 1 

服务(集群里面安装的各种组件)

Cloudera Management Service

点进某个板块,点击板块右上角的操作,可以对集群的某个组件进行操作:

主要包括,启动,停止,重启,等

在配置下,可以完成对一些服务,和关键目录,属性等的配置。

在状态下,可以完成对某个组件状态的监控。

还可以以图表这种更直观的形式显示集群的运行状况。

离线安装Cloudera Manager 5和CDH5及与遇到的问题总结_第21张图片

 

4.2 主机

 

主机目录下主要包括:所有主机,角色,主机模型,磁盘概述,Parcel等几个模块

我们可以直观的了解到主机的各种信息以及主机的运行状态。

 离线安装Cloudera Manager 5和CDH5及与遇到的问题总结_第22张图片

 

4.3 诊断

 

诊断界面主要包括事件,日志,服务器日志等信息。

事件:可以通过指定的内容(组件)和关键词来查看你想了解的信息

通过对日志,和服务器日志的查看和分析,可以更加直观方便的定位问题并解决问题

离线安装Cloudera Manager 5和CDH5及与遇到的问题总结_第23张图片

 

 

4.4 审核

主要记录服务器开启关闭,以及用户的登录信息

 离线安装Cloudera Manager 5和CDH5及与遇到的问题总结_第24张图片

 

4.5 图表

 

包括:图表生成器,新仪表板,管理仪表板

图表生成器:通过输入查询来构建图表,可以根据实际需要选择各种类型的图表。

 

新仪表板:

 

管理仪表板:包括创建仪表板和导入仪表板

离线安装Cloudera Manager 5和CDH5及与遇到的问题总结_第25张图片

5.6 管理

 

管理界面包括:设置,警报,用户,安全,许可证,语言

对语言,用户,安全等信息进行管理,并对集群的关键性信息进行设置。

 离线安装Cloudera Manager 5和CDH5及与遇到的问题总结_第26张图片

5、常见问题FAQ

下面是在集群安装的时候遇到的一些问题及解决方法:

5.1 service启动成功,agent无法启动

在cm-5.7.5下面的/etc/init.d目录下

执行./cloudera-scm-agent start 提示如下:

解决办法:

首先去log目录下查看agent里面的日志,发现如下信息:

 

首先考虑到这有可能是windows和linux的换行符不一致,导致文件无法识别,

即可能多了\r换行符,所以会产生没有那个文件或目录的问题。

出错的文件是 /usr/bin/env,我们可以查看该文件,使用命令

vi /usr/bin/env

输入 set ff查看到: ,证明文件是unix格式

这说明了不是由于换行符问题导致的。

 

注意到问题是和python2.6相关的

接下来开始查看python版本,

使用hmaster账户,输入python看到python版本为:2.7.5

但是在公司里其余节点,运行python命令查看python版本,可以看到版本是2.62

使用which python命令:查看到如下结果:

这个是python2.7.5版本

同一个节点下切换为gpadmin用户,使用witch python命令:结果如下:

这个是python2.6.2版本

可以考虑建立一个软链接,当访问2.7.5的python版本时,指向python2.6.2版本

但是python2.6.2版本的目录是归属于gpadmin用户的,hmaster没有足够的权限,需要在不破坏gpadmin权限的情况下赋予hmaster足够的权限。

无奈之下,只好重新下载一个python2.6版本。

 

python2.6的安装  

1.下载Python2.6.X 版本的源码包,这里采用平台编译安装。   Python-2.6tar.bz2  

2.解压缩 ,使用如下命令解压bigz2类型的压缩文件   tar  -jxvf Python-2.6tar.bz2   cd  Python-2.6  

3. 配置编译参数   注意: 加上 –enable-shared 参数,否则不会生成libpython2.6.so.1.0的动态链接库,不加默认生成libpython2.6.so.a的静态链接库   ./configure –enable-shared  

4. 编译   make  

5. 安装(需高权账号,具有/usr/local的写权限)   make install  

6.检查   输入python 命令

离线安装Cloudera Manager 5和CDH5及与遇到的问题总结_第27张图片

正常进入 python 2.6 的shell脚本

之后继续运行agent,依旧失败,

去日志里面查看文件,此时的问题变为:

 

于是我们可以建立一个软链接 指向刚刚安装好的python目录(下面的python)指向 usr/local/python2.6.4

该问题得到解决,继续启动agent,遇到的问题是:

去python的安装目录下查看,发现并没有lib目录,也就没有libpython2.6.so.1.0这个文件这是由于安装python没有成功的生成动态库所导致的,

解决方法:

  1. 可以使用如下方式编译Python以解决这个问题:

    ./configure --enable-shared --prefix=/usr/local/python2.6

    make && make install

  2. cp /usr/local/python2.6/lib/libpython2.6.so.1.0 /usr/local/lib

     cd /usr/local/lib

     ln -s libpython2.6.so.1.0 libpython2.6.so

  3. 使用命令whereis libpython2.6.so.1.0得到如下结果就说明

    libpython2.6.so.1: /usr/local/lib/libpython2.6.so.1.0

再次运行的时候遇到如下问题:

解决方法如下:

1.编辑      vi /etc/ld.so.conf 

如果是非root权限帐号登录,使用 sudo vi /etc/ld.so.conf 

添加上python2.6的lib库地址,如我的/usr/local/Python2.6/lib,保存文件

 

执行 /sbin/ldconfig -v命令,

如果是非root权限帐号登录,使用 sudo  /sbin/ldconfig -v。

这样 ldd 才能找到这个库,执行python2.6就不会报错了

 

/etc/ld.so.conf: 这个文件记录了编译时使用的动态链接库的路径。 默认情况下,编译器只会使用/lib和/usr/lib这两个目录下的库文件 如果你安装了某些库,没有指定 --prefix=/usr 这样lib库就装到了/usr/local下,而又没有在/etc/ld.so.conf中添加/usr/local/lib,就会报错了

ldconfig是一个程序,通常它位于/sbin下,是root用户使用的。 简单的说,它的作用就是将/etc/ld.so.conf列出的路径下的库文件 缓存到/etc/ld.so.cache 以供使用 因此当安装完一些库文件,(例如刚安装好glib),或者修改ld.so.conf增加新的库路径后,需要运行一下/sbin/ldconfig 使所有的库文件都被缓存到ld.so.cache中,如果没做,即使库文件明明就在/usr/lib下的,也是不会被使用的,结果 编译过程中抱错,缺少xxx库。

接下来重新启动agent,该问题得到解决。

 

5.2 安装cm,界面上一直提示获取安装锁

由于群集安装的过程中,需要连接外网,所以就很可能出现安装失败的情形。

在这种情形出现之后,重新进行安装,就会在集群安装的界面上一直提示:

获取安装锁....

之后会导致失败

解决方法:哪一个节点被锁就删除哪一个上的锁

进入出现该提示节点下的/tmp 目录,

使用ls -a查看,

删除scm_prepare_node.*的文件,

以及.scm_prepare_node.lock文件。

使用命令:

rm -rf /tmp/scm_prepare_node.*

rm -rf /tmp/.scm_prepare_node.lock

所有出现该问题的节点都执行完如下命令之后

重新执行安装命令,该问题得到解决。

 

5.3 service启动后马上挂掉

 

在主节点的cm-5.7.5下面的/etc/init.d目录下

执行./cloudera-scm-service start 提示成功

所有节点的cm-5.7.5下面的/etc/init.d目录下

执行./cloudera-scm-agent start 提示成功

 

开始输入主机ip:端口号准备进入cloudera manager的安装界面

访问却被拒绝。

开始认为是service刚刚启动,需要一定的时间才能访问。

结果一段时间之后访问仍然被拒绝。

执行./cloudera-scm-service start 依然提示成功

而service服务已经启动,应该提示is running才对

输入lsof -i:7180发现端口号并没有被占用

证明service启动后马上挂掉。

去log下面查看service的日志记录,出现如下问题:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactoryBean': FactoryBean threw exception on object creation; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: cmf.server] Unable to build EntityManagerFactory at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:149) at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:102) at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1440) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:247) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:192) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322) ... 17 more Caused by: javax.persistence.PersistenceException: [PersistenceUnit: cmf.server] Unable to build EntityManagerFactory

.......

........

发现所有的问题都是和数据库连接有关的,初步推测是MySql的问题,也就是说,service启动后不能连接到数据库,服务出现问题就关闭

 

首先想到的是缺少连接MySql的jar包

进入到cm-5.7.5的share/cmf/lib路径下,发现:

是存在这个jar包的。

于是去检查我们的mysql

进入到cm-5.7.5/etc/cloudera-scm-server路径下,

看到下面有dp.properties文件,删除该文件

使用MySql进入到数据库下,删除cm数据库。

执行数据库的初始化命令:/opt/cm-5.7.5/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -uroot -pmastercom168 --scm-host localhost scm scm scm

重新启动service,问题得到解决。

 

5.4 主机名的问题

 

Cloudera Manger对于主机名的要求是十分严格的,

任何一个节点主机名出现问题可能暂时不会产生任何影响.

但是在通过界面进行安装的时候会直接导致失败!

具体包括:

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

将主机名修改为:gp-master,

并执行了service network restart命令后,

到界面安装的时候仍然出现了主机名为 localhost.localdomain的问题。

使用hostname命令查看主机名,果然没变,去文件里查看,也没有问题!

重启了虚拟机之后,主机名才变成了我们所更改的!

所以修改完主机名,重启网络服务之后,记得使用hostname命令查看主机名,如果不是我们所修改的,就需要重启虚拟机!

 

2)修改/etc/hosts文件如下图所示:

在安装集群检查主机的时候报错:同一个ip在hosts文件里面配置多次!

这种配置方法在普通的集群上是可行的,也就是说,一台主机,可以即做名称节点,又做数据节点,但是在cloudera manager下,这种配置是不允许的!!

把第二行删除掉,该问题得到解决。

 

你可能感兴趣的:(开发环境搭建,cdh5,cloudera,Manager,linux,hadoop集群,集群安装)