大数据Hadoop之——Cloudera Hadoop(CM 6.3.1+CDH 6.3.2环境部署)

Posted 大数据老司机

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据Hadoop之——Cloudera Hadoop(CM 6.3.1+CDH 6.3.2环境部署)相关的知识,希望对你有一定的参考价值。

@[TOC]

一、概述


1)目前比较流行Hadoop版本

  • Apache Hadoop
  • Cloudera Hadoop(CDH)

2)CDH特点

  • 灵活性——存储任何类型的数据并使用各种不同的计算框架对其进行操作,包括批处理,交互式SQL,自由文本搜索,机器学习和统计计算。
  • 集成——在完整的Hadoop平台上快速启动并运行,该平台可与各种硬件和软件解决方案配合使用。
  • 安全性——处理和控制敏感数据。
  • 可扩展性——支持广泛的应用程序,并扩展它们以适应您的需求。
  • 高可用性——可以执行关键型业务任务。
  • 兼容性——利用现有的IT基础架构。

二、CDH组件介绍

1)Hive

  • Hive数据仓库软件支持对分布式存储中的大型数据集进行读写和管理。HiveQL (Hive query language)是一种与SQL非常相似的查询语言,通过MapReduce或Apache Spark将查询转换成一系列的任务,在Hadoop集群上执行。关于Hive,也可以参考我之前的文章:大数据Hadoop之——数据仓库Hive

  • 用户可以使用Hive运行批处理工作负载,同时也可以使用Apache Impala或Apache spark等工具分析交互SQL或机器学习工作负载的相同数据——所有这些都在一个平台中

作为CDH的一部分,Hive还依赖于:

  • YARN提供的统一资源管理;
  • Cloudera Manager提供的简化部署和管理;
  • 共享安全和治理,以满足Apache Sentry和Cloudera Navigator提供的合规需求。

2)Impala

  • Impala是一款用于大数据的分布式数据库查询引擎。Impala并没有取代基于MapReduce的批处理框架,比如Hive。Hive和其他构建在MapReduce上的框架最适合长时间运行的批处理作业,比如涉及Extract、Transform和Load (ETL)类型作业的批处理。
  • Impala可以直接对存储在HDFS、HBase或Amazon Simple Storage Service (S3)中的Apache Hadoop数据提供快速、交互式的SQL查询。除了使用相同的统一存储平台外,Impala还使用了与Apache Hive相同的元数据、SQL语法(Hive SQL)、ODBC驱动、用户界面(Hue中Impala查询UI)。这为实时或面向批处理的查询提供了熟悉的统一平台。

1、Impala 优势

  • 在Apache Hadoop中查询大量数据(“大数据”)的能力
  • 集群环境中的分布式查询,以便方便地扩展和利用具有成本效益的商品硬件。
  • 能够在不同的组件之间共享数据文件,没有复制或导出/导入步骤;例如,用Pig编写,用Hive转换,用Impala查询。Impala可以读写Hive表,通过使用Impala对Hive生成的数据进行分析,实现简单的数据交换。
  • 大数据处理和分析的单一系统,因此客户可以避免昂贵的建模和ETL分析。

    2、工作原理

Impala解决方案由以下组件组成:

  • 客户端——实体包括Hue、ODBC客户端、JDBC客户端和Impala Shell都可以与Impala进行交互。这些接口通常用于发出查询或完成管理任务,比如连接到Impala。
  • Hive Metastore ——存储关于Impala可用数据的信息。例如,metastore让Impala知道哪些数据库可用,以及这些数据库的结构是什么。当您通过Impala SQL语句创建、删除和修改模式对象、将数据加载到表中等等时,相关的元数据更改会通过Impala 1.2中引入的专用目录服务自动广播到所有Impala节点。
  • Impala——这个进程运行在datanode上,负责协调和执行查询。每个Impala实例都可以接收、计划和协调来自Impala客户端的查询。查询分布在Impala节点之间,这些节点充当工人,执行并行的查询片段。
  • HBase和HDFS低层数据存储。
  • 用户应用程序通过ODBC或JDBC向Impala发送SQL查询,这些ODBC或JDBC提供了标准化的查询接口。用户应用程序可以连接到集群中的任何impalad。这个impalad成为查询的协调器。
  • Impala解析查询并分析它,以确定集群中impalad实例需要执行哪些任务。执行计划是为了达到最佳效率。
  • HDFS、HBase等服务通过本地impalad实例访问,提供数据。
  • 每个impalad将数据返回给协调impalad,协调impalad将这些结果发送给客户端。

    4、Impala的特性

  • Hive查询语言(HiveQL)中最常见的SQL-92特性,包括SELECT、join和aggregate函数。
  • HDFS、HBase、Amazon Simple Storage System (S3)存储,包括:
    1. HDFS文件格式:delimited text files、Parquet、Avro、SequenceFile、RCFile。
    2. 压缩编解码器:Snappy, GZIP, Deflate, BZIP。
  • 常用的数据存取接口包括:
    1. JDBC driver
    2. ODBC driver

3)Kudu

2、Kudu-Impala集成

  • CREATE/ALTER/DROP TABLE—Impala支持使用Kudu作为持久化层创建、修改和删除表。这些表遵循与Impala中其他表相同的内部/外部方法,允许灵活地接收和查询数据。
  • INSERT—使用与HDFS或HBase持久化表相同的机制,Impala可以将数据插入到Kudu表中。
  • UPDATE/DELETE—Impala支持UPDATE和DELETE SQL命令,可以逐行或批量修改Kudu表中的现有数据。SQL命令的语法被设计成尽可能与现有解决方案兼容。除了简单的DELETE或UPDATE命令外,您还可以在查询的FROM子句中指定复杂的连接,使用与常规SELECT语句相同的语法。
  • 灵活的分区——类似于Hive中对表的分区,Kudu允许你通过哈希或范围动态地将表预分割成预定义数量的平板电脑,以便在集群中均匀地分配写和查询。您可以按任意数量的主键列、任意数量的散列、分割行的列表或这些列的组合进行分区。分区方案是必需的。
  • 并行扫描——为了在现代硬件上实现最高的性能,Impala使用的Kudu客户端可以在多个平板电脑上并行扫描。
  • 高效查询——在可能的情况下,Impala将谓词计算下推到Kudu,以便谓词的计算尽可能接近数据。在许多工作负载中,查询性能与Parquet相当。

5)Sentry

三、Cloudera Manager

1)Terminology(术语)

  • deployment
  • dynamic resource pool(动态资源池)

  • cluster
    1. 一组包含HDFS文件系统的计算机或机架,并在该数据上运行MapReduce和其他进程。伪分布式集群是运行在一台机器上的CDH安装,对于演示和个人研究非常有用。
    2. 在Cloudera Manager中,包含一组主机的逻辑实体、安装在主机上的单一版本的CDH,以及运行在主机上的服务和角色实例。一个主机只能属于一个集群。Cloudera Manager可以管理多个CDH集群,但每个集群只能与单个Cloudera Manager服务器或Cloudera Manager HA对关联。
  • host

  • rack

  • service

    1. Linux命令,运行/etc/init目录下System V init脚本在尽可能可预测的环境中,删除大多数环境变量,并将当前工作目录设置为/。
    2. clouddera Manager中的一类托管功能,可以是分布式的,也可以不是,在集群中运行。有时称为服务类型。例如:MapReduce、HDFS、YARN、Spark、Accumulo。在传统环境中,多个服务运行在一台主机上;在分布式系统中,一个服务运行在许多主机上。
  • service instance

  • role

  • role instance

  • role group

  • host template

  • gateway

    1. 一种角色类型,通常为客户端提供对特定集群服务的访问。例如,HDFS、Hive、Kafka、MapReduce、Solr、Spark都有网关角色,为客户端提供对各自服务的访问。网关角色的名称中并不总是包含“网关”,也不是仅供客户端访问。例如,Hue Kerberos Ticket Renewer是一个网关角色,它从Kerberos代理票据。
    2. 支持一个或多个网关角色的节点有时被称为网关节点或边缘节点,“边缘”的概念在网络或云环境中很常见。对于Cloudera集群,当从Cloudera Manager管理控制台的Actions菜单中选择Deploy client configuration时,集群中的网关节点接收适当的客户端配置文件。
  • parcel

  • static service pool(静态服务池)

2)Architecture(架构)

Cloudera Manager服务器与其他几个组件一起工作:

  • Agent——安装在每台主机上。代理负责启动和停止进程、解包配置、触发安装和监视主机。
  • Management Service——由一组角色组成的服务,这些角色执行各种监视、警报和报告功能。
  • Database ——存储配置和监控信息。通常,多个逻辑数据库在一个或多个数据库服务器上运行。例如,Cloudera Manager Server和监控角色使用不同的逻辑数据库。
  • Cloudera Repository——由clouddera Manager发布的软件存储库。
  • Clients——是与服务器交互的接口:
    1. Admin Console——基于web的UI,管理员可以使用它管理集群和Cloudera Manager。
    2. API ——开发人员用来创建自定义Cloudera Manager应用程序的API。

      3)心跳检测

  • 心跳是Cloudera Manager中的主要通信机制。默认情况下,代理每15秒向Cloudera Manager服务器发送一次心跳。然而,为了减少用户延迟,当状态发生变化时,频率会增加。
  • 在心跳交换期间,Agent通知Cloudera Manager Server它的活动。然后,Cloudera Manager Server响应Agent应该执行的操作。代理和Cloudera Manager服务器最终都进行了一些协调。例如,如果启动一个服务,Agent会尝试启动相关的进程;如果进程启动失败,则Cloudera Manager Server将启动命令标记为失败。

4)State Management(状态管理)

5)Configuration Management(配置管理)

Cloudera Manager定义了几个级别的配置:

  • 服务级别可以定义应用于整个服务实例的配置,例如HDFS服务的默认复制因子(dfs.replication)。
  • 角色组级别可以定义应用于成员角色的配置,例如datanode的处理程序计数(dfs.datanode.handler.count)。对于不同组的datanode,可以进行不同的设置。例如,运行在性能更好的硬件上的datanode可能有更多的处理器。
  • 角色实例级别可以覆盖它从其角色组继承的配置。这应该谨慎使用,因为它很容易导致角色组内的配置分歧。一个示例用法是在特定角色实例中临时启用调试日志记录以排除问题。
  • 主机具有监控、软件管理、资源管理等相关配置。
  • Cloudera Manager本身拥有与其管理操作相关的配置。

1、Host Templates(主机模板)

在典型的环境中,主机集具有相同的硬件和运行在其上的相同的服务集。主机模板在集群中定义了一组角色组(每种类型最多一个),主要有两个好处:

  • 将新主机添加到集群中很容易——多个主机可以在单个操作中创建、配置和启动不同服务的角色。
  • 轻松更改——组主机上不同服务的角色配置,这有助于快速切换整个集群的配置,以适应不同的工作负载或用户。

2、Server and Client Configuration(服务器和客户端配置)

  • 管理员有时会感到惊讶,修改/etc/hadoop/conf,然后重启HDFS没有效果。这是因为由Cloudera Manager启动的服务实例不会从默认位置读取配置。以HDFS为例,当不被Cloudera Manager管理时,每台主机通常会有一个HDFS配置,位于/etc/hadoop/conf/hdfs-site.xml。在同一主机上运行的服务器端守护进程和客户端都将使用相同的配置。
  • Cloudera Manager区分了服务器配置和客户端配置。对于HDFS,“/etc/hadoop/conf/hdfs-site.xml”文件中只包含与HDFS客户端相关的配置。也就是说,默认情况下,如果您运行一个需要与Hadoop通信的程序,它将从该目录获取NameNode和JobTracker的地址,以及其他重要配置。/etc/hbase/conf和/etc/hive/conf采用了类似的方法。
  • 相反,HDFS角色实例(例如NameNode和DataNode)从私有的每进程目录(/var/run/cloudera-scm-agent/process/unique-process-name)中获取配置。为每个进程提供自己的私有执行和配置环境,允许Cloudera Manager独立控制每个进程。例如,879-hdfs-NAMENODE进程目录的内容如下:
$ tree -a /var/run/cloudera-scm-Agent/process/879-hdfs-NAMENODE/
  /var/run/cloudera-scm-Agent/process/879-hdfs-NAMENODE/
  ├── cloudera_manager_Agent_fencer.py
  ├── cloudera_manager_Agent_fencer_secret_key.txt
  ├── cloudera-monitor.properties
  ├── core-site.xml
  ├── dfs_hosts_allow.txt
  ├── dfs_hosts_exclude.txt
  ├── event-filter-rules.json
  ├── hadoop-metrics2.properties
  ├── hdfs.keytab
  ├── hdfs-site.xml
  ├── log4j.properties
  ├── logs
  │   ├── stderr.log
  │   └── stdout.log
  ├── topology.map
  └── topology.py

区分服务器和客户端配置提供了几个优点:

  • 服务器端配置中的敏感信息,如Hive Metastore RDBMS的密码,不会泄露给客户端。
  • 依赖于另一个服务的服务可以使用自定义配置进行部署。
  • 客户机配置文件要小得多,可读性也更好。这也避免了将非管理员Hadoop用户与不相关的服务器端属性混淆。

3、部署客户端配置和网关

  • 客户端配置是包含服务设置的相关配置文件的zip文件。每个zip文件包含服务所需的一组配置文件。
  • Cloudera Manager可以在集群中部署客户端配置;每个适用的服务都有一个Deploy Client Configuration操作。此操作并不一定要将客户端配置部署到整个集群;它只将客户端配置部署到该服务已分配给的所有主机。
  • 要将客户端配置部署到没有为其分配角色的主机,您需要使用网关。网关是一个标记,用来表示服务应该可以从特定的主机访问。与所有其他角色不同,它没有关联的进程。
  • 网关也可以为某些主机定制客户端配置。网关可以放置在角色组中,这些组可以进行不同的配置。然而,与角色实例不同的是,无法覆盖网关实例的配置。
  • 在我们前面讨论过的集群中,没有Hive角色实例的三个主机(tcdn501-[2-5])拥有Hive网关:

6)部署客户端配置和网关

  • 在一个非cloudera Manager管理的集群中,你很可能使用init脚本启动一个角色实例进程,例如service hadoop-hdfs-datanode start。Cloudera Manager不为它管理的守护进程使用init脚本;在由Cloudera Manager管理的集群中,使用init脚本启动和停止服务是无效的。

  • 在由Cloudera Manager管理的集群中,只能通过Cloudera Manager启动或停止角色实例进程。Cloudera Manager使用一个名为supervisor的开源进程管理工具,该工具启动进程,负责重定向日志文件、通知进程失败、将调用进程的有效用户ID设置为正确的用户,等等。Cloudera Manager支持自动重启崩溃的进程。如果一个角色实例的进程在启动后多次崩溃,它还会用一个糟糕的健康状况标志来标记它。
  • 停止Cloudera Manager服务器和Cloudera Manager代理不会导致服务停止;任何正在运行的角色实例都将继续运行。
  • Agent以init方式启动。d在启动。然后,它又与Cloudera Manager Server联系,确定应该运行哪些进程。Agent作为Cloudera Manager主机监控的一部分被监控。如果Agent停止心跳,主机将被标记为健康状态不良。
  • Agent的主要职责之一是启动和停止流程。当Agent从Server heartbeat中检测到一个新进程时,Agent会在/var/run/cloudera-scm-agent中为它创建一个目录,并解包配置。然后它联系监督者,监督者开始这个过程。
  • 这些行动强化了一个重要的观点:Cloudera Manager流程从不单独运行。换句话说,进程不仅仅是exec()的参数,它还包括配置文件、需要创建的目录和其他信息。

7)软件分发管理

  • 包是一种二进制发布格式,包含编译后的代码和元信息,比如包描述、版本和依赖关系。包管理系统评估这个元信息,以允许包搜索、升级到新版本,并确保包的所有依赖项都得到满足。Cloudera Manager为每个支持的操作系统使用本地系统包管理器。

包是一种二进制分发格式,包含程序文件,以及Cloudera Manager使用的额外元数据。包裹和包裹之间的重要区别是:

  • 包裹是自包含的,并且安装在一个版本控制的目录中,这意味着一个给定包裹的多个版本可以同时安装。然后,您可以将这些已安装版本中的一个指定为活动版本。对于包,一次只能安装一个包,因此安装的包和活动的包之间没有区别。
  • 滚动升级需要包裹。
  • 您可以在文件系统的任何位置安装包。它们默认安装在/opt/cloudera/ packages目录下。相反,包安装在/usr/lib目录下。

8)主机管理

  • Cloudera Manager提供了几个特性来管理Hadoop集群中的主机。第一次运行Cloudera Manager Admin Console时,您可以搜索要添加到集群中的主机,一旦主机被选中,您就可以将CDH角色的分配映射到主机。Cloudera Manager自动部署集群中所有需要作为托管主机参与的软件:JDK、Cloudera Manager Agent、CDH、Impala、Solr等。
  • 部署并运行服务之后,管理控制台中的Hosts区域将显示集群中受管理主机的总体状态。包括主机上运行的CDH版本、主机所属集群、主机上运行的角色数量。Cloudera Manager提供参与主机的生命周期管理、主机的添加、删除等操作。Cloudera Management Service Host Monitor角色执行运行状况测试并收集主机指标,以便监控主机的运行状况和性能。

9)资源管理

资源管理通过定义不同服务对集群资源的影响,帮助确保可预测的行为。使用资源管理:

  • 保证在合理的时间内完成关键的工作负荷。
  • 支持基于组间资源公平分配的用户组间合理的集群调度。
  • 防止用户剥夺其他用户对集群的访问权限。

以下图为例,HBase、HDFS、Impala、YARN服务的静态池分别分配20%、30%、20%、30%的集群资源为例。

10)用户管理

11)安全管理

12)Cloudera管理服务

Cloudera管理服务以一组角色的形式实现各种管理特性:

  • Activity Monitor——收集MapReduce服务运行的活动的信息。默认不添加此角色。
  • Host Monitor—收集主机的运行状况和度量信息。
  • Service Monitor——从YARN和Impala服务收集有关服务的运行状况和度量信息以及活动信息。
  • Event Server——聚集相关的Hadoop事件,并使它们可用来进行警告和搜索。
  • Alert Publisher——为某些类型的事件生成和发送警报
  • Reports Manager——生成报表,提供用户、用户组、目录的磁盘利用率、用户和YARN池的处理活动、HBase表和命名空间的历史视图。Cloudera Express中未添加此角色。

四、CDH环境部署

1)前期准备

1、机器信息

OS IP hostname 角色
centos7 192.168.182.161 hadoop-cdhmaster-168-182-161 CM server、CM agent、CM deamon、CDH
centos7 192.168.182.162 hadoop-cdhslave01-168-182-162 CM agent、CM deamon、CDH
centos7 192.168.182.163 hadoop-cdhslave02-168-182-163 CM agent、CM deamon、CDH

2、修改主机名

$ hostnamectl set-hostname hadoop-cdhmaster-168-182-161
$ hostnamectl set-hostname hadoop-cdhslave01-168-182-162
$ hostnamectl set-hostname hadoop-cdhslave02-168-182-163

3、配置hosts

$ cat >> /etc/hosts << EOF
192.168.182.161  hadoop-cdhmaster-168-182-161
192.168.182.162  hadoop-cdhslave01-168-182-162
192.168.182.163  hadoop-cdhslave02-168-182-163
EOF

4、关掉防火墙

$ systemctl stop firewalld
$ systemctl disable firewalld

5、禁用SELINUX

$ sed -i "s/.*SELINUX=.\\*/SELINUX=disabled/g" /etc/selinux/config

6、时间同步

$ yum -y install chrony
$ systemctl start chronyd
$ chronyc sources -v
# 同步硬件时钟到系统时钟
$ hwclock --systohc
# 检测时间
$ timedatectl

7、安装python

$ yum install python275
$ ln -s /usr/bin/python2 /usr/bin/python
$ python --version

8、端口

Cloudera Manager和Cloudera Navigator使用的端口

点对点包裹分发中使用的端口

更多使用的端口信息,可以参考官方文档:https://docs.cloudera.com/documentation/enterprise/6/6.3/topics/cm_ig_ports_cm.html

9、配置免密登录

$ ssh-keygen
$ ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop-cdhmaster-168-182-161
$ ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop-cdhslave01-168-182-162
$ ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop-cdhslave02-168-182-163

9、安装JDK

官方文档

$ yum install java-1.8.0-openjdk-devel -y

10、交换分区和大页设置

$ sysctl -w vm.swappiness=0
$ echo "vm.swappiness=0" >> /etc/sysctl.conf
$ echo never > /sys/kernel/mm/transparent_hugepage/defrag
$ echo never >/sys/kernel/mm/transparent_hugepage/enabled
$ echo "echo never > /sys/kernel/mm/transparent_hugepage/defrag" >> /etc/rc.d/rc.local
$ echo "echo never > /sys/kernel/mm/transparent_hughugepage/enabled" >> /etc/rc.d/rc.local

2)安装CM前期准备

1、组件版本

2、安装mysql(cdhmaster)

$ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
$ rpm -ivh mysql-community-release-el7-5.noarch.rpm
$ yum update -y
# 安装
$ yum install mysql-server -y

配置/etc/my.cnf

$ cat >> /etc/my.cnf << EOF
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
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 = 16M
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

#In later versions of MySQL, if you enable the binary log and do not set
#a server_id, MySQL will not start. The server_id must be unique within
#the replicating group.
server_id=1

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
EOF

启动服务

# 启动
$ systemctl start mysqld
$ systemctl status mysqld
# 开机自启动
$ systemctl enable mysqld

# 登录,默认没有密码
$ mysql

设置root密码

$ /usr/bin/mysql_secure_installation

连接验证

3、为 Cloudera 各软件创建数据库

$ mysql -uroot -p -h
密码:123456

### scm
CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON scm.* TO scm@% IDENTIFIED BY 123456;

### amon
CREATE DATABASE amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON amon.* TO amon@% IDENTIFIED BY 123456;

### rman
CREATE DATABASE rman DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON rman.* TO rman@% IDENTIFIED BY 123456;

### hue
CREATE DATABASE hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON hue.* TO hue@% IDENTIFIED BY 123456;

### hive
CREATE DATABASE hive DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON hive.* TO hive@% IDENTIFIED BY 123456;

### sentry
CREATE DATABASE sentry DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON sentry.* TO sentry@% IDENTIFIED BY 123456;

### nav
CREATE DATABASE nav DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON nav.* TO nav@% IDENTIFIED BY 123456;

### navms
CREATE DATABASE navms DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON navms.* TO navms@% IDENTIFIED BY 123456;

### oozie
CREATE DATABASE oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON oozie.* TO oozie@% IDENTIFIED BY 123456;

# 最后刷新一下
flush privileges;

### 检查
show databases;

4、安装 MySQL JDBC(所有节点)

用于各节点连接数据库,JDBC的版本跟mysql版本对应。

$ mkdir /opt/software/CDH /opt/server/CDH -p
$ cd /opt/software/CDH
$ wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.46.tar.gz
$ tar -xf mysql-connector-java-5.1.46.tar.gz
# 必须放在/usr/share/java/这个目录下,没有就创建,而且名字得改成mysql-connector-java.jar 
$ mkdir -p /usr/share/java/
$ cp mysql-connector-java-5.1.46/mysql-connector-java-5.1.46.jar /usr/share/java/mysql-connector-java.jar

3)安装 CM Server 和 CM Agent

把下载好的压缩包解压,并用python 启动一个本地服务作为本地仓库

$ cd /opt/software/CDH/
$ unzip CDH6.3.2.zip
$ cd CDH6.3.2
$ tar -xf  cm6.3.1-redhat7.tar.gz
$ python -m SimpleHTTPServer 8080


配置本地yum源(所有节点)

$ cat > /etc/yum.repos.d/cloudera-manager.repo << EOF
[cloudera-manager]
name=Cloudera-Manager
baseurl=http://hadoop-cdhmaster-168-182-161:8080/cm6.3.1/
gpgcheck=0
enabled=1
EOF

# 清除缓存并生成新的缓存
$ yum clean all
$ yum makecache

2、安装CM Server 和Agent(cdhmaster)

$ yum install -y cloudera-manager-agent cloudera-manager-daemons cloudera-manager-server

3、安装CM Agent(其它节点)

$ yum install -y cloudera-manager-agent cloudera-manager-daemons

4、CM 数据库初始化

# /opt/cloudera/cm/schema/scm_prepare_database.sh <databaseType> <databaseName> <databaseUser> <password>
$ /opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm root 123456

会去修改CM server的db配置文件/etc/cloudera-scm-server/db.properties

4、修改CM agent配置

# 修改server_host,跟CM心态检测,根据自己的主机名来修改
$ sed -i /server_host=/cserver_host=hadoop-cdhmaster-168-182-161 /etc/cloudera-scm-agent/config.ini

5、启动CM服务(CM节点)

$ systemctl start cloudera-scm-server
$ systemctl status cloudera-scm-server
$ jps
# 会启动端口7180的服务,服务启动有点慢,需要等待一段时间
netstat -tnlp|grep 7180
# 日志目录:/var/log/cloudera-scm-server/

6、启动agent(所有节点)

$ systemctl start cloudera-scm-agent
$ systemctl status cloudera-scm-agent
# 日志目录:/var/log/cloudera-scm-agent/

4)通过CM web安装CDH 6.3.2

web UI访问(账号/密码):http://hadoop-cdhmaster-168-182-161:7180/


1、用户协议

2、版本选择

因为CDH本身就是商业版,所以需要高级功能还是需要收费的,这里选择免费版

下面这个页面需要点时间,耐心等待一下

3、修改集群名称

4、选择集群机器

5、创建本地仓库目录和本地安装目录

$ cd /opt/server/CDH
$ mkdir cloudera/parcels -p
$ mkdir cloudera/parcel-repo -p

把上面的离线包里的这些文件提前放在/opt/server/CDH/cloudera/parcel-repo目录下

$ cp /opt/software/CDH/CDH6.3.2/CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel* /opt/server/CDH/cloudera/parcel-repo/
$ cp /opt/software/CDH/CDH6.3.2/manifest.json /opt/server/CDH/cloudera/parcel-repo/
$ ll /opt/server/CDH/cloudera/parcel-repo/
# 目录需要写入权限
$ chmod 777 /opt/server/CDH/cloudera/parcel-repo

6、配置本地仓库和本地安装目录


这里也加一个本地仓库地址,怎么启动本地仓库服务,上面有讲,这里就不再重复了。哪个快会自动选择哪个。也可以不加,看自己选择


6、自动下载分配解压激活


7、检查

没问题的话,就直接下一步了。

到这里安装包已经完成下载、分配、解压、激活的操作了,接下来才是正真安装CDH组件相关的服务

8、安装CDH组件

选择组件组合,也可以自定义,这里我选择自定义

9、自定义角色分配

有些是自动分配的,有些没分配的就得手动配置机器,hive 选择的机器需要选择mysql的机器,要不然检测到机器上没有mysql,就会有问题。

10、数据库设置

11、审核更改

默认就行,直接下一步

12、开始安装

组件安装并自动启动,时间有点久,等待即可



以上是关于大数据Hadoop之——Cloudera Hadoop(CM 6.3.1+CDH 6.3.2环境部署)的主要内容,如果未能解决你的问题,请参考以下文章

大数据Hadoop之——Cloudera Hadoop(CM 6.3.1+CDH 6.3.2环境部署)

大数据技术之Hadoop

使用Cloudera部署,管理Hadoop集群

大数据之shell脚本配置伪分布式Hadoop

上海Cloudera Hadoop大数据培训:CCAHCCP:DE

Cloudera hadoop 大数据平台实战指南