望穿秋水
管理&技术&业务 项目管理方面:加强通过工具辅助管理,构建Web项目管理系统来协助项目管理。技术开发方面:加强系统分析能力、架构设计能力,时刻把握新技术动态。业务方面:加强需求分析能力,使最终需求来源于客户又高于客户。
Cloudera Manager Server和Agent都启动以后,就可以进行CDH5的安装配置了。 
 
 

准备文件

从 http://archive.cloudera.com/cdh5/parcels/中下载CDH5.14.0的相关文件 

把CDH5需要的安装文件放到主节点上,新建目录为
/opt/cloudera/parcel-repo
把我们之前下载的三个文件放到这个目录下
CDH-5.14.0-1.cdh5.14.0.p0.24-el7.parcel
CDH-5.14.0-1.cdh5.14.0.p0.24-el7.parcel.sha1
manifest.json
需要注意的是
CDH-5.14.0-1.cdh5.14.0.p0.24-el7.parcel.sha1需要重命名成CDH-5.14.0-1.cdh5.14.0.p0.24-el7.parcel.sha
 
安装过程一路执行下去没有任何错误,只是到下图这一步中启动Hive和Oozie时会报错:

原因就是,mysql连接驱动没有放到Hive和Oozie的相应目录中。下文有详解,这里不再重复。

其他都是一路绿灯通过,安装过程相当顺畅。

安装parcel

访问CM的主页
http://192.168.43.101:7180/cmf/login
用户名和密码均为admin。
登录之后同意条款。
右下角点击继续。
选择版本然后右下角继续。
点击继续,各个Agent节点正常启动后,可以在当前管理的主机列表中看到对应的节点。选择要安装的节点,点继续。

 

接下来,出现以下包名,说明本地Parcel包配置无误,直接点继续就可以了。

 

如果此处发现不到parcel包,就重启所有节点的agent服务,和master的server服务,然后重新尝试。并且确认CDH版本小于或者等于CM的版本

 

 

本地通过Parcel安装过程与本地通过Package安装过程完全一致,不同的是两者的本地源的配置。

区别如下:

Package本地源:软件包是.rpm格式的,数量通常较多,下载的时候比较麻烦。通过”createrepo .”的命令创建源,并要放到存放源文件主机的web服务器的根目录下,详见创建本地yum软件源,为本地Package安装Cloudera Manager、Cloudera Hadoop及Impala做准备

Parcel本地源:软件包是以.parcel结尾,相当于压缩包格式的,一个系统版本对应一个,下载的时候方便。如centos 6.x使用的CDH版本为CDH-X.X.X-1.cdhX.X.X.p0.22-el6.parcel,而centos 5.x使用的CDH版本为CDH-X.X.X-1.cdhX.X.X.p0.22-el5.parcel。

 

这些文件放好之后,CM会获取这个包,并出现在主机->包裹的页面。出现的快慢跟你设置的包的刷新频率有关,默认是1小时。也可以重启CM服务和agent服务识别。

可以在管理页面的属性标签下的包裹种类里修改。

 

 

 

等待parcel安装

正常情况下 内网网速速好的话 10分钟左右激活完毕,最多不超过30分钟 如果卡住了 建议看看日志

安装过程中有什么问题 可以用

/opt/cm-5.14.0/etc/init.d/cloudera-scm-agent status
/opt/cm-5.14.0/etc/init.d/cloudera-scm-server status

查看服务器客户端状态

 

也可以通过

/var/log/cloudera-scm-server/cloudera-scm-server.log

/var/log/cloudera-scm-agent/cloudera-scm-agent.log

查看日志

如果上面的路径找不到则在

日志文件夹"/opt/cm-5.14.0/log"查看日志,里面包含server和agent的log,使用命令如下:

tail -f /opt/cm-5.14.0/log/cloudera-scm-server/cloudera-scm-server.log

tail -f /opt/cm-5.14.0/log/cloudera-scm-agent/cloudera-scm-agent.log

 

例如我这里NTP因为没有外网,所以会报错,不过有些错误不影响的话不需要管。

 

 

 

成功激活后继续右下角点击继续

 

主机检查

会进入自动检查主机(耗时2分钟左右)然后给出报告,包括需要修改的部分和组件的版本

 

 

 

 

解决警告

这里有2个警告需要解决一下,至于版本里的不可用不适用不需要管。

警告一

Cloudera 建议将 /proc/sys/vm/swappiness 设置为最大值 10。当前设置为 60。使用 sysctl 命令在运行时更改该设置并编辑 /etc/sysctl.conf,以在重启后保存该设置。您可以继续进行安装,但 Cloudera Manager 可能会报告您的主机由于交换而运行状况不良。以下主机将受到影响


解决方法

每台受影响的主机运行

echo 10 > /proc/sys/vm/swappiness 即可解决。

 

 

 

警告二
已启用透明大页面压缩,可能会导致重大性能问题。请运行“echo never > /sys/kernel/mm/transparent_hugepage/defrag”以禁用此设置,然后将同一命令添加到 /etc/rc.local 等初始脚本中,以便在系统重启时予以设置。以下主机将受到影响

 

解决方法

每台受影响的主机运行命令

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

并且

vim   /etc/rc.local  

加入echo never > /sys/kernel/mm/transparent_hugepage/defrag这条命令。

 

然后点击重新运行进行重新检查

 

 

全部绿勾了,然后点击右下角的完成。

选择安装哪些组件服务--这里根据需求选择即可。

 

 

 

选择组件服务

右下角点击继续,然后配置角色。一般情况下保持默认就可以了(Cloudera Manager会根据机器的配置自动进行配置,如果需要特殊调整,自行进行设置就可以了)。

我这里使用默认配置,所以直接点击继续就可以了。

 

配置数据库

然后配置数据库

这里需要输入自己的mysql的对应数据库名称和用户名以及密码。

我们之前在mysql中新建的数据名分布对应填入 然后点击测试连接。

hive   root  123456

oozie  root  123456

hue    root  123456

 

如果测试连接全部是Successful,则点击右下角的继续。

 

 

 

 

可能遇到的问题---hue--unable to verify

 

 

查看日志后发现原因是

 

Error loading MySQLdb module: libmysqlclient_r.so.16: cannot open shared object file: No such file or directory

 

 

这个是因为cm的服务端是用java编写的,cm的客户端是python编写的,这里测试连接时是用python去连接数据库。但是CentOS系统本身会缺少一些python连接数据库需要的关联库。

 

解决方法

在mysql的安装目录找到系统缺少的这个包,关联到系统即可。

 

根据最后提示,应该是找不着一个交libmysqlclient_r.so.16的文件,于是到mysql安装目录里找到这个文件并且做一个软连接到/usr/lib

如果是按照我们之前的离线安装mysql步骤安装的话 默认的mysql安装目录是/var/lib/mysql/ 

ln -s /var/lib/mysql/lib/libmysqlclient_r.so.16   /usr/lib64/libmysqlclient_r.so.16

但是/var/lib/mysql/ 目录下没有找到lib目录

使用

find / -name libmysqlclient_r.so.16

whereis   libmysqlclient_r.so.16

也找不到libmysqlclient_r.so.16。

我们在之前解压mysql文件的目录里发现了除了

MySQL-client-5.6.34-1.linux_glibc2.5.x86_64.rpm
MySQL-server-5.6.34-1.linux_glibc2.5.x86_64.rpm 

这两个安装文件之外另外的rpm包。

我们把其他几个关联rpm包也安装一下。

rpm -ivh   MySQL-shared-5.6.34-1.linux_glibc2.5.x86_64.rpm
rpm -ivh   MySQL-devel-5.6.34-1.linux_glibc2.5.x86_64.rpm
rpm -ivh   MySQL-shared-compat-5.6.34-1.linux_glibc2.5.x86_64.rpm
rpm -ivh   MySQL-embedded-5.6.34-1.linux_glibc2.5.x86_64.rpm   
rpm -ivh   MySQL-test-5.6.34-1.linux_glibc2.5.x86_64.rpm

安装完成后再查找

whereis   libmysqlclient_r.so.16

发现已经有了libmysqlclient_r.so.16而且已经在/usr/lib64路径下了。

再次点击测试连接,成功。

 

 

 

审核更改

审核更改中列出相关目录和配置,如果有需要的话就修改,无特殊需求使用默认的即可,点击右下角的继续。

另外如果需要自己设定文件夹,一定要先mkdir文件夹,否侧hdfs会无法启动,并且报错文件夹不存在,并确保访问权限。

 

 

 

集群启动

集群会首次运行所有的组件,这过程中可能会有一些错误,不要担心,解决重试即可。下面会依次给出我遇到的情况供大家参考,基本上都是权限或者驱动问题。

正确首次启动后如下图(是不是很激动^^)

右下角继续,离成功安装一步之遥。

 

 

 

可能遇到的问题---hdfs启动失败--创建/tmp目录失败

Directory /tmp does not currently exist

Can't open /opt/cm-5.8.2/run/cloudera-scm-agent/process/61-hdfs-NAMENODE-createtmp/supervisor.conf: Permission denied.

报错信息

Mon Nov 28 14:20:59 CST 2016
JAVA_HOME=/usr/java/latest/
using /usr/java/latest/ as JAVA_HOME
using 5 as CDH_VERSION
using /opt/cm-5.8.2/run/cloudera-scm-agent/process/61-hdfs-NAMENODE-createtmp as CONF_DIR
using  as SECURE_USER
using  as SECURE_GROUP
unlimited
Directory /tmp does not currently exist.

+ HADOOP_CLASSPATH=/opt/cm-5.8.2/share/cmf/lib/plugins/event-publish-5.8.2-shaded.jar:/opt/cm-5.8.2/share/cmf/lib/plugins/tt-instrumentation-5.8.2.jar:/opt/cm-5.8.2/share/cmf/lib/plugins/navigator/cdh57/audit-plugin-cdh57-2.7.2-shaded.jar
+ set -x
+ replace_conf_dir
+ find /opt/cm-5.8.2/run/cloudera-scm-agent/process/61-hdfs-NAMENODE-createtmp -type f '!' -path '/opt/cm-5.8.2/run/cloudera-scm-agent/process/61-hdfs-NAMENODE-createtmp/logs/*' '!' -name '*.log' '!' -name '*.keytab' '!' -name '*jceks' -exec perl -pi -e 's#{{CMF_CONF_DIR}}#/opt/cm-5.8.2/run/cloudera-scm-agent/process/61-hdfs-NAMENODE-createtmp#g' '{}' ';'
Can't open /opt/cm-5.8.2/run/cloudera-scm-agent/process/61-hdfs-NAMENODE-createtmp/supervisor.conf: Permission denied.
+ make_scripts_executable
+ find /opt/cm-5.8.2/run/cloudera-scm-agent/process/61-hdfs-NAMENODE-createtmp -regex '.*\.pyshpy‖sh$' -exec chmod u+x '{}' ';'
+ '[' DATANODE_MAX_LOCKED_MEMORY '!=' '' ']'
+ ulimit -l
+ export HADOOP_IDENT_STRING=hdfs
+ HADOOP_IDENT_STRING=hdfs
+ '[' -n '' ']'
+ acquire_kerberos_tgt hdfs.keytab
+ '[' -z hdfs.keytab ']'
+ '[' -n '' ']'
+ '[' validate-writable-empty-dirs = mkdir ']'
+ '[' file-operation = mkdir ']'
+ '[' bootstrap = mkdir ']'
+ '[' failover = mkdir ']'
+ '[' transition-to-active = mkdir ']'
+ '[' initializeSharedEdits = mkdir ']'
+ '[' initialize-znode = mkdir ']'
+ '[' format-namenode = mkdir ']'
+ '[' monitor-decommission = mkdir ']'
+ '[' jnSyncWait = mkdir ']'
+ '[' nnRpcWait = mkdir ']'
+ '[' -safemode = supergroup -a get = 1777 ']'
+ '[' monitor-upgrade = mkdir ']'
+ '[' finalize-upgrade = mkdir ']'
+ '[' rolling-upgrade-prepare = mkdir ']'
+ '[' rolling-upgrade-finalize = mkdir ']'
+ '[' nnDnLiveWait = mkdir ']'
+ '[' refresh-datanode = mkdir ']'
+ '[' mkdir = mkdir ']'
+ '[' 5 -ne 5 ']'
+ DIR=/tmp
+ USER=hdfs
+ GROUP=supergroup
+ PERMS=1777
+ RET=0
+ /opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/hadoop-hdfs/bin/hdfs --config /opt/cm-5.8.2/run/cloudera-scm-agent/process/61-hdfs-NAMENODE-createtmp dfs -test -d /tmp


原因是hdfs用户或者cm用户对这个文件没有操作权限。我们进入这个目录查看

cd    /opt/cm-5.8.2/run/cloudera-scm-agent/process/61-hdfs-NAMENODE-createtmp/

ls -l

发现确实是这个文件只有root才能读写,那么我们应该设置一下权限,因为cm是用hdfs用户在操作的。

使用命令

cd    /opt/cm-5.8.2/run/cloudera-scm-agent/process/61-hdfs-NAMENODE-createtmp/

chmod 666 supervisor.conf

ls  -l

然后点击右下角的重试。

 

 

可能遇到的问题--启动 Key-Value Store Indexer, YARN (MR2 Included)---Create Job History Dir 失败

 

启动 Key-Value Store Indexer, YARN (MR2 Included)
 仅完成 0/2 个步骤。首个失败:在服务 Key-Value Store Indexer 上执行命令 Start 失败
仅完成 0/2 个步骤。首个失败:在服务 YARN (MR2 Included) 上执行命令 Create Job History Dir 失败
使用用户 mapred 组 hadoop 和权限 1777 创建 DFS 目录 /tmp/logs
 主机运行状况变成不良时,主机 cm0 (id=3) 上的进程 dfs-create-dir (id=72) 被标记为失败
Mon Nov 28 14:53:18 CST 2016
JAVA_HOME=/usr/java/latest/
using /usr/java/latest/ as JAVA_HOME
using 5 as CDH_VERSION
using /opt/cm-5.8.2/run/cloudera-scm-agent/process/72-dfs-create-dir as CONF_DIR
using  as SECURE_USER
using  as SECURE_GROUP
unlimited
Directory /tmp/logs does not currently exist.
Created directory /tmp/logs.
Changed ownership of /tmp/logs to mapred:hadoop.
Can't open /opt/cm-5.8.2/run/cloudera-scm-agent/process/72-dfs-create-dir/supervisor.conf: Permission denied.

 

 

+ HADOOP_CLASSPATH=/opt/cm-5.8.2/share/cmf/lib/plugins/event-publish-5.8.2-shaded.jar:/opt/cm-5.8.2/share/cmf/lib/plugins/tt-instrumentation-5.8.2.jar:/opt/cm-5.8.2/share/cmf/lib/plugins/navigator/cdh57/audit-plugin-cdh57-2.7.2-shaded.jar

 

+ set -x+ replace_conf_dir+ find /opt/cm-5.8.2/run/cloudera-scm-agent/process/72-dfs-create-dir -type f '!' -path '/opt/cm-5.8.2/run/cloudera-scm-agent/process/72-dfs-create-dir/logs/*' '!' -name '*.log' '!' -name '*.keytab' '!' -name '*jceks' -exec perl -pi -e 's#{{CMF_CONF_DIR}}#/opt/cm-5.8.2/run/cloudera-scm-agent/process/72-dfs-create-dir#g' '{}' ';'Can't open /opt/cm-5.8.2/run/cloudera-scm-agent/process/72-dfs-create-dir/supervisor.conf: Permission denied.+ make_scripts_executable+ find /opt/cm-5.8.2/run/cloudera-scm-agent/process/72-dfs-create-dir -regex '.*\.pyshpy‖sh$' -exec chmod u+x '{}' ';'+ '[' DATANODE_MAX_LOCKED_MEMORY '!=' '' ']'+ ulimit -l+ export HADOOP_IDENT_STRING=hdfs+ HADOOP_IDENT_STRING=hdfs+ '[' -n '' ']'+ acquire_kerberos_tgt hdfs.keytab+ '[' -z hdfs.keytab ']'+ '[' -n '' ']'+ '[' validate-writable-empty-dirs = mkdir ']'

点击stderr看了详细的报错发现仍然是权限问题,解决方法跟之前一样,进入这个路径后更改下权限即可。

 

 

 

 

可能遇到的问题--Solr, HBase--Command Start is not currently available for execution

这种情况界面上没有详细的信息但是在日志中可以看到是超时了,这种情况下确保局域网网络好的情况下并且master服务器服务良好的情况下直接重试。

 

 

 

 

可能遇到问题---启动hive---Failed to Create Hive Metastore Database Tables

 

++ false++ exec /opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/hadoop/bin/hadoop jar /opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/hive/lib/hive-cli-1.1.0-cdh5.8.0.jar org.apache.hive.beeline.HiveSchemaTool -verbose -dbType mysql -initSchemaJava HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=512M; support was removed in 8.0org.apache.hadoop.hive.metastore.HiveMetaException: Failed to load driverorg.apache.hadoop.hive.metastore.HiveMetaException: Failed to load driverat org.apache.hive.beeline.HiveSchemaHelper.getConnectionToMetastore(HiveSchemaHelper.java:79)at org.apache.hive.beeline.HiveSchemaTool.getConnectionToMetastore(HiveSchemaTool.java:113)at org.apache.hive.beeline.HiveSchemaTool.testConnectionToMetastore(HiveSchemaTool.java:159)at org.apache.hive.beeline.HiveSchemaTool.doInit(HiveSchemaTool.java:257)at org.apache.hive.beeline.HiveSchemaTool.doInit(HiveSchemaTool.java:243)at org.apache.hive.beeline.HiveSchemaTool.main(HiveSchemaTool.java:473)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.apache.hadoop.util.RunJar.run(RunJar.java:221)at org.apache.hadoop.util.RunJar.main(RunJar.java:136)Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driverat java.net.URLClassLoader.findClass(URLClassLoader.java:381)at java.lang.ClassLoader.loadClass(ClassLoader.java:424)at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)at java.lang.ClassLoader.loadClass(ClassLoader.java:357)at java.lang.Class.forName0(Native Method)at java.lang.Class.forName(Class.java:264)at org.apache.hive.beeline.HiveSchemaHelper.getConnectionToMetastore(HiveSchemaHelper.java:70)... 11 more*** schemaTool failed ***

 

 

 

这是hive的lib包中缺少mysql的驱动导致的。我们之前已经把mysql驱动包mysql-connector-java-*-bin.jar放到主节点cm0的/opt中,现在复制一份到/opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/hive/lib(这里CDH-5.8.0-1.cdh5.8.0.p0.42要跟自己的版本对应)

 

使用命令如下

cd /opt/mysql-connector-java-5.1.40cp mysql-connector-java-5.1.40-bin.jar   /opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/hive/lib把mysql-connector-java-5.1.40-bin.jar放到/opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/hive/lib中。 cd  /opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/hive/libls|more确认已经放进去了。

然后点击右下角的重试。

 

 

 

 

 

 

 

 

可能遇到的问题---启动 Oozie, Impala---Create Oozie Database Tables 失败

 

Error: Could not connect to the database: java.lang.ClassNotFoundException: com.mysql.jdbc.DriverStack trace for the error was (for debug purposes):--------------------------------------java.lang.Exception: Could not connect to the database: java.lang.ClassNotFoundException: com.mysql.jdbc.Driverat org.apache.oozie.tools.OozieDBCLI.validateConnection(OozieDBCLI.java:905)at org.apache.oozie.tools.OozieDBCLI.createDB(OozieDBCLI.java:185)at org.apache.oozie.tools.OozieDBCLI.run(OozieDBCLI.java:129)at org.apache.oozie.tools.OozieDBCLI.main(OozieDBCLI.java:80)Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driverat java.net.URLClassLoader.findClass(URLClassLoader.java:381)at java.lang.ClassLoader.loadClass(ClassLoader.java:424)at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)at java.lang.ClassLoader.loadClass(ClassLoader.java:357)at java.lang.Class.forName0(Native Method)at java.lang.Class.forName(Class.java:264)at org.apache.oozie.tools.OozieDBCLI.createConnection(OozieDBCLI.java:894)at org.apache.oozie.tools.OozieDBCLI.validateConnection(OozieDBCLI.java:901)... 3 more--------------------------------------

+ '[' 0 = 1 ']'+ '[' CLOUDERA_MYSQL_CONNECTOR_JAR '!=' '' ']'+ eval 'JAR_LOCATION=$CLOUDERA_MYSQL_CONNECTOR_JAR'++ JAR_LOCATION=/usr/share/java/mysql-connector-java.jar+ echo 'Copying JDBC jar from /usr/share/java/mysql-connector-java.jar to /var/lib/oozie'+ cp /usr/share/java/mysql-connector-java.jar /var/lib/oozie/cp: cannot stat `/usr/share/java/mysql-connector-java.jar': No such file or directory+ OOZIECPPATH=

 

跟hive启动的问题一样,缺少驱动。

 

 

Oozie的lib包中缺少mysql的驱动导致的。我们之前已经把mysql驱动包mysql-connector-java-*-bin.jar放到主节点cm0的/opt中,现在复制一份到/opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/Oozie/lib(这里CDH-5.8.0-1.cdh5.8.0.p0.42要跟自己的版本对应)

 

再复制一份到/var/lib/oozie/

 

使用命令如下把mysql-connector-java-5.1.40-bin.jar放到/opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/oozie/lib中。 

 

 

cd /opt/mysql-connector-java-5.1.40

cp mysql-connector-java-5.1.40-bin.jar   /opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/oozie/lib

 

cp mysql-connector-java-5.1.40-bin.jar   /var/lib/oozie

cd  /opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/oozie/lib

ls|more

确认已经放进去了。

 

cd /var/lib/oozie

 

 

ls|more

 

点击右下角重试。

 

 

 

 

 

 

 

 

 

 

 

 

安装完成

 

恭喜您,安装完成。

点击完成后会进入监控界面。如果有红色的话,还是需要我们去解决的。。。

 

 主机报错是没有启动ntpd服务或者是cm客户端没启用。

每台机器都执行如下命令启动ntpd并设置为开机启动

[root@cdh1 ~]# systemctl start ntpd
[root@cdh1 ~]# systemctl enable ntpd

如果还不行,就打开主机的抑制功能,如下图:

 

然后主机报错的就排查了。

其他服务错误,启动一下试试,如果重启不行就按照下面文章的方法排查错误。

 

具体排查的情况可以参考文章或者自己查资料。

hadoop基础----hadoop实战(九)-----hadoop管理工具---CDH的错误排查(持续更新)

全部解决后就全绿了。

 

 

 

 

 

备份安装配置完好的系统

到这里我们的安装就算完成了。为了以后的修复方便,我们可以对分别对linux系统进行备份。虚拟机的就很方便,直接复制压缩虚拟机文件即可。

 

参考文章:https://www.cnblogs.com/felixzh/p/9082344.html

posted on 2019-04-12 18:19  望穿秋水  阅读(3185)  评论(0编辑  收藏  举报