Ubuntu16.04 离线安装CDH6.2.1

1. 离线包工作

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

properties 复制代码
# /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环境

properties 复制代码
配置环境变量无效,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包放过去(所有节点)

shell 复制代码
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,并创建库

sql 复制代码
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 制作离线源

shell 复制代码
#以下不管用 应直接修改 /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服务

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

3.3 安装Cloudera Manager

shell 复制代码
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下

执行命令

shell 复制代码
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数据库初始化

shell 复制代码
#先创建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界面

shell 复制代码
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文件,然后重启

    shell 复制代码
    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失败,报日志目录不存在

    java 复制代码
    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

    解决办法

    shell 复制代码
    $ 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目录,然后就好了

相关推荐
夜泉_ly2 小时前
MySQL -安装与初识
数据库·mysql
qq_529835353 小时前
对计算机中缓存的理解和使用Redis作为缓存
数据库·redis·缓存
月光水岸New6 小时前
Ubuntu 中建的mysql数据库使用Navicat for MySQL连接不上
数据库·mysql·ubuntu
狄加山6756 小时前
数据库基础1
数据库
我爱松子鱼6 小时前
mysql之规则优化器RBO
数据库·mysql
chengooooooo6 小时前
苍穹外卖day8 地址上传 用户下单 订单支付
java·服务器·数据库
Rverdoser7 小时前
【SQL】多表查询案例
数据库·sql
Galeoto7 小时前
how to export a table in sqlite, and import into another
数据库·sqlite
人间打气筒(Ada)8 小时前
MySQL主从架构
服务器·数据库·mysql
leegong231118 小时前
学习PostgreSQL专家认证
数据库·学习·postgresql