Cloudera Manager、CDH零基础入门、线路指导
http://www.aboutyun.com/thread-9219-1-1.html
(出处: about云开发)

 

问题导读:
1.什么是cloudera CM 、CDH?
2.CDH、CM有哪些版本?
3.CDH、CM有哪些安装方式?
4.CDH如何开发?

零基础学习hadoop到上手工作线路指导(初级篇)。可以看看Linux的基础知识模块。需要掌握的内容还是不少的:




Linux掌握了,那么我们是否需要掌握虚拟机的基础知识,在搭建hadoop集群中,可以这些是必须掌握的,那么cloudera是否需要,也是需要的,这里就不在罗列了,详细参考零基础学习hadoop到上手工作线路指导(初级篇)。但是cloudera CM的安装比起hadoop集群的安装对硬件的要求更高。内存至少10G,为什么会这么多,如果少于10G是否可以,答案是可以的,但是后面你会遇到各种问题,或许都找不到答案。
对于cloudera-scm-server就需要至少4G的内存,cloudera-scm-agent的内存至少也需要1.5G以上。那么如果你的机器是8G的,还是很吃力的。
在安装的过程中,后面有很多的服务安装遇到问题的可能性是很大的。

什么是CDH

hadoop是一个开源项目,所以很多公司在这个基础进行商业化,Cloudera对hadoop做了相应的改变。
Cloudera公司的发行版,我们将该版本称为CDH。


很多新手问的最多的问题是,哪个是收费的,那个是免费的。
Cloudera Express版本是免费的
Cloudera Enterprise是需要购买注册码的

更多内容:
Cloudera Hadoop什么是CDH及CDH版本介绍

CDH(Cloudera)与hadoop(apache)对比

大数据架构师基础:hadoop家族,Cloudera产品系列等各种技术



 
当我们学习的时候,我们该如何学习,有两种方式:第一种:先理论,后实践
第二种:先实践,后理论

上面两种方式各有各的场合,如果你要去面试、考试、搞理论思想类,第一种方式是没有问题的。因为这些都是停留在思想层面的。
对于一个编程技术人员来讲,本人觉得第二种方式更加的短平快。
上面两种方式都有些绝对,最佳的方式就是实践与理论相结合。
这里撰文一下,引用孔子的一句话

学而不思则罔 思而不学则殆


只看书,不实践,或则只倒腾部署、停留在某些问题得不到解决,但是又不去看书、百度、谷歌查找解决问题,这样也是不行的。



好了,开始我们的官网:
官网是我们学习标准,所以我们首先要记住官网地址:
主页:
http://www.cloudera.com/content/cloudera/en/home.html
进入官网我们可以做些什么事情:
1.提供API
2.查看部署文档
3.下载安装包
那么我们如何查找API,如何查找部署文档,如何下载安装包?
详细可以查看
cloudera(CDH)官网介绍:安装包、离线包该如何下载、官方文档等介绍


 


但是并不是每个人都能看到上面进度,而是看到下面错误:

Detecting Cloudera Manager Server...
Detecting Cloudera Manager Server...
BEGIN host -t PTR 192.168.1.198
198.1.168.192.in-addr.arpa domain name pointer localhost.
END (0)
using localhost as scm server hostname
BEGIN which python
/usr/bin/python
END (0)
BEGIN python -c 'import socket; import sys; s = socket.socket(socket.AF_INET); s.settimeout(5.0); s.connect((sys.argv[1], int(sys.argv[2]))); s.close();' localhost 7182
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "<string>", line 1, in connect
socket.error: [Errno 111] Connection refused
END (1)
could not contact scm server at localhost:7182, giving up
waiting for rollback request


上面错误该如何解决:
可以使用下面方法解决:

  1. mv /usr/bin/host /usr/bin/host.bak
复制代码




2.第二种使用rpm、yum、apt-get方式在线安装
这种安装方式,在网上看的有点眼花缭乱,可能是因为我们对yum、apt、rpm了解的不多造成的,对于Linux基础缺乏的,可以参考:yum与rpm、apt的区别:rpm的缺陷及yum的优势,总的来说:由于rpm依赖关系不好,所以产生了yum,而yum和apt则都是Linux的包管理工具,并且解决了包与包的依赖关系。

这里列出一些安装文档
ubuntu 12.04 安装 Cloudera Manager5及CDH5(Mysql)【添加yum源方式安装集群】

遇到问题1:内存过小
使用yum安装因为mysql的配置至少需要对Cloudera server 4G的内存,否则mysql的重启过程中,就会遇到unknown instance.

遇到问题2:界面无法访问
界面无法访问,分为两种情况
一种是Cloudera-manager-server没有完全起来

当我们运行下面命令:
<ignore_js_op>角色日志,在界面中找到即可。 


遇到问题3:无法找到cloudera agent客户端

我们使用下面命令安装了agent

  1. sudo apt-get install cloudera-manager-agent cloudera-manager-daemons
复制代码

当然还有很多其它需要安装,当我们的agent安装成功后,为什么我们的的界面中不能发现agent.


本来我们有三台,但是却只有一台,而且是cloudera server本地的agent



我们打开配置文件

  1. sudo nano  /etc/cloudera-scm-agent/config.ini
复制代码



修改
server_host为server ip地址
server_port为7180

下图CDH即为cloudera server的hostname

3.第三种使用是Tarballs的方式

这种方式网上资料很少
安装的命令如下:

  1. $ tar xzf cloudera-manager*.tar.gz -C /opt/cloudera-manager
复制代码

这个跟hadoop的安装方式是一样的
安装的方法详细可参考:


这里在列出官网给出的三种安装方式:



如果想安装CM,这次再次强调一定要有足够的内存。并且我们安装完毕CM,一般会

4.安装失败处理
上面如果我们安装失败该如何处理:使用 cloudera-manager-installer.bin(Parcles)安装失败后卸载cloudera

卸载 Cloudera Manager 5.1.x.和 相关软件【官网翻译:高可用】
5.目录结构:
由于我们大多采用在线安装的方式,所以出血,我们根本不知道cloudera安装在了什么位置,详细可以参考下面内容

解析Cloudera Manager内部结构、功能包括配置文件、目录位置等
亦可参考下面帖子:
卸载 Cloudera Manager 5.1.x.和 相关软件【官网翻译:高可用】





Cloudera Manager Server启动后又挂掉的原因总结

我们安装CDH的时候,会碰到cloudera server启动后又挂掉了,这是什么原因?
查看日志:包下面问题

可是明明已经安装jdk,并且已经设置了JAVA_HOME

  1. java -version
复制代码



也能返回版本
这是怎么回事,猜测cloudera server(5)认oracle jdk,对于sun jdk也需要是在线安装(至于是不识别sun jdk还未验证)。同时还必须是jdk1.7.


 



也就是需要执行下面命令:

  1. sudo apt-get -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confold -y install oracle-j2sdk1.7
复制代码

原因是在后面执行scm-server数据库配合的时候,如果找不到Java_home可能会初始化失败。
Java_home默认安装路径如下。

  1. /usr/lib/jvm/java-7-oracle-cloudera
复制代码


从上面我们得出,如果想安装顺序,我们最好使用下面命令来安装jdk1.7

sudo apt-get -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confold -y install oracle-j2sdk1.7


执行上面命令,那么还需要做下面工作:



然后我们接着执行命令:

  1. service cloudera-scm-server restart
复制代码


认为终于好了,但是不幸的是,这次坚持了不到两分钟又挂掉了。


这次为什么会挂掉,不得不查看日志了:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creati
ng bean with name 'entityManagerFactoryBean': FactoryBean threw exception on obj

ect creation; nested exception is javax.persistence.PersistenceException: org.hi
bernate.exception.GenericJDBCException: Could not open connection
        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.getObje
ctForBeanInstance(AbstractBeanFactory.java:1440)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBe
an(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: org.hibernate.exception.Gener
icJDBCException: Could not open connection
        at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityMan
agerImpl.java:1387)
        at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityMan
agerImpl.java:1310)
        at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException
(AbstractEntityManagerImpl.java:1397)
        at org.hibernate.ejb.TransactionImpl.begin(TransactionImpl.java:62)
        at com.cloudera.enterprise.AbstractWrappedEntityManager.beginForRollback
AndReadonly(AbstractWrappedEntityManager.java:85)
        at com.cloudera.enterprise.dbutil.DbUtil.isInnoDbEnabled(DbUtil.java:472
)



2014-09-22 17:51:27,328 ERROR [main:spi.SqlExceptionHelper@147] An attempt by a 
client to checkout a Connection has timed out.
2014-09-22 17:51:27,339  INFO [main:support.DefaultListableBeanFactory@422] Dest
roying singletons in org.springframework.beans.factory.support.DefaultListableBe
anFactory@715dcdeb: defining beans [commandLineConfigurationBean,entityManagerFa
ctoryBean,com.cloudera.server.cmf.TrialState,com.cloudera.server.cmf.TrialManage
r,com.cloudera.cmf.crypto.LicenseLoader]; root of factory hierarchy
2014-09-22 17:51:27,341 ERROR [main:cmf.Main@202] Server failed.
org.springframework.beans.factory.BeanCreationException: Error creating bean wit
h name 'com.cloudera.server.cmf.TrialState': Cannot resolve reference to bean 'e
ntityManagerFactoryBean' while setting constructor argument; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean wi
th name 'entityManagerFactoryBean': FactoryBean threw exception on object creati
on; nested exception is javax.persistence.PersistenceException: org.hibernate.ex
ception.GenericJDBCException: Could not open connection
        at org.springframework.beans.factory.support.BeanDefinitionValueResolver
.resolveReference(BeanDefinitionValueResolver.java:328)
        at org.springframework.beans.factory.support.BeanDefinitionValueResolver
.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
        at org.springframework.beans.factory.support.ConstructorResolver.resolve
ConstructorArguments(ConstructorResolver.java:616)
        at org.springframework.beans.factory.support.ConstructorResolver.autowir
eConstructor(ConstructorResolver.java:148)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBean
Factory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1003)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBean
Factory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:907)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBean
Factory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBean
Factory.createBean(AbstractAutowireCapableBeanFactory.java:456)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getOb
ject(AbstractBeanFactory.java:293)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistr
y.getSingleton(DefaultSingletonBeanRegistry.java:222)


看完日志,你是否还是云里雾里,这不得不说一下,我们该如何利用日志。

日志的作用是什么?日志的作用是提示,它大部分会给我们明确说遇到了什么问题,比如权限拒绝,等,但是有些你是看不明白的,那我们该如何处理?只能靠你的灵感了,没有灵感怎么办?那就需要自己缕顺序,自己是怎么安装、怎么操作的,然后从中能够发现问题。渐渐的你就能培养出灵感了。


上面其实我只知道报的是一个Java异常,而且还跟链接有关系。
灵感来了,就像到了,是因为没有执行下面命令:

配置cloudera-manager-server数据库

  1. sudo /usr/share/cmf/schema/scm_prepare_database.sh mysql  -uroot -p --scm-host localhost scm scm scm_password
复制代码

但是又出问题了,如下:






然后我们再次重启

  1. service cloudera-scm-server restart
复制代码


ok始终在坚挺着,没有挂机,问题得到解决

相关文章:

  • 2021-08-23
  • 2022-12-23
  • 2022-12-23
  • 2021-06-03
  • 2021-07-15
  • 2021-08-25
  • 2021-07-26
猜你喜欢
  • 2021-05-12
  • 2021-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-25
  • 2022-12-23
  • 2021-07-01
相关资源
相似解决方案