Ubuntu16.04 离线安装CDH6.2.1

1. 离线包工作

  • 下载Cloudera Manager安装包,地址:https://archive.cloudera.com/cm6/6.2.1/repo-as-tarball/

    cm6.2.1-ubuntu1604.tar.gz
    
  • 下载CDH6.2.1安装包,地址:https://archive.cloudera.com/cdh6/6.2.1/parcels/

    CDH-6.2.1-1.cdh6.2.1.p0.1425774-xenial.parcel	2019-12-04 13:35	1.87GB
    CDH-6.2.1-1.cdh6.2.1.p0.1425774-xenial.parcel.sha1	2019-12-04 13:38	40B
    CDH-6.2.1-1.cdh6.2.1.p0.1425774-xenial.parcel.sha256	2019-12-04 13:37	64B
    manifest.json
    

2. 环境准备

集群都是Ubuntu16.04版本的

2.2 配置/etc/hosts映射,其中一台的示例

127.0.0.1       localhost

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

192.168.2.42 cldev-701-02
192.168.2.44 cldev-701-04
192.168.2.45 cldev-701-05
192.168.2.46 cldev-701-06
192.168.2.47 cldev-701-07
192.168.2.48 cldev-701-08
192.168.2.49 cldev-701-09
192.168.2.50 cldev-701-10
192.168.2.51 cldev-701-11
192.168.2.52 cldev-701-12
192.168.2.53 cldev-701-13
192.168.2.54 cldev-701-14
192.168.2.65 cldev-701-25
192.168.2.66 cldev-701-26
192.168.2.67 cldev-701-27
192.168.2.68 cldev-701-28
192.168.2.69 cldev-701-29
192.168.2.70 cldev-701-30
192.168.2.71 cldev-701-31
192.168.2.72 cldev-701-32
192.168.2.73 cldev-701-33
192.168.2.74 cldev-701-34

2.3 关闭防火墙

ufw status
ufw disable

2.4 配置ssh无密码登录

2.5 配置NTP服务,我使用的是公网的ip

/etc/ntp.conf

# /etc/ntp.conf, configuration for ntpd; see ntp.conf(5) for help

# Enable this if you want statistics to be logged.
#statsdir /var/log/ntpstats/


# Specify one or more NTP servers.

# more information.
#pool 2.ubuntu.pool.ntp.org iburst
#pool 3.ubuntu.pool.ntp.org iburst

# Use Ubuntu's ntp server as a fallback.
#pool ntp.ubuntu.com

# Access control configuration; see /usr/share/doc/ntp-doc/html/accopt.html for
# details.  The web page <http://support.ntp.org/bin/view/Support/AccessRestrictions>
# might also be helpful.
#
# Note that "restrict" applies to both servers and clients, so a configuration
# that might be intended to block requests from certain clients could also end
# up blocking replies from your own upstream servers.

# By default, exchange time with everybody, but don't allow configuration.
restrict -4 default kod notrap nomodify nopeer noquery limited
restrict -6 default kod notrap nomodify nopeer noquery limited

# Local users may interrogate the ntp server more closely.
restrict 127.0.0.1
restrict ::1

# Needed for adding pool entries
restrict source notrap nomodify noquery

# Clients from this (example!) subnet have unlimited access, but only if
# cryptographically authenticated.
#restrict 192.168.123.0 mask 255.255.255.0 notrust


# If you want to provide time to your local subnet, change the next line.
# (Again, the address is an example only.)
#broadcast 192.168.123.255

# If you want to listen to time broadcasts on your local subnet, de-comment the
# next lines.  Please do this only if you trust everybody on the network!
#disable auth
#broadcastclient

#Changes recquired to use pps synchonisation as explained in documentation:
#http://www.ntp.org/ntpfaq/NTP-s-config-adv.htm#AEN3918

#server 127.127.8.1 mode 135 prefer    # Meinberg GPS167 with PPS
#fudge 127.127.8.1 time1 0.0042        # relative to PPS for my hardware

#server 127.127.22.1                   # ATOM(PPS)
#fudge 127.127.22.1 flag3 1            # enable PPS API
server cn.pool.ntp.org

2.6 jdk环境

配置环境变量无效,java必须安装在/usr/java目录下

export JAVA_HOME=/usr/lib/jvm/java-8-oracle/
export PATH=$JAVA_HOME/bin:$PATH

2.7 创建/usr/share/java目录,将mysql-jdbc包放过去(所有节点)

mkdir -p /usr/share/java
mv /opt/mysql-j/mysql-connector-java-5.1.34.jar /usr/share/java/
cd /usr/share/java
mv mysql-connector-java-5.1.34.jar mysql-connector-java.jar

2.8 安装MySQL,并创建库

CREATE DATABASE scm DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
--hive库
create database hive DEFAULT CHARSET utf8 collate utf8_general_ci;
--report manager库
create database rman DEFAULT CHARSET utf8 collate utf8_general_ci;
--oozie库
create database oozie DEFAULT CHARSET utf8 collate utf8_general_ci;
--hue库
create database hue DEFAULT CHARSET utf8 collate utf8_general_ci;

grant all on hive.* TO 'hive'@'%' IDENTIFIED BY 'hive';
GRANT ALL ON scm.* TO 'scm'@'%' IDENTIFIED BY 'scm';
grant all on rman.* TO 'hive'@'%' IDENTIFIED BY 'hive';
grant all on oozie.* TO 'oozie'@'%' IDENTIFIED BY 'oozie';
grant all on hue.* TO 'hue'@'%' IDENTIFIED BY 'hue';

3. 安装

3.1 制作离线源

#以下不管用 应直接修改 /etc/apt/sources.list
添加
deb [arch=amd64] http://192.168.2.65:8000/cm6/cm6.2.1/ xenial-cm6.2.1 contrib

sudo mkdir -p /var/www/html/cloudera-repos/cm6
# 解压下载的cm包
sudo tar -zxvf cm6.2.1-ubuntu1604.tar.gz -C /var/www/html/cloudera-repos/cm6
cd /var/www/html/cloudera-repos/cm6/cm6.2.1
sudo mv cloudera-manager.list /etc/apt/sources.list.d/
cd /etc/apt/sources.list.d/
# 修改源地址,将cloudera-manager.list里的内容改为如下
vi cloudera-manager.list
# Cloudera Manager 6.2.1
deb [arch=amd64] http://192.168.2.65:8000/cm6/cm6.2.1/ xenial-cm6.2.1 contrib

3.2 启动http服务

# 因为上面的地址根是/cm6/cm6.2.1,所以进到上一级目录,开始python3自带的http服务
cd /var/www/html/cloudera-repos
python3 -m http.server

3.3 安装Cloudera Manager

sudo apt-get install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server --allow-unauthenticated

安装完CM后/opt/ 下会出现cloudera目录,cloudera目录下有cm,cm-agent,parcel-repo,将下载的CDH包放到parcel-repo下

执行命令

sudo mv CDH-6.2.1-1.cdh6.2.1.p0.1425774-xenial.parcel.sha1 CDH-6.2.1-1.cdh6.2.1.p0.1425774-xenial.parcel.sha

3.4 执行cm数据库初始化

#先创建scm,用户授权
CREATE USER 'scm'@'%' IDENTIFIED BY 'scm';
grant all privileges on *.* to scm@'%' identified by 'scm';
flush privileges;

sudo /opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm scm

注:这里使用mysql 5.7版本出现ssl连接问题,解决办法是修改mysqld.cnf文件或者my.cnf文件
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
在[mysqld]下添加skip_ssl 然后重启mysql

3.5 开启server服务,进入web界面

sudo service cloudera-scm-server start

打开http://192.168.2.65:7180,这里有可能需要等待一会儿才会出现界面,刚开始直接出现服务无响应,我以为出了什么问题,不得不吐槽下cloudera做的太差了,像ambari流程的流畅性就好多了

4、集群安装

一直到Specify Hosts,输入各个节点主机名,进行搜索,选中,然后继续
11.1、选择存储库
上传parcel文件到/opt/cloudera/parcel-repo文件夹

在这里插入图片描述

选项,这一步很迷,有时候你放在存储库的parcel版本刷不出来。

在这里插入图片描述
下一步,不安装jdk

提供ssh,如果是root直接用root,如果不是,需要有无密码执行sudo权限的用户。

下一步开始安装cloudera-manager-agent

4. 安装CDH

一路走到Welcome(Add Cluster-Installation)

  • 配置自己所要安装集群的机器hostname,每一行是一个主机,选择Parcel(默认就可以),JDK不选择安装Oracle Java SE开发工具,使用我们自己的JDK

  • Enter Login Credentials:这里因为我是用的普通用户,授予sudo权限,所以选择其他用户,选择所有主机接收相同私钥,我将cloudera-scm-master所在机器的id_rsa进行copy出来,上传

  • Install Agents:自动安装Agents,这里我碰到两个问题

    • 第一个是我配置的cloudera-manager.list里面的路径被改掉了,本来我配置的是有层级目录的,但是变成了,http://:,暂时不知道什么原因,导致allkeys.asc这个文件找不到,所以我修改了python3 http server的启动目录,进到allkeys.asc所在的目录,启动python3 -m http.server,安装成功。
    • 第二个是因为ERROR Failed to connect to previous supervisor,这个查看日志发现是端口冲突了,但是cloudera竟然没有写冲突的端口是什么…,真坑,后来发现是我安装的机器原来有一个集群,没有卸载干净,supervisor进程还残留着,杀掉集群节点上的这个进程就好了
  • Install Parcels:这里最开始是会变红的,然后再边绿,这里同样要吐槽下,什么鬼?为什么一开始是红的?导致一开始以为出错了,这个过程中遇到的错比较多,而且很坑,再次吐槽下cloudera manager做的真的不好。第一个是不知道为什么,这里卡了很久,查看日志发现HTTP Error 404: Not Found,这里本来/opt/cloudera/parcel-repo下会有个.torrent文件的,但是没有发现,不知道为什么…,我尝试了很多办法,包括在 cloudera-scm-server 主节点下手动把需的 parcel 包放到 /opt/cloudera/parcel-repo/ 下面,注意修改属组为 cloudera-scm,后台甚至重启了cloudera-scm-server,这导致了很大的文件,之前做的都操作步骤都没有了,需要从第一步走下来,但是第一步输入名称报集群名已存在,然后我重新初始化了cloudera-scm-server的数据库,不报集群名已存在了,但是有些节点说已经被使用了,然后进到cloudera-manager的主页,http://:7180/cmf/home,在主机地方,删除所有添加的节点重新来,这样竟然可以传输parcel了,很奇怪。但是报了一个新的异常:主机运行状况不良,解决办法在下面,这里删除了后,需要等待一段时间才会好,cloudera manager的心跳感觉很慢,改了错误之后,需要一段时间才能反映过来,这个过程中还有过Connection refused的错误,好像是其中的某一个节点连接不到master节点了,但是一段时间后又好了,就很坑

  • 过了上一步之后就好了,会进行检测是否主机都满足安装条件了,这里我遇到了一些版本不适用的检测问题,没有管它,直接往下走了

  • 组件安装,我选择的自定义服务,这里又有一个比较坑的地方,所有的cloudera manager的组件(Alert Publisher,Event Server,Host Monitor,Reports Manager,Service Monitor)安装节点必须选择cloudera-scm-server所在的节点,因为需要引用/opt/cloudera/cm下的lib包,我第一次弄错了,直接导致后面的很多初始化过不去,然后返回到上一步更改了这部分,但是初始化的时候还是用的老的配置,就很坑,然后是我进到cloudera manager主页,也就是http://:7180/cmf/home,把老的配置的机器上的cloudera manager的组件删掉,然后重启。数据库设置那里要注意数据库主机的名称,数据库名称和密码分别是之前配置的那些

问题解决

  1. Install Parcels报:主机运行状况不良,查看日志发现是agent和server的id对不上,CM的集群是Server-Agent模式的,那么必须有一个唯一的id来标识Server和Agent属于同一个集群,在Agent端就是使用cm_guid文件来记录id的,因为之前频繁的重新安装导致的,解决办法:删除有问题节点下的lib/cloudera-scm-agent/下的cm_guid文件,然后重启

    cd /var/lib/cloudera-scm-agent/
    sudo rm -rf cm_guid
    sudo service cloudera-scm-agent restart
    

    https://docs.cloudera.com/documentation/enterprise/release-notes/topics/cm_rn_known_issues.html#rn_OPSAPS-34847

  2. cdh安装提示 当前受管,导致无法选择主机

​ 之前安装中断过,导致后面的安装中所有的主机处于 当前受管 状态,无法选择,进入之前创建的集群中(即namenode:7180/cmf/home),删除主机即可。

  1. 启动Spark失败,报日志目录不存在

    Caused by: java.io.FileNotFoundException: Log directory specified does not exist: hdfs://<ip>:<port>/user/spark/spark2ApplicationHistory
    	at org.apache.spark.deploy.history.FsHistoryProvider.org$apache$spark$deploy$history$FsHistoryProvider$$startPolling(FsHistoryProvider.scala:207)
    	at org.apache.spark.deploy.history.FsHistoryProvider.initialize(FsHistoryProvider.scala:153)
    	at org.apache.spark.deploy.history.FsHistoryProvider.<init>(FsHistoryProvider.scala:149)
    	at org.apache.spark.deploy.history.FsHistoryProvider.<init>(FsHistoryProvider.scala:77)
    	... 6 more
    Caused by: java.io.FileNotFoundException: File file:/user/spark/spark2ApplicationHistory does not exist
    	at org.apache.hadoop.fs.RawLocalFileSystem.deprecatedGetFileStatus(RawLocalFileSystem.java:598)
    	at org.apache.hadoop.fs.RawLocalFileSystem.getFileLinkStatusInternal(RawLocalFileSystem.java:811)
    	at org.apache.hadoop.fs.RawLocalFileSystem.getFileStatus(RawLocalFileSystem.java:588)
    	at org.apache.hadoop.fs.FilterFileSystem.getFileStatus(FilterFileSystem.java:425)
    	at org.apache.spark.deploy.history.FsHistoryProvider.org$apache$spark$deploy$history$FsHistoryProvider$$startPolling(FsHistoryProvider.scala:197)
    	... 9 more
    

    解决办法

    $ sudo -u hdfs hadoop fs -mkdir /user/spark
    $ sudo -u hdfs hadoop fs -mkdir /user/spark/applicationHistory
    $ sudo -u hdfs hadoop fs -chown -R spark:spark /user/spark
    $ sudo -u hdfs hadoop fs -chmod 1777 /user/spark/applicationHistory
    

    https://docs.cloudera.com/documentation/enterprise/5/latest/topics/admin_spark_history_server.html

  2. Yarn组件-》操作-》安装YARN MapReduce框架JAR,报异常说找不到class

    这是因为这个包在/opt/cloudera/cm的lib下,我的YARN没有安装在cm的Master节点,所以错误了,首先在出错的节点上创建目录/opt/cloudera/cm,然后将master节点上的lib包移过来就好了

  3. HDFS启动报错Canary test failed to find parent directory /tmp/.cloudera_health_monitoring_canary_files

    找不到/tmp目录,原因是我没有初始化好集群,所以切换到hdfs用户手动创建了/tmp目录,然后就好了

  • 29
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值