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目录,然后就好了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/602584.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

IP 地址追踪工具促进有效的 IP 管理

网络 IP 地址空间的结构、扫描和管理方式因组织的规模和网络需求而异&#xff0c;网络越大&#xff0c;需要管理的 IP 就越多&#xff0c;IP 地址层次结构就越复杂。因此&#xff0c;如果没有 IP 地址管理&#xff08;IPAM&#xff09;解决方案&#xff0c;IP 资源过度使用和地…

Java面试八股文(SpringCloud篇)

****************************************************

数据分析:小红书夏季情绪营销,已经到了“next level”

导语 5月伊始&#xff0c;夏季营销拉开帷幕。盘点品牌近两年出圈案例&#xff0c;夏季营销的立足点正在从提供功能性向渲染情绪转变。 2023年&#xff0c;蕉下《所有的太阳》&#xff0c;将防晒与风景、山水链接&#xff0c;重新定位了「防晒衣」的角色&#xff0c;从躲避炙热…

阿里云VOD视频点播流程(1)

一、开通阿里云VOD 视频点播&#xff08;ApsaraVideo VoD&#xff0c;简称VOD&#xff09;是集视频采集、编辑、上传、媒体资源管理、自动化转码处理、视频审核分析、分发加速于一体的一站式音视频点播解决方案。登录阿里云&#xff0c;在产品找到视频点播VOD &#xff0c;点击…

Davinci工程CAN模块讲解

CAN模块是用来配置CAN Driver的&#xff0c;里面有CanConfigSet是用来配置驱动内容的&#xff0c;CanGeneral配置参数。涉及四个文件Can_Lcfg.c/Can_Lcfg.h/Can_Cfg.c/Can_Cfg.h CanConfigSet CanControllers CAN控制器&#xff0c;我们这里的CAN控制器只有一个&#xff0c;名…

ETCD 简介

ETCD 简介 1-etcd介绍 etcd 是 CoreOS 团队于 2013 年 6 月发起的开源项目&#xff0c;它的目标是构建一个高可用的分布式键值(key-value)数据库。具有以下特点&#xff1a; 简单&#xff1a;安装配置简单&#xff0c;而且提供了 HTTP API 进行交互&#xff0c;使用也很简单键…

Duplicate File Finder Pro for Mac激活版:重复文件清理软件

在繁杂的文件管理中&#xff0c;你是否曾为重复文件而烦恼&#xff1f;Duplicate File Finder Pro for Mac&#xff0c;正是你不可或缺的得力助手。这款专业级工具&#xff0c;能够迅速扫描并定位Mac系统中的重复文件&#xff0c;让你的存储空间恢复清爽。 通过强大的算法支持&…

AOF持久化是怎么实现的?

AOF持久化是怎么实现的&#xff1f; AOF 日志三种写回策略AOF 重写机制AOF 后台重写总结参考资料 AOF 日志 试想一下&#xff0c;如果 Redis 每执行一条写操作命令&#xff0c;就把该命令以追加的方式写入到一个文件里&#xff0c;然后重启 Redis 的时候&#xff0c;先去读取这…

如何利用AI提高内容生产效率

目录 一、自动化内容生成 二、内容分发与推广 三、内容分析与优化 图片来源网络&#xff0c;侵权联系可删 一、自动化内容生成 随着AI技术的飞速发展&#xff0c;自动化内容生成已经成为提高内容生产效率的重要手段。AI可以通过自然语言处理&#xff08;NLP&#xff09;、机…

【经验总结】Vue2中的全局变量(store

需求场景 需要在vue中存储一个可变的&#xff0c;可读写的全局变量在不同的js、页面中均可调用和读写 技术&#xff1a;使用vue的store 用法总结 一、定义变量 1、找到vue的/src/store路径&#xff0c;在modules文件夹下创建文件&#xff08;这里便于测试创建demo.js&…

2024年融资融券利率最新变化,又降低了?

最近有很多朋友在问我问融资融券的业务&#xff0c;都是比较关心这个利率的问题。确实&#xff0c;做融资融券最重要的利率&#xff0c;利率低会节省很大一笔资金&#xff0c;今天在这边给大家对接一个上市券商&#xff0c;可以给到大家万一的交易佣金和5%的融资利率&#xff0…

Redis快速学习

Redis快速学习 一、 Redis快速入门1.1 初始Redis1.1.1 Redis的存储方式1.1.2 NoSQL 与 sql 之间的区别 1.2 Redis概述1.2.1 Redis是什么1.2.2 Redis有什么用1.2.3 Redis的特性 1.3 Redis安装测试1.3.1 Redis Linux安装 1.4 Redis测试工具1.5 Redis的基本知识 二、Redis的五大数…

Java 8特性(一) 之 手写Stream流filter、map和forEach方法

Java 8特性&#xff08;一&#xff09; 之 手写Stream流filter、map和forEach方法 今天看了一下Java 8的Stream流&#xff0c;学习了一下函数式编程&#xff0c;这才感受函数式编程如此爽&#xff0c;之前就使用过ES8.7.1的函数式编程&#xff0c;当时就在想啥时候咱也能写出这…

[数据概念|方案实操][最新]数据资产入表4月速递

“ 在各地数据资产变现“热辣滚烫”” 国家数据局全国数据工作会议前后&#xff0c;数据资源“入表”的尝试在各地持续热火朝天地展开&#xff0c;多地实现数据资产入表和利用数据资产进行融资实现“零的突破”。 我们今天就把4月前后的案例做一个小结&#xff0c;之前的案例大…

零资源跑大模型:Hugging Face API + LiteLLM + Flask

前言 HuggingFace 是自然语言处理领域的开源软件库和平台&#xff0c;其收纳了众多最前沿的模型和数据集&#xff0c;并提供了 Serverless Inference API&#xff0c;用户可以轻松调用这些模型&#xff0c;甚至用于运行自己的私人模型。本教程将指导用户如何利用 Hugging Face…

国内免费AI聊天机器人(ChatGPT)推荐(下)含ChatGPT4.0版本

作者主页&#xff1a;点击&#xff01; 国内免费AI推荐专栏&#xff1a;点击&#xff01; 创作时间&#xff1a;2024年5月7日10点39分 现在&#xff0c;国内各种免费AI聊天机器人(ChatGPT)层出不穷&#xff0c;功能强大、玩法多样&#xff0c;可以满足你的不同需求。 今天&a…

深入解析:C语言中的八大经典排序算法全揭秘

目录 排序的概念及运用 排序概念 排序运用 常见排序算法 八大排序详解 直接插入排序 基本思想 代码实现 希尔排序 基本思想 代码实现 选择排序 基本思想 代码实现 堆排序 堆的向下调整算法&#xff08;前提&#xff09; 基本思想 代码实现 冒泡排序 基本思…

springboot+vue+mybatis基于协同过滤算法的新闻推荐系统+PPT+论文+讲解+售后

本系统为用户而设计制作新闻推荐系统&#xff0c;旨在实现新闻推荐智能化、现代化管理。本新闻推荐管理自动化系统的开发和研制的最终目的是将新闻推荐管理的运作模式从手工记录数据转变为网络信息查询管理&#xff0c;从而为现代管理人员的使用提供更多的便利和条件。使新闻推…

【SpringBoot】使用MockMvc+Mockito进行单元测试像德芙一样纵享丝滑!

文章目录 前言&#xff1a;Java常见的单元测试框架一.Junit5基础二.SpringBoot项目单元测试1.添加依赖2.SpringBoot单元测试标准结构3.SpringBoot单元测试常用注解 三.单元测试中如何注入依赖对象1.真实注入&#xff08;AutoWired、 Resource&#xff09;2.Mock注入2.1.前言2.2…

【翻译】Processing系列|(四)用 Android Studio 从 0 到 1 进行 Processing 安卓开发

原文链接&#xff1a;Processing for Android Developing with Android Studio 朋友跟我说官方教程里也写了该怎么用 Android Studio 开发&#xff0c;并且亲测可行。这种方式确实能开发出结构更加清晰、额外组件更加少的程序&#xff0c;比上一篇文章中直接克隆 Processing-An…