最近两天在自己电脑上搭建一个Cloudera Manager来玩玩。本来以为挺简单的,只是在Web UI上无脑下一步就好了,
但其实还是遇到挺多问题的。
安装
在服务器上的操作
刚开始基本上,就是按照官网的步骤来走,首先做一些前置工作:
- 配置下apt
- 安装JDK.
- 安装下NTP时间同步的程序;
- 安装好Mysql,MariaDB,Posgres。
其中的一个数据库,刚开始以为都要安装。。。然后又把MariaDB这些一个个卸载了; - 在Mysql中创建一些CM所需的数据库和表。如下所是。
|
|
- 通过scm_prepare_database.sh 脚本来进一步设置Manager Database
sudo /opt/cloudera/cm/schema/scm_prepare_database.sh [options]
只需要执行一次sudo /opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm mypassword
就好了。
在Web UI上的安装
- 首先记得在每台机器上配置好/etc/hosts
- 在Web上的安装基本上就是点继续。有些地方要注意。
这一步会等待比较长的时间,会下载安装一些parcels。
- 然后,基本上就是下一步了。到这一步,我是创建了一个叫cloudera的用户,要给与它sudo以及password-exempt
对了,因为我的是单机版的,所以HDFS那边会报错一个叫:副本不足的块 存在隐患。
这是因为只有一个节点,Block块无法,分配到其它的节点作为备份。默认是有2个备份Block分发到其它节点。
启动CDH
|
|
停止CDH
有些时候我们要停机检修一下电脑,所以要停止Cluster。很简单,首先进入到CDH的Web UI的Cluster主界面, 左上角有个Action
,点一下弹出下拉条,然后选停止。等几分钟后集群的所有组件就会停止了。
然后进入到主节点的终端,输入sudo systemctl stop cloudera-scm-server
,就全部停止了。
CDH的一些配置
Yarn: RM,NM共用一个host
默认情况下Resource Manager会单独用一个节点。但是我的RM host内存和CPU都有剩余,跑app的时候把资源压在
device2上有点浪费了,我利用起device1的资源来。
首先进入到Yarn的版块,Action下拉框,点击Add Role Instance
注意,如果该instance的commission state为decommissioned的话要把它改为commissioned
增加服务
如果我们想新增加一些组件,比如Kafka或Spark,然后我们可以点击Cluster版块的Action下拉框,选中第一个 Add Service
进入新增Service的页面。
一些问题
问题1
我增加一个节点的时候遇到如下报错
解决方法:
问题2
在NameNode Format的时候遇到如下报错
Running in non-interactive mode, and data appears to exist in Storage Directory /dfs/nn. Not formatting.
解决方案:
删除/dfs/nn 以及 /dfs/dn里面的所有数据
因为之前我安装了一个单机集群,HDFS里面放了一些数据
问题3
Cloudera 在Validate Hive Metastore schema的时候出现如下错误,发现metastore里面没有VERSION table
解决方案:dennis@device1:/opt/cloudera/parcels/CDH/lib/hive/bin$ schematool -dbType mysql -initSchema -passWord password -userName hive
问题4
在Hue上的hive上运行一些 insert 和count(*) 操作时候会一直卡住(stuck, hang),没有任何反应,也没报错。
看日志是说MR 还没有启动。在Cloudera的community上查到 要mapred-site.xml的参数 mapreduce.framework.name 设置为 local
于是我在CDH中的Yarn集群下修改了mapreduce.framework.name 为 local,然后重启集群后就成功了。 select count(*) 和 insert就不会卡住了。
问题5
在hue上面可以正常地使用Hive。在device2下用hive cli没有问题。但在device1 下的bash执行hive command,里面输入show databases后报错:
解决方案:
先用 hive -hiveconf hive.root.logger=DEBUG,console
在调试,查看到更多有价值的报错信息。
果然,查到如下信息:
按日志的报错信息来说是我的源数据库密码不对,于是我查看hive-site.xml配置文件,发现
/opt/cloudera/parcels/CDH-6.2.0-1.cdh6.2.0.p0.967373/lib/hive/conf/hive-site.xml
也就是/etc/hive/conf/hive-site.xml(我猜CDH会把上面目录的所有配置文件复制一遍到 /etc/hive/conf/下)
我之前把它改了,所以那配置有问题,我把它改为默认的配置重启后就恢复正常了!
问题6
启动 cloudera-scm-server 时候报错如下:
解决方案:sudo /opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm mypassword
重新执行下这条命令。之前我把所有的服务都执行了一遍(amon, rman, … metastore, … etc),是我误解了scm_prepare_database.sh的作用。
按官网所说的:
这个脚本只需要执行一次就好了,就是sudo /opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm mypassword
然后重启cloudera-scm-server解决问题。此外,通过/etc/cloudera-scm-server/db.properties
也可以确定目前scm用的是哪个数据库。
问题7
|
|
解决方法:
问题8
CDH官方是要求安装Oracle的JDK的,其它版本的JDK使用的话也行,但不保证一定兼容。
在增加节点的时候,在安装agent的时候 apt报错:
123456789101112131415161718192021222324252627282930313233343536 root@device3:/data/software/jdk1.8.0_121# apt --fix-broken installReading package lists... DoneBuilding dependency treeReading state information... DoneCorrecting dependencies... DoneThe following additional packages will be installed:cloudera-manager-daemonsThe following NEW packages will be installed:cloudera-manager-daemons0 upgraded, 1 newly installed, 0 to remove and 106 not upgraded.26 not fully installed or removed.Need to get 0 B/1,218 MB of archives.After this operation, 1,420 MB of additional disk space will be used.Do you want to continue? [Y/n] y(Reading database ... 106482 files and directories currently installed.)Preparing to unpack .../cloudera-manager-daemons_6.2.0~968826.ubuntu1804_all.deb ...+======================================================================+| Error: Unable to find a compatible version of Java on this host,|| either because JAVA_HOME has not been set or because a || compatible version of Java is not installed. |+----------------------------------------------------------------------+| Please download a supported version of the Oracle JDK from the || Oracle Java web site: || || > http://www.oracle.com/technetwork/java/javase/index.html < || || Cloudera Manager requires Oracle JDK 1.8 or later. || NOTE: Cloudera Manager will find the Oracle JDK when starting, || regardless of whether you installed the JDK using a binary || installer or the RPM-based installer. |+======================================================================+dpkg: error processing archive /var/cache/apt/archives/cloudera-manager-daemons_6.2.0~968826.ubuntu1804_all.deb (--unpack):new cloudera-manager-daemons package pre-installation script subprocess returned error exit status 1Errors were encountered while processing:/var/cache/apt/archives/cloudera-manager-daemons_6.2.0~968826.ubuntu1804_all.debE: Sub-process /usr/bin/dpkg returned an error code (1)
这是因为sudo java -version
没有调通。
解决办法:
把sudo 下的java环境搞好就OK了。
或者直接切换到root用户下 apt --fix-broken install
, 因为root用户下就不会有java路径找不到的问题
另外增加节点的话,要记得把hosts DNS复制一份在新加的节点上
Reference
https://www.cloudera.com/documentation/enterprise/6/6.2/topics/introduction.html
https://blog.csdn.net/qq_24409555/article/details/76139886
https://community.cloudera.com/t5/Batch-SQL-Apache-Hive/Hive-Errors-happend-when-execute-hive-service-metastore/m-p/93050#M3282