大数据之cdh集群安装

article/2025/11/6 14:56:16

安装前的准备工作

配置主机名、hosts、开启PermitRootLogin、设置密码 、做免密 、java环境变量、时间同步

安装过程概述(Ubuntu18.04安装)

(centos7离线安装参考https://www.cnblogs.com/swordfall/p/10816797.html)

http://ro-bucharest-repo.bigstepcloud.com/cloudera-repos/cm6/redhat/7/x86_64/cm/6.2.0/RPMS/x86_64/(免费的rpm包下载源)

先来认识几个组件

  • cloudera-manager-server
  • cloudera-manager-agent
  • cloudera-manager-daemons
  • cloudera-manager-installer

cloudera-manager-server只运行在主节点上,会启动一个站点,用户可以通过浏览器访问该站点来做很多事,比如:向集群中添加机器,下载大数据服务的parcels,向集群中的机器部署大数据服务,监听集群中每个主机的运行状态等。

cloudera-manager-agent运行在每一台主机上(包括主节点),主要用来完成cloudera-manager-server分配的各种任务,并随时向cloudera-manager-server汇报自己的状态。

cloudera-manager-daemons是一个linux包,可以理解为一个类库,cloudera-manager-server和cloudera-manager-agent的运行都依赖cloudera-manager-daemons,所以cloudera-manager-daemons也要安装在每一台主机上

可以看得出来,最关键的服务就是cloudera-manager-server了。但cloudera-manager-server对于初学者来讲并不是那么容易搞定,并且它的运行还需要使用数据库(数据库中需要建好几个库哦)。为了让cloudera-manager-server尽快运行起来,cdh提供了cloudera-manager-installer,用来快速的安装cloudera-manager-server,并让它使用一个嵌入式地数据库,省去了配置数据库的时间。官方文档中的Path A,就是使用cloudera-manager-installer来安装的cloudera-manager-server,官方也明确表示这种方式并不适合生产环境使用。

除此之外,cloudera-manager-server和cloudera-manager-agent的运行需要jdk,所以每台主机上都需要安装一个oracle-j2sdk1.8包。

安装的顺序是:

  1. 安装前的准备:设置root用户和密码,并配置hosts
  2. 配置cloudera-manager-server运行所需要的数据库
  3. 在主节点安装cloudera-manager-server,cloudera-manager-daemons和oracle-j2sdk1.8。安装cloudera-manager-server可以使用linux命令(apt-get, yum等)来安装,也可以使用cloudera-manager-installer来安装。我使用的方式是使用linux命令来安装。安装成功后,可以使用浏览器访问主节点的7180端口,会有一个可以访问的站点。
  4. 在每一台主机上安装cloudera-manager-agent,cloudera-manager-daemons和oracle-j2sdk1.8。可以直接使用linux命令来安装,也可以使用cloudera-manager-server来安装。cloudera-manager-server寄宿了一个服务,可以通过浏览器访问并安装cloudera-manager-agent,这种方式需要输入一个ssh的账号和密码,并要求这个用户不需要输入密码即可执行sudo命令。这一步成功以后,在http://master-node:7180/cmf/hardware/hosts页面上会显示出你安装成功的主机列表。如果你的主机比较少,又想快一些搞定的话,可以使用linux命令号的方式(deb包还可以复用,省去了下载的过程,后面会提到),但如果你要安装一个很庞大的集群的话,最好是把安装工作交给cloudera-manager-serve来做。
  5. 创建cdh集群。使用parcels的方式安装cdh集群,需要下载将近两个G的parcels文件并部署到每一台主机上。
  6. 选择服务并分配角色。

下面来详细说明一下每一个过程

安装前的准备工作

在安装cdh集群之前,需要先准备几台可用的linux服务器,理论上讲是四五台起,但如果你就想装着玩,只有一台也不是不行。我本次是在三台Ubuntu server 18.04上搭建一个测试环境。需要在每一台主机上做以下几个准备工作

创建root用户

ubuntu系统默认是不创建root账号的,那么使用下面的命令手动创建。

$ sudo passwd root

需要先输入sudo的密码,再输入两次root用户的密码。如果输出passwd: password updated successfully,则表示root用户创建成功了。

允许使用root用户登录

ubuntu系统默认情况下是不允许使用root账号进行远程ssh登录的,需要开启这个权限。编辑/etc/ssh/sshd_config文件,将PermitRootLogin prohibit-password这一行修改为PermitRootLogin yes,并使用下面的命令来重启一下ssh服务

$ service ssh restart

如果不重启ssh服务的话,修改的配置无法立刻生效。

修改hosts文件

将host文件中不必要的东西删除,并将几台主机的机器名都列出来。下面贴出来一个hosts文件示例。

127.0.0.1 localhost

# The following lines are desirable for IPv6 capable hosts

::1 localhost ip6-localhost ip6-loopback

ff02::1 ip6-allnodes

ff02::2 ip6-allrouters

127.0.1.1 localhost.vm localhost

127.0.1.1 ddmg-0007 ddmg-0007

192.168.0.86 ddmg-0001

192.168.0.184 ddmg-0002

192.168.0.36 ddmg-0003

192.168.0.24 ddmg-0004

192.168.0.244 ddmg-0005

192.168.0.40 ddmg-0006

192.168.0.148 ddmg-0007

192.168.0.198 ddmg-0008

192.168.0.188 ddmg-0009

192.168.0.231 ddmg-0010

注意,/etc/hostname中的主机名和主机的ip要能对上。(我选择的是789三台机器)

在主节点安装并设置mysql数据库

cloudera-manager-server是我们要安装的最重要的组件,它的运行需要数据库的支持。在安装cloudera-manager-server之前,先搞定mysql数据库。

这一部分可以参考 Install and Configure MySQL for Cloudera Software | 6.3.x | Cloudera Documentation

安装mysql server

在ubuntu下使用下面的命令来安装mysql server

$ sudo apt-get install mysql-server

安装成功以后,先停止mysql server。

$ sudo service mysql stop

配置mysql server

修改my.cnf

$ sudo vi /etc/mysql/my.cnf

加入以下内容

[mysqld] transaction-isolation = READ-COMMITTED # Disabling symbolic-links is recommended to prevent assorted security risks; # to do so, uncomment this line: # symbolic-links = 0 key_buffer_size = 32M max_allowed_packet = 32M thread_stack = 256K thread_cache_size = 64 query_cache_limit = 8M query_cache_size = 64M query_cache_type = 1 max_connections = 550 #expire_logs_days = 10 #max_binlog_size = 100M #log_bin should be on a disk with enough free space. Replace '/var/lib/mysql/mysql_binary_log' with an appropriate path for your system #and chown the specified folder to the mysql user. log_bin=/var/lib/mysql/mysql_binary_log server_id=23233 bind-address=0.0.0.0 # For MySQL version 5.1.8 or later. For older versions, reference MySQL documentation for configuration help. binlog_format = mixed read_buffer_size = 2M read_rnd_buffer_size = 16M sort_buffer_size = 8M join_buffer_size = 8M # InnoDB settings innodb_file_per_table = 1 innodb_flush_log_at_trx_commit = 2 innodb_log_buffer_size = 64M innodb_buffer_pool_size = 4G innodb_thread_concurrency = 8 innodb_flush_method = O_DIRECT innodb_log_file_size = 512M [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid sql_mode=STRICT_ALL_TABLES

使用下面的命令启动mysql server

$ sudo service mysql start

安装mysql driver

使用下面的命令安装mysql 的驱动

$ sudo apt-get install libmysql-java

root@cdh5:~# sudo /opt/cloudera/cm/schema/scm_prepare_database.sh mysql -utemp -ptemp scm scm scm

JAVA_HOME=/usr/lib/jvm/java-8-oracle-cloudera

Verifying that we can write to /etc/cloudera-scm-server

2019-08-18 00:09:45,327 [main] ERROR com.cloudera.enterprise.dbutil.DbProvisioner - Unable to find the MySQL JDBC driver. Please make sure that you have installed itas per instruction in the installation guide.

2019-08-18 00:09:45,329 [main] ERROR com.cloudera.enterprise.dbutil.DbProvisioner - Stack Trace:

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

创建数据库和用户,并设置权限

cdh中的很多大数据服务的运行都需要专门的数据库来存放数据,接下来要创建几个数据库并授权给特定的用户。 

使用下面的命令进入mysql cli

$ mysql -u root -p Enter password:

然后在mysql cli中依次执行以下脚本

create database amon DEFAULT CHARACTER SET utf8; grant all on amon.* TO 'amon'@'%' IDENTIFIED BY 'amon_password'; create database rman DEFAULT CHARACTER SET utf8; grant all on rman.* TO 'rman'@'%' IDENTIFIED BY 'rman_password'; create database hive DEFAULT CHARACTER SET utf8; grant all on hive.* TO 'hive'@'%' IDENTIFIED BY 'hive_password';

create database hue DEFAULT CHARACTER SET utf8; grant all on hue.* TO 'hue'@'%' IDENTIFIED BY 'hue_password'; create database sentry DEFAULT CHARACTER SET utf8; grant all on sentry.* TO 'sentry'@'%' IDENTIFIED BY 'sentry_password'; create database nav DEFAULT CHARACTER SET utf8; grant all on nav.* TO 'nav'@'%' IDENTIFIED BY 'nav_password'; create database navms DEFAULT CHARACTER SET utf8; grant all on navms.* TO 'navms'@'%' IDENTIFIED BY 'navms_password';

create database activity  DEFAULT CHARACTER SET utf8; grant all on navms.* TO 'activity'@'%' IDENTIFIED BY 'activity_password'; create database oozie default character set utf8; grant all privileges on oozie.* to 'oozie'@'localhost' identified by 'oozie'; grant all privileges on oozie.* to 'oozie'@'%' identified by 'oozie';

如果你想进一步了解关于mysql的grant语句,可以访问 mysql用户与权限

mysql server的安装和设置都已经搞定了,但还没有与cloudera-manager-server做关联。这一步等cloudera-manager-server安装完成以后再做。

在主节点安装cloudera-manager-server

接下来在主节点安装cloudera-manager-server。

配置cloudera数据源并更新数据源

在终端中依次执行以下命令

$ cd /etc/apt/sources.list.d/ $ wget https://archive.cloudera.com/cm6/6.2.0/ubuntu1804/apt/cloudera-manager.list $ curl -s https://archive.cloudera.com/cm6/6.2.0/ubuntu1804/apt/archive.key| sudo apt-key add - $ apt-get update

安装jdk

$ sudo apt-get install oracle-j2sdk1.8

安装cloudera-manager-daemons,cloudera-manager-server,cloudera-manager-agent

$ sudo apt-get install cloudera-manager-daemons cloudera-manager-server cloudera-manager-agent

之所以连cloudera-manager-agent也一起安装了,是因为cloudera-manager-agent组件需要安装在每一台主机上,那就一起装上吧。

设置cloudera-manager-server和mysql server的关联

cloudera-manager-server安装成功以后,/opt/cloudera/cm/schema/scm_prepare_database.sh脚本是用来与数据库做关联的,除此之外,该脚本还会创建一个供cloudera-manager-server使用的数据库。

scm_prepare_database.sh脚本的运行需要一个权限比较高的mysql用户,先进入mysql cli来创建一个权限比较大的用户

mysql> grant all on *.* to 'temp'@'%' identified by 'temp' with grant option;

然后,运行下面的脚本(可以退出mysql cli,也可以再打开一个terminal)

$ sudo /opt/cloudera/cm/schema/scm_prepare_database.sh mysql -utemp -ptemp scm scm scm

然后,再删除刚才创建的mysql用户(可能需要再次进入mysql cli)

mysql> drop user 'temp'@'%';

启动cloudera-manager-server

$ sudo service cloudera-scm-server start

执行完该命令后,需要稍等片刻,然后打开浏览器访问主节点的7180端口。如果看到了cloudera manager的登录页,那就说明cloudera-manager-server安装成功了。这时候先不用着急登录进去。

在其余每一台主机上安装cloudera-manager-agent

接下来在除主节点以外的每一台主机上安装cloudera-manager-agent。

方法一:跟安装cloudera-manager-server非常类似,使用ubuntu提供的apt-get包管理工具来安装(本生产环境按此安装方式)

在终端中依次执行以下命令

$ cd /etc/apt/sources.list.d/ $ wget https://archive.cloudera.com/cm6/6.2.0/ubuntu1804/apt/cloudera-manager.list $ curl -s https://archive.cloudera.com/cm6/6.2.0/ubuntu1804/apt/archive.key| sudo apt-key add - $ apt-get update

安装jdk

$ sudo apt-get install oracle-j2sdk1.8

安装cloudera-manager-daemons,cloudera-manager-agent

$ sudo apt-get install cloudera-manager-daemons cloudera-manager-agent

方法二,直接安装deb包。

由于在主节点已经安装过了几个包了,所以他们的deb文件可以在/var/cache/apt/archives目录下找到,你用scp将其拷贝到其余每一台主机上,直接使用dpkg来安装deb文件就行了,省去了下载的时间。需要依次执行以下几个命令:

无需配置cloudera的源,直接更新就行

$ sudo apt-get update

安装deb文件

$ sudo dpkg -i ./oracle-j2sdk1.8_1.8.0+update181-1_amd64.deb $ sudo dpkg -i ./cloudera-manager-agent_6.2.0~968826.ubuntu1804_amd64.deb $ sudo dpkg -i ./cloudera-manager-daemons_6.2.0~968826.ubuntu1804_all.deb

安装他们的依赖

$ sudo apt-get install -f

启动cloudera-manager-agent

安装完cloudera-manager-agent,就可以启动了。无论你用的是方法一还是方法二,启动之前都需要修改一下/etc/cloudera-scm-agent/config.ini文件,将其中的server_host的修改为主节点的ip或hostname。然后使用下面的命令重新启动(或启动)

$ sudo service cloudera-scm-agent restart

如果顺利的话,其余的主机已经和主节点建立了联系。

创建cdh集群

下面打开浏览器访问到clodera manager server的站点,登录进去,默认的用户名和密码都是admin。同意协议并点下一步,如果让选择cdh的lisence版本,就选免费版的(最左边)。然后你将会看到下面这个图片

上面的图是一个向导,它会引导你创建一个集群。上面的图有两个选项卡,分别是new hosts和currently managed hosts。选择new hosts选项卡的话,将会引导你在新的主机上安装cloudera-manager-agent,由于我们之前已经安装过cloudera-manager-agent了,所以我们其余的主机已经是managed-hosts了,所以选中currently managed hosts选项卡下的所有主机,并点击下一步,然后你会看见这个界面

选择more options,在Remote Parcel Repository URLs中,将{latest_supported}修改为你安装cloudera-manager-server的版本(如5.13.1)。其余的保持默认就行,一定要用parcels的方式,也是cdh推荐的方式。然后继续。就会开始下载并部署parcels。

如果慢的话,下载需要两天,有的网络可能会快一些。等cloudera manager server将parcels下载完毕并部署到所有的cdh集群后,就可以选择你需要安装的大数据服务了(hadoop,spark,kafka,hbase等),然后分配每台主机的角色。

如果你已经到了这一步,那么你离成功就很近了,下面的事情点点鼠标就能搞定了。

如有问题,请参考官方文档: 

https://www.cloudera.com/documentation/enterprise/latest/topics/installation_installation.html


http://chatgpt.dhexx.cn/article/tVFYqt2U.shtml

相关文章

CDH6.x安装教程(附带整合kerberos)

CDH从6.3.3版开始不再免费,6.3.2及以下版本可免费使用,大家如有需要可联系我索取安装包。 安装步骤总览: 1、配置服务器系统基础环境 2、配置本地仓库 3、安装数据库 4、安装CM 5、添加大数据服务 CDH基本架构简述: CDH主要…

CDH安装部署步骤

CDH下载地址: CDH5.4: http://archive.cloudera.com/cdh5/ Cloudera Manager5.4.3: http://www.cloudera.com/downloads/manager/5-4-3.html 准备工作:(linux必须是64位的) 安装CDH之前,我们需要安装一…

CDH安装配置(详细说明)

从网上看了很多的资料,填了不少的坑。总结一下。(这篇是整合网络的资料自己的坑) 关于CDH和Cloudera Manager CDH (Clouderas Distribution, including Apache Hadoop),是Hadoop众多分支中的一种,由Cloudera维护&…

CDH的安装详细步骤

目录 目录 第1章 配置环境 1.1.准备阶段 1.1.1.服务器 1.1.2.操作系统 1.2.安装配置 1.2.1.安装操作系统 1.2.2.配置操作系统 1.2.3.安装Oracle JDK (所有节点) 1.2.4.配置SSH免密 1.2.5.安装配置mysql 1.2.6. NTP时间同步 第2章 安装CDH …

CDH6.2.0详细安装步骤

CDH6.2.0版本安装指南 1. 准备集群 本文档使用的是三台虚拟机,IP和主机名自行修改,三台虚拟机需要能联网,并且能够免密登录,这些网上都能找到详细的教程,有问题也可以底部留言交流。 ip名称内存xxx.xx.x.169node16916…

俗话说:学好c语言,走遍天下都不怕

c语言的重要性 C语言产生于1972年,是计算机的一种高级语言,目前在国际上还是很流行的,因为它具有低级程序语言的功能,所以也有人说它是中级语言。 对于大多数程序员来说。C语言是学习编程的第一门语言,也可以说是入门…

如何学习 C 语言?

在线资源 C程序员帮助建立了互联网,而互联网可以帮助你学习C。互联网时刻都在发展、变化,这里所列的资源只是在撰写本书时可用的资源。当然,你可以在互联网中找到其他资源。 如果有一些与C语言相关的问题或只是想扩展你的知识,可…

关于学好C语言的心得

一.工欲善其事,必先利其器 选择visual sudio 2019 原因:1.vs2019是集成开发环境,对新手友好,不需要配置环境,上手就可以使用 2.大部分网课教程都在使用,避免产生冲突 下载网址:Visual Studio 产…

c语言学的是什么,C语言怎么学?

计算机有一种专业叫c语言,那么什么是c语言,怎么去学它?能给我们带来什么?这篇文章主要是针对此内容做一讲解! c语言是一种电脑程序设计语言。它有高级语言的特点,也有整编语言的特征。可以作为系统设计和应…

为什么要学好c语言,c语言到底多重要,你造吗

一、前言 对于理工 科学生来说,这个答案可能很简单,因为这是一门必修课。而对于程序员来说选择一门编程语言,在某种程度上,对职业生涯的发展会产生重大的影响,所以必须慎 之又慎。那么,为什么要选择一门诞…

零基础如何学好C语言?

经常有人会这样问"我没有一点基础,该如何入门C语言,该如何学好C语言 ?"看到很多初学者摸不到门路,我在这里制定了相应的学习计划,对于零基础新手一定会有很大的帮助。 很多新手认为学习C语言离不开记忆语法&#xff0c…

怎样学习C语言?

一 、怎样学习C语言 很多人对学习C语言感到无从下手,经常问我同一个问题:究竟怎样学习C语言?我是一个教师,已经开发了很多年的程序,和很多刚刚起步的人一样,学习的第一个计算机语言就是C语言。 经过这些年的…

如何学好C语言--你的学渣朋友告诉你

光说不练假把式,光练不说傻把式,又练又说真把式。 真实感受,不是我不想学,是我真的不知道我哪里不会啊和得怎么做啊?本文作者当初就是这么废掉的 推荐两个练习的网站 (一)C语言网 https://www.dotcpp.com/ 水题基…

学好C语言,你只需要这几句口诀!

学好C语言的秘诀就是1234:“一字真言,两种态度,三个框架,四项注意”。 一、一字真言 各位看官,学好C语言,其实只需一个字,那就是“编”。 (一)编。 学习C语言&#x…

推荐给初学者:如何学好C语言?

点击上方“大鱼机器人”,选择“置顶/星标公众号” 福利干货,第一时间送达! 学习C语言不是一朝一夕的事情,但也不需要花费十年时间才能精通。如何以最小的代价学习并精通C语言是本文的主题。请注意,即使是“最小的代价”…

如何学好C语言?

目录 零基础学习C语言该怎么入门?第一步 视频课程第二步 阅读配套教材第三步 完成配套练习习题第四步 如果题目不会做怎么办?第五步 如果参考答案看不懂怎么办?第六步 熟练使用C语言第七步 全面理解C语言第八步 精通C语言第九步 C语言实战 零…

新手如何学好C语言?

作为一名资深码农,在软件行业也拼搏了十多年,这里跟想学习C语言的萌新童鞋分享下我的个人学习心得!!! 在大学时代,我们大二才开始学习C语言(起步有点晚啊),第一次看到那…

完全卸载nginx的详细步骤

一个执着于技术的公众号 前言 在开局配置Nginx时有可能会配置错误,报各种错误代码。看不懂或者懒得去看这个报错时,其实最简单的方式是卸载并重装咯。今天就带大家一起学习下,如何彻底卸载nginx程序。 卸载nginx程序的详细步骤 1、停止Nginx软…

Linux中完全卸载nginx及安装的详细步骤

前言 在开局配置Nginx时有可能会配置错误,报各种错误代码。看不懂或者懒得去看这个报错时,其实最简单的方式是卸载并重装咯。今天就带大家一起学习下,如何彻底卸载nginx程序。 一、卸载NGINX 卸载nginx程序的详细步骤 1、停止Nginx软件 …