搭建企业级大数据平台Cloudera Manager + CDH 5.8 + CentOS7

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 本文讲述企业级大数据平台Cloudera Manager的安装和使用,Cloudera Manager具有集群管理,监控,报警,集成Hadoop等强大功能,是大部分企业所使用的集群管理平台。

【本文转载自:www.bigdata-star.com】

前言

在搭建CM之前。。本人也是纯人工的把hadoop生态圈常用组件自己集成了一遍。。途中遇到各种坑,比如版本不匹配导致的一系列问题。。但自己尝试一下是好的!因为手把手的纯命令行的搭建可以让你更了解它们!但是到了企业中是不可能这样滴,因为有诸多的劣势,试问如果一个集群有1000个节点,你怎么去人工搭?如果要全部升级,你又怎么人工处理?还有前面说的,版本不匹配问题各种坑。所以还是要用图形化的,管理性强的工具,比如CM。

Cloudera Manager功能

CM功能强大,主要表现在几个方面:

  • 集群管理:比如添加节点,删除节点
  • 配置管理:之前我们手工配置的那些配置文件比如core-site.xml,hdfs-site.xml,zoo.cfg等等,我们都可以通过图形化界面来配置。
  • 日志管理:之前我们发现bug了,跑不起来了,得手工去看日志,比如,现在通通可以在CM上查看了!
  • 监控:实时监控集群的各种运行状态,cpu,磁盘等的使用率
  • 诊断:对集群出现的问题进行诊断,对出现的问题给出建议解决方案。
  • 整合Hadoop生态圈中的组件:直接一键安装,再也不用担心版本匹配问题了!

image
image

CM架构

image
Agent:安装在每台主机上。该代理负责启动和停止的过程,拆包配置,触发装置和监控主机。
Server:CM的主节点,服务安装配置启动、角色停止启动、管理Agent。
Management Service:预警,监控,警报和报告功能。
Database:存储配置和监视信息。
Cloudera Repository:软件由Cloudera 管理分布存储库。
Clients:是用于与服务器进行交互的接口:
Admin Console - 基于Web的用户界面与管理员管理集群和Cloudera管理。
API - 与开发人员创建自定义的Cloudera Manager应用程序的API。

搭建CM平台步骤

搭建CM平台大致可以分为六部曲:

  • 服务器配置:安装操作系统、配置网络、关闭防火墙、同步服务器时钟等。
  • 资源准备:如JDK和Mysql的安装配置,以及下载好CM所需要的资源包。
  • 安装 Cloudera 管理器。
  • 安装 CDH 集群。
  • 安装所需要的Hadoop服务
  • 集群完整性检查,包括 HDFS 、 MapReduce等是否可以正常运行

服务器配置

网络配置

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eno16777728

TYPE=Ethernet
NAME=eno16777728
DEVICE=eno16777728
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.109.140
NETMASK=255.255.255.0
GATEWAY=192.168.109.2

[root@localhost ~]# vim /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=cm-master

[root@localhost ~]# vim /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.109.141 cm-slave1
192.168.109.142 cm-slave2
192.168.109.140 cm-master

注意不要手贱把前两行删掉!很多软件是直接找localhost。

[root@localhost ~]# vim /etc/resolv.conf

search localdomain
nameserver 192.168.109.2
nameserver 8.8.8.8

网络配置已经完成,重启网络服务
[root@localhost ~]# service network restart

防火墙配置

[root@cm-master ~]# service firewalld status
Redirecting to /bin/systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2018-03-31 01:17:17 PDT; 37min ago
Main PID: 766 (firewalld)
CGroup: /system.slice/firewalld.service

       └─766 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

通过查看防火墙状态,我们看到它是active状态的,得把它禁用了:
[root@cm-master ~]# systemctl stop firewalld.service
[root@cm-master ~]# systemctl disable firewalld.service
stop只是暂时停用,disable设置开启

Selinux配置

这东西太麻烦了,对很多权限严格控制,导致无法正常运行的情况。
[root@cm-master ~]# vim /etc/selinux/config

SELINUX=disabled

时钟同步

master机器上配置:
[root@cm-master /]# service ntpd start
Redirecting to /bin/systemctl start ntpd.service
[root@cm-master /]# vim /etc/ntp.conf

image
slave机器上配置:
[root@cm-slave1 ~]# ntpdate cm-master
31 Mar 20:21:45 ntpdate[3298]: the NTP socket is in use, exiting
[root@cm-slave1 ~]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab

0-59/10 * * * *  /usr/sbin/ntpdate cm-master

免密登陆

[root@cm-master /]# ssh-keygen
[root@cm-master /]# ssh-copy-id 192.168.109.141
[root@cm-master /]# ssh-copy-id 192.168.109.142

资源准备

JDK的安装

  • 卸载掉系统自带的jdk
    [root@cm-master usr]# rpm -qa | grep jdk

java-1.8.0-openjdk-headless-1.8.0.65-3.b17.el7.x86_64
java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64
java-1.7.0-openjdk-1.7.0.91-2.6.2.3.el7.x86_64
java-1.7.0-openjdk-headless-1.7.0.91-2.6.2.3.el7.x86_64
[root@cm-master usr]# rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.65-3.b17.el7.x86_64
[root@cm-master usr]# rpm -e --nodeps java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64
[root@cm-master usr]# rpm -e --nodeps java-1.7.0-openjdk-1.7.0.91-2.6.2.3.el7.x86_64
[root@cm-master usr]# rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.91-2.6.2.3.el7.x86_64

  • 安装jdk
    由于cm会默认到这个/usr/java/去找jdk,所以请安装到/usr/java/

[root@cm-master usr]#mkdir /usr/java/
将下载好的java tar包通过工具传输到此目录下,解压
[root@cm-master java]#tar -zxvf jdk-7u80-linux-x64.tar.gz

  • 配置java_home
    [root@cm-master usr]# vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.7.0_80 
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

[root@cm-master usr]# source /etc/profile

  • 检测是否成功
    [root@cm-master usr]# java -version

java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)

Mysql的安装

其实CM默认使用的是PostgreSQL 但是大部分企业还是使用mysql作为存储数据库。而且大部分人都比较熟悉Mysql。所以我们也使用Mysql。

  • 卸载系统自带的数据库

[root@cm-master ~]# rpm -qa | grep mariadb
mariadb-libs-5.5.44-2.el7.centos.x86_64
[root@cm-master ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7.centos.x86_64

  • 解压mysql tar包
    [root@cm-master local]# tar -xvf mysql-5.7.21-1.el7.x86_64.rpm-bundle.tar
  • 安装依赖包和RPM包
    [root@cm-master mysql]# yum install numactl libaio

[root@cm-master mysql]# rpm -ivh mysql-community-common-5.7.21-1.el7.x86_64.rpm
[root@cm-master mysql]# rpm -ivh mysql-community-libs-5.7.21-1.el7.x86_64.rpm
[root@cm-master mysql]# rpm -ivh mysql-community-client-5.7.21-1.el7.x86_64.rpm
[root@cm-master mysql]# rpm -ivh mysql-community-server-5.7.21-1.el7.x86_64.rpm
[root@cm-master mysql]# rpm -ivh mysql-community-devel-5.7.21-1.el7.x86_64.rpm
[root@cm-master mysql]# rpm -ivh mysql-community-libs-compat-5.7.21-1.el7.x86_64.rpm

  • mysql初始化
    不用密码就可以登录

[root@cm-master mysql]# /usr/sbin/mysqld --initialize-insecure
启动mysql
[root@cm-master mysql]# /usr/sbin/mysqld --user=root &
[1] 37255
进入mysql
[root@cm-master mysql]# mysql -uroot
进入mysql之后依次执行如下操作(根据自己需求,比如假设你不需要oozie你就不要创建oozie数据库)

SET PASSWORD=PASSWORD('123456');
use mysql;
update user set Host='%' where User='root' and Host='localhost';
create database cmf DEFAULT CHARACTER SET utf8;
grant all on cmf.* TO 'cmf'@'%' IDENTIFIED BY '123456';
grant all on cmf.* TO 'cmf'@'localhost' IDENTIFIED BY '123456';


create database amon DEFAULT CHARACTER SET utf8;
grant all on amon.* TO 'amon'@'%' IDENTIFIED BY '123456';
grant all on amon.* TO 'amon'@'localhost' IDENTIFIED BY '123456';

create database smon DEFAULT CHARACTER SET utf8;
grant all on smon.* TO 'smon'@'%' IDENTIFIED BY '123456';
grant all on smon.* TO 'smon'@'localhost' IDENTIFIED BY '123456';


create database rman DEFAULT CHARACTER SET utf8;
grant all on rman.* TO 'rman'@'%' IDENTIFIED BY '123456';
grant all on rman.* TO 'rman'@'localhost' IDENTIFIED BY '123456';


create database hmon DEFAULT CHARACTER SET utf8;
grant all on hmon.* TO 'hmon'@'%' IDENTIFIED BY '123456';
grant all on hmon.* TO 'hmon'@'localhost' IDENTIFIED BY '123456';

create database nav DEFAULT CHARACTER SET utf8;
grant all on nav.* TO 'nav'@'%' IDENTIFIED BY '123456';
grant all on nav.* TO 'nav'@'localhost' IDENTIFIED BY '123456';

create database hive DEFAULT CHARACTER SET utf8;
grant all on hive.* TO 'hive'@'%' IDENTIFIED BY '123456';
grant all on hive.* TO 'hive'@'localhost' IDENTIFIED BY '123456';


create database rmon DEFAULT CHARACTER SET utf8;
grant all on rmon.* TO 'rmon'@'%' IDENTIFIED BY '123456';
grant all on rmon.* TO 'rmon'@'localhost' IDENTIFIED BY '123456';

create database oozie DEFAULT CHARACTER SET utf8;
grant all on oozie.* TO 'oozie'@'%' IDENTIFIED BY '123456';
grant all on oozie.* TO 'oozie'@'localhost' IDENTIFIED BY '123456';

create database hue DEFAULT CHARACTER SET utf8;
grant all on hue.* TO 'hue'@'%' IDENTIFIED BY '123456';
grant all on hue.* TO 'hue'@'localhost' IDENTIFIED BY '123456';


flush privileges;

最后别忘了赋权限,不然以后会遇到坑的
chmod -R 777 /var/lib/mysql

CM的安装

安装Http服务

[root@cm-master mysql]# yum install httpd
[root@cm-master mysql]# service httpd start
验证http服务是否成功启动
image

下载CM并安装

cloudera manager包 cm5.8.3-centos7.tar.gz
[root@cm-master mysql]# cd /var/www/html/
创建和官网资源包一样的目录
[root@cm-master html]# mkdir -p cm5/redhat/7/x86_64/
image
将之前下载好的cm包解压到此目录下
[root@cm-master x86_64]# cd /var/www/html/cm5/redhat/7/x86_64/
[root@cm-master x86_64]# ls
cm5.8.3-centos7.tar.gz
[root@cm-master x86_64]# tar -zxvf cm5.8.3-centos7.tar.gz

验证是否成功
image
安装RPM包
[root@cm-master x86_64]# yum install cloudera-manager-daemons-5.8.3-1.cm583.p0.8.el7.x86_64.rpm
[root@cm-master x86_64]# yum install cloudera-manager-server-5.8.3-1.cm583.p0.8.el7.x86_64.rpm

配置本地Yum源

如果CentOS服务器处在内网环境中时,经常会有缺少依赖包的情况,要手动安装会很麻烦,要花费很多时间来寻找rpm包,如果搭建本地的yum源,就非常方便了,配置本地yum后,cdh集群在安装时会就从本地down包,不会从官网了。而配置中baseurl就是上一步骤我们配置好的url地址。

vim /etc/yum.repos.d/cloudera-manager.repo

[cloudera-manager]
name = Cloudera Manager
baseurl=http://192.168.109.140/cm5/redhat/7/x86_64/cm/5.8.3/
gpgcheck = 0
enabled=1

image

配置数据库

[root@cm-master local]# cd /etc/cloudera-scm-server/
[root@cm-master cloudera-scm-server]# ls
db.properties log4j.properties
[root@cm-master cloudera-scm-server]# vim db.properties

com.cloudera.cmf.db.type=mysql

# The database host
# If a non standard port is needed, use 'hostname:port'
com.cloudera.cmf.db.host=192.168.109.140:3306

# The database name
com.cloudera.cmf.db.name=cmf

# The database user
com.cloudera.cmf.db.user=cmf

# The database user's password
com.cloudera.cmf.db.password=123456

添加Mysql的驱动包到/usr/share/java目录下
[root@cm-master x86_64]# cd /usr/share/java
将下载好的驱动包放入此目录
[root@cm-master java]# ls
jline.jar js.jar mysql-connector-java-5.1.42-bin.jar rhino-examples.jar rhino.jar tagsoup.jar
[root@cm-master java]# mv mysql-connector-java-5.1.42-bin.jar mysql-connector-java.jar
注意:一定要改名为mysql-connector-java!!!

启动服务

[root@cm-master java]# service cloudera-scm-server start
实时查看日志是否有报错
[root@cm-master java]# cd /var/log/cloudera-scm-server/
[root@cm-master java]# tail -F cloudera-scm-server.log

image
直到出现7180说明已经成功,我们可以去Web界面访问了,如果看见报error就根据错误提示信息去检查是否哪一步没有做对,如果完全按照我的步骤(目录和文件名都要保持一致)是没有问题的,否则会出现很多坑。
image

CDH的安装

配置parcels

Parcels是CDH安装必备的包。
下载Parcels包:parcels-5.8.3
或者通过wget如:
wget http://archive.cloudera.com/cdh5/parcels/5.8.3/manifest.json

[root@cm-master x86_64]# cd /var/www/html/
[root@cm-master html]# mkdir parcels
[root@cm-master html]# cd parcels/
[root@cm-master parcels]# ls
CDH-5.8.3-1.cdh5.8.3.p0.2-el7.parcel CDH-5.8.3-1.cdh5.8.3.p0.2-el7.parcel.sha1 manifest.json
注意将sha1去掉名称结尾"1",不然cdh在装的时候,会一直认为在下载,是未完成的
mv CDH-5.8.3-1.cdh5.8.3.p0.2-el7.parcel.sha1 CDH-5.8.3-1.cdh5.8.3.p0.2-el7.parcel.sha
验证是否成功
image

开始安装CDH集群

image
image
image
image
image
image
image
image
image
image
image
image
image

[root@cm-master /]# sysctl -w vm.swappiness=0
vm.swappiness = 0
[root@cm-master /]# echo "vm.swappiness=0" >> /etc/sysctl.conf
[root@cm-master /]# echo never > /sys/kernel/mm/transparent_hugepage/defrag
[root@cm-master /]# echo never >> /etc/rc.local

安装Hadoop等生态圈组件

image
image
image
image
image

集群完整性检查

image

我们会发现很多报警,其实这都不算事!是因为我们自己的虚拟机,内存不足而导致的,实际生产环境中内存是很大的。我们可以更改一下报警配置,就不会出现这些问题了。
image

image

总结

本人第一次按照CM的时候遇到很多坑,而且当时都无解,百度Google也搜不到,网上很多博客,但是都没有说的很详细,也没有把需要注意的问题重点强调,所以我写了这篇博客,非常详细,把可能会遇到的坑重点强调,比如jdk1.7.0_80如果你改成jdk或者别的名字就会报错,再比如mysql的驱动包一定要是mysql-connector-java.jar这个名字,等等。
请务必按照我的步骤完全照做,版本、目录、文件名都要保持一致,这样才能杜绝遇到莫名其妙的坑。
另外,遇到问题也没有关系!查看日志!!!查看日志!!!查看日志!!!重要的事情说三遍。

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
9天前
|
数据采集 分布式计算 OLAP
最佳实践:AnalyticDB在企业级大数据分析中的应用案例
【10月更文挑战第22天】在数字化转型的大潮中,企业对数据的依赖程度越来越高。如何高效地处理和分析海量数据,从中提取有价值的洞察,成为企业竞争力的关键。作为阿里云推出的一款实时OLAP数据库服务,AnalyticDB(ADB)凭借其强大的数据处理能力和亚秒级的查询响应时间,已经在多个行业和业务场景中得到了广泛应用。本文将从个人的角度出发,分享多个成功案例,展示AnalyticDB如何助力企业在广告投放效果分析、用户行为追踪、财务报表生成等领域实现高效的数据处理与洞察发现。
29 0
|
3月前
|
分布式计算 大数据 数据处理
【大数据管理新纪元】EMR Delta Lake 与 DLF 深度集成:解锁企业级数据湖的无限潜能!
【8月更文挑战第26天】随着大数据技术的发展,Apache Spark已成为处理大规模数据集的首选工具。亚马逊的EMR服务简化了Spark集群的搭建和运行流程。结合使用Delta Lake(提供ACID事务保证和数据版本控制)与DLF(加强数据访问控制及管理),可以显著提升数据湖的可靠性和性能。本文通过一个电商公司的具体案例展示了如何在EMR上部署集成Delta Lake和DLF的环境,以及这一集成方案带来的几大优势:增强的可靠性、细粒度访问控制、性能优化以及易于管理的特性。这为数据工程师提供了一个高效且灵活的数据湖平台,简化了数据湖的建设和维护工作。
56 1
|
4月前
|
存储 搜索推荐 数据建模
阿里巴巴大数据实践之数据建模:构建企业级数据湖
阿里巴巴通过构建高效的数据湖和实施先进的数据建模策略,实现了数据驱动的业务增长。这些实践不仅提升了内部运营效率,也为客户提供了更好的服务体验。随着数据量的不断增长和技术的不断创新,阿里巴巴将持续优化其数据建模方法,以适应未来的变化和发展。
|
6月前
|
数据可视化 Linux Apache
CentOS部署Apache Superset大数据可视化BI分析工具并实现无公网IP远程访问
CentOS部署Apache Superset大数据可视化BI分析工具并实现无公网IP远程访问
|
6月前
|
分布式计算 大数据 数据处理
大数据开发企业级案例__某通信企业数据处理需求(建议收藏)
大数据开发企业级案例__某通信企业数据处理需求(建议收藏)
59 0
|
6月前
|
SQL 分布式计算 Hadoop
最新大数据集群安装方法CentOS7.6__大数据环境安装和配置
最新大数据集群安装方法CentOS7.6__大数据环境安装和配置
187 0
|
6月前
|
分布式计算 算法 大数据
大数据Spark企业级实战与Hadoop实战&PDF和PPT
今天给大家分享的是《大数据Spark企业级实战》与《Hadoop实战》《大数据处理系统·Hadoop源代码情景分析》《50个大厂大数据算法教程》等销量排行前10名的大数据技术书籍(文末领取PDF版)。这些书籍具有以下几个优点:易读、实践性强,对解决工作中遇到的业务问题具有一定启发性。
|
分布式计算 资源调度 大数据
大数据数据倾斜问题与企业级解决方案
大数据数据倾斜问题与企业级解决方案
87 0
|
SQL 存储 分布式计算
大数据Hadoop小文件问题与企业级解决方案
大数据Hadoop小文件问题与企业级解决方案
85 0
|
分布式计算 算法 大数据
大数据Spark企业级实战与Hadoop实战&PDF和PPT
今天给大家分享的是《大数据Spark企业级实战》与《Hadoop实战》《大数据处理系统·Hadoop源代码情景分析》《50个大厂大数据算法教程》等销量排行前10名的大数据技术书籍(文末领取PDF版)。这些书籍具有以下几个优点:易读、实践性强,对解决工作中遇到的业务问题具有一定启发性。