基于Ambari搭建大数据分析平台

2024-03-14 00:36

本文主要是介绍基于Ambari搭建大数据分析平台,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、部署工具简介

1. Hadoop生态系统

Hadoop big data ecosystem in Apache stack

Hadoop大数据生态

Hadoop生态

2. Hadoop的发行版本

Hadoop的发行版除了Apache的开源版本之外,国外比较流行的还有:Cloudera发行版(CDH)、Hortonworks发行版(HDP)、MapR等,所有这些发行版均是基于Apache Hadoop衍生出来的,因为Apache Hadoop的开源协议允许任何人对其进行修改并作为开源或者商业产品发布。

国内主流的商业版Hadoop平台:

  • 华为——FusionInsight HD(简称FI)
  • 腾讯——Tbds
  • 阿里——飞天(相对其他版本,修改比较大)
  • 明略——Nest
  • 星环——Tdc
  • 浪潮——云海Insight
  • CDH是Cloudera基于Apache Hadoop衍生出的发行版,其代码部分开源,提供了管理布置工具ClouderaManager

  • HDP是Hortonworks公司(2018年并入cloudera公司)基于Apache Hadoop衍生出的发行版,其代码全部开源,采用Ambari进行管理和部署

3. 部署工具介绍

大数据集群管理方式分为手工方式(Apache hadoop)和工具方式(Ambari + hdp 和Cloudera Manger + CDH)。手工方式太过复杂,是一个艰辛的过程,在企业应用中,一般采用工具部署方式。Ambari和Cloudera Manager这两个系统,目的就是简化Hadoop生态集群的安装、配置,同时提高Hadoop运维效率,以及对Hadoop集群进行监控。

(1)Ambari是Apache软件基金顶级项目,它是一个基于web的工具,用于安装、配置、管理和监视Apache Hadoop集群,支持Hadoop HDFS,、Hadoop MapReduce、Hive、HCatalog,、HBase、ZooKeeper、Oozie、Pig和Sqoop。Ambari同样还提供了集群状况仪表盘,比如heatmaps和查看MapReduce、Pig、Hive应用程序的能力,以友好的用户界面对它们的性能特性进行诊断。

Apache Ambari 项目旨在通过开发用于配置,管理和监控 Apache Hadoop 集群的软件来简化 Hadoop 管理。Ambari 提供了一个直观,易用的 Hadoop 管理 Web UI。

Ambari提供了如下功能:

  • 提供了跨任意数量的主机安装 Hadoop 服务的分步向导。
  • 处理群集的 Hadoop 服务配置。
  • 提供集中管理,用于在整个集群中启动,停止和重新配置 Hadoop 服务。
    提供了一个仪表板,用于监控 Hadoop 集群的运行状况和状态。
  • 利用 Ambari 指标系统进行指标收集。
  • 利用 Ambari Alert Framework 进行系统警报,并在需要您注意时通知您(例如,节点出
    现故障,剩余磁盘空间不足等)。

(2)Cloudera Manager是cloudera公司的一个产品,着重于帮助大家管理自己的CDH集群,通过Cloudera Manager统一的UI界面来快速地自动配置和部署CDH和其相关组件,同时Cloudera Manager还提供了各种丰富的可自定义化的监视诊断和报告功能,集群上统一的日志管理功能,统一的集群配置管理和实时配置变更功能,多租户功能,高可用容灾部署功能和自动恢复功能等, 方便企业统一管理和维护自己的数据中心。Cloudera Manager产品也是我们主要的安装内容和介绍对象。它细分为免费的Express版本和功能完全并提供众多增值服务的收费版本Enterprise

(3)Ambari VS ClouderaManager

主要的不同点apache AmbariClouderaManager Express(免费版)
配置版本控制和历史记录支持不支持
二次开发支持不支持
集成支持no (不支持redis、kylin、es)
维护依靠社区力量cloudera做了一些定制开发,自行维护或打patch会离社区越来越远
权限控制ranger(相对简单)sentry(复杂)
视图定制支持创建自己的视图,添加自定义服务不支持

二、准备工作

1.基础环境

  • 操作系统(CentOS 7)

  • 数据库(MySQL)

  • 浏览器

  • JDK

https://supportmatrix.hortonworks.com
=>
https://supportmatrix.cloudera.com/#Hortonworks

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

本手册选择CentOS7 + Ambari 2.6 + HDP 2.6.3

HDP:http://public-repo-1.hortonworks.com/HDP/centos7/2.x/updates/2.6.3.0/HDP-2.6.3.0-centos7-rpm.tar.gz

ambari:http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.6.0.0/ambari-2.6.0.0-centos7.tar.gz

HDP-UTILS:http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.21/repos/centos7/HDP-UTILS-1.1.0.21-centos7.tar.gz

相关软件资源可在文末百度网盘资源中进行下载,

2.系统最小要求

  • 软件需求

  • 内存需求

  • 最大打开文件需求

2.1 软件需求

On each of your hosts:

  • yum and rpm (RHEL/CentOS/Oracle/Amazon Linux)

  • zypper and php_curl (SLES)

  • apt (Debian/Ubuntu)

  • scp, curl, unzip, tar, wget, and gcc*

  • OpenSSL (v1.01, build 16 or later)

  • Python (with python-devel)*

*Ambari Metrics Monitor uses a python library (psutil) which requires gcc and python-devel packages.

2.2 内存需求

Ambari主机应该至少有1 GB RAM,500 MB空闲

检测可用内存

free -m

运行 AMC(Ambari Metrics Collector)主机的内存和硬盘要求:

Number of hostsMemory AvailableDisk Space
11024MB10GB
101024MB20GB
502048MB50GB
1004096MB100GB
3004096MB100GB
5008096MB200GB
100012288MB200GB
200016384MB500GB

3.环境准备

主机规划

IPhostnamememorydisk space功能
192.168.91.128master2G30G
192.168.91.129slave11G30G
192.168.91.130slave21G30G

3.1 安装虚拟机

  • VMware Workstation

  • VBox

  • VMware Player

  • Hyper-V

    下载文末网盘资源中的文件vmware_177981.zipCentOS-7-x86_64-Minimal-2009.iso

(1)安装虚拟机软件VMware

  • 安装增强型键盘驱动程序选中后,在虚拟机中使用键盘更加流畅

在这里插入图片描述

  • 在最后一步时,点击许可,输入如下的某一条许可即可

    ZF3R0-FHED2-M80TY-8QYGC-NPKYF
    YF390-0HF8P-M81RQ-2DXQE-M2UT6
    ZF71R-DMX85-08DQY-8YMNC-PPHV8
    

在这里插入图片描述

(2) 创建虚拟电脑

  • 点击“创建新的虚拟机”

在这里插入图片描述

  • 选择典型模式创建虚拟电脑

在这里插入图片描述

  • 选择系统的安装文件,这里不设置,然后创建虚拟机后再进行相应设置

在这里插入图片描述

  • 对虚拟机命名,注意位置的设置,尽量选择剩余空间多的盘符

在这里插入图片描述

  • 磁盘大小设置,这里设为30G

在这里插入图片描述

  • 最后点完成即可。

(3) 安装CentOS

  • 选择Install CentOS 7开始安装虚拟机

在这里插入图片描述

  • 选择语言,选择English即可

在这里插入图片描述

  • 选择时区、硬盘分区、网卡信息

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 设置ROOT账户密码

在这里插入图片描述

  • 重启,完成安装

    在这里插入图片描述

3.2 安装初始软件

yum -y install ntp openssh wget  vim  openssh-clients openssl gcc openssh-server  python-devel 

3.3 安装JDK

下载文末网盘资源中的文件:jdk-8u112-linux-x64.tar.gz

借助工具(比如xftp, lrzsz, Winscp)将上面文件上传到虚拟机master

(1)安装

解压jdk-8u112-linux-x64.tar.gz

tar -xvf jdk-8u112-linux-x64.tar.gz -C /opt 

运行命令 vi /etc/profile修改环境变量,在文件末尾添加如下内容

export JAVA_HOME=/opt/jdk1.8.0_112
export PATH=${JAVA_HOME}/bin:$PATH

执行如下命令使生效

source /etc/profile

(2) 测试

java -version

3.4 关闭防火墙

systemctl stop firewalld.service #关闭防火墙
systemctl disable firewalld  #关闭开机启动
systemctl status firewalld	#查看防火墙状态

3.5 关闭SELinux、PackageKit、检测umask值

(1)使用如下命令关闭SELinux

setenforce 0

修改配置文件进行配置: vim /etc/selinux/config

# This file controls the state of SELinux on the system.# SELINUX= can take one of these three values:#   enforcing - SELinux security policy is enforced.#   permissive - SELinux prints warnings instead of enforcing.#   disabled - No SELinux policy is loaded.SELINUX=disabled# SELINUXTYPE= can take one of these two values:#   targeted - Targeted processes are protected,#   mls - Multi Level Security protection.SELINUXTYPE=targeted

(2)如果系统有安装 PackageKit,需要修改配置文件vim /etc/yum/pluginconf.d/refresh-packagekit.conf

enabled=0

(3)确保umask值为0022

#查看
umask
#修改为0022
umask 0022

针对所有交互用户进行永久性修改

echo umask 0022 >> /etc/profile

3.6 最大文件描述

最大文件描述至少需要10000,可通过如下命令查看

ulimit -Snulimit -Hn

可通过如下命令修改

ulimit -n 65535

ulimit为shell内建指令,可用来控制shell执行程序的资源, 可用ulimit -a 查看资源限制的设定

另外,也可以通过修改配置文件vi /etc/security/limits.conf,在文件尾部添加如下代码即可:

# End of file
* soft nofile 65535
* hard nofile 65535
* soft nproc 131072
* hard nproc 131072

3.7 修改网络配置

(1)修改IP地址

修改配置文件:vi /etc/sysconfig/network-scripts/ifcfg-ens33

TYPE="Ethernet"
BOOTPROTO="static"
DEFROUTE="yes"
NAME="ens33"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.91.129"
NETMASK="255.255.255.0"
GATEWAY="192.168.91.2"
DNS1="114.114.114.114"
DNS2="8.8.8.8"

注意,IP段需要查看VMware的虚拟网络配置情况,可以通过菜单编辑 -> 虚拟网络编辑器 -> VMnet8查看

如下图所示的配置截图,则需要把上面配置项修改为

IPADDR="192.168.121.129"
GATEWAY="192.168.121.2"

在这里插入图片描述

重启网络

/etc/init.d/network  restart

(2) 修改主机名

 hostnamectl --static set-hostname slave1

centos7后,可以使用hostnamectl命令进行主机的配置,实际上是修改的/etc/hostname文件

3.8 克隆主机

根据slave1主机,克隆master和slave2主机,以下步骤以克隆slave2为例,类似配置master主机

首先关闭slave1主机

shutdown -h nowshe

右键主机slave1, 选择管理 -> 克隆 进入克隆向导

在这里插入图片描述

…略

在这里插入图片描述

在这里插入图片描述

克隆好slave2主机后,启动slave2, 并按3.7步骤一样修改ip为192.168.91.130和主机名slave2

克隆好master主机后,启动master, 并按3.7步骤一样修改ip为192.168.91.128和主机名master

4.集群准备

IPhostnamememorydisk space功能
192.168.91.128master2G30G
192.168.91.129slave11G30G
192.168.91.130slave21G30G

注意:内存允许的情况下,建议适当增加虚拟机内存。

4.1 hosts配置

**目的:**实现通过名称来查找相应的服务器

在主机master配置vi /etc/hosts,在文件末尾添加如下内容:

192.168.91.128 master
192.168.91.129 slave1
192.168.91.130 slave2

使用scp同步到salve1, slave2

scp /etc/hosts root@slave1:/etc/
scp /etc/hosts root@slave2:/etc/

注意:在远程拷贝过程中,需要输入远程主机的密码

scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。

语法:

scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
[-l limit] [-o ssh_option] [-P port] [-S program]
[[user@]host1:]file1 [...] [[user@]host2:]file2

简易写法:

scp [可选参数] file_source file_target

可以参考菜鸟教程:https://www.runoob.com/linux/linux-command-manual.html

4.2 同步时钟

**目的:**在master服务器上启动ntp服务,然后slave1和slave2每10分钟同步一次时间

  • master主机:

配置vi /etc/ntp.conf

在这里插入图片描述

systemctl start ntpd.service       #启动服务
systemctl enable ntpd.service      #开机启动
  • slave1、slave2主机

    在slave2和slave2的主机上运行如下命令,可以让它们的时间与master服务器同步

    ntpdate master
    

    将时间同步设为定时任务,运行如下命令设置定时任务

    crontab -e
    

    编辑如下内容

    */10 * * * * /usr/sbin/ntpdate master
    

Linux crontab是用来定期执行程序的命令。

当安装完成操作系统之后,默认便会启动此任务调度命令。

crond 命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。

*    *    *    *    *
-    -    -    -    -
|    |    |    |    |
|    |    |    |    +----- 星期中星期几 (0 - 7) (星期天 为0)
|    |    |    +---------- 月份 (1 - 12) 
|    |    +--------------- 一个月中的第几天 (1 - 31)
|    +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)

参考菜鸟教程:https://www.runoob.com/linux/linux-comm-crontab.html

4.3 免密登录

配置master节点无密码登录到其他节点,在master节点上操作

ssh-keygen -t rsa       #一直Enter键
ssh-copy-id master
ssh-copy-id slave1
ssh-copy-id slave2

测试,如果不需要输入密码而顺利打印出时间信息,则免密登录设置成功

 ssh slave1 date; ssh slave2 date; ssh master date;

三、创建本地源

这部分操作只需要在master主机上操作即可

下载文末网盘资源中的文件:ambari-2.6.0.0-centos7.tar.gzHDP-2.6.3.0-centos7-rpm.tar.gzHDP-UTILS-1.1.0.21-centos7.tar.gz

借助工具(比如xftp, lrzsz, Winscp)上传到虚拟机master的/root目录。

1. 安装httpd服务

yum -y install httpd      #安装httpd
systemctl restart httpd.service   #开启httpd服务
systemctl enable httpd.service    #开机启动

2. 将包放到/var/www/html目录

tar -zxvf /root/ambari-2.6.0.0-centos7.tar.gz -C /var/www/html/
tar -zxvf /root/HDP-2.6.3.0-centos7-rpm.tar.gz -C /var/www/html/
mkdir /var/www/html/HDP-UTILS
tar -zxvf /root/HDP-UTILS-1.1.0.21-centos7.tar.gz -C /var/www/html/HDP-UTILS

试试能否成功访问:http://192.168.91.128

3. 制作本地源

3.1 安装本地源制作相关工具

yum install yum-utils createrepo yum-plugin-priorities repolist -y
createrepo /var/www/html

3.2 修改源地址

(1) 修改ambari.repo

vi  /var/www/html/ambari/centos7/2.6.0.0-267/ambari.repo

修改内容如下:

#VERSION_NUMBER=2.6.0.0-267
[ambari-2.6.0.0]
name=ambari Version - ambari-2.6.0.0
baseurl=http://master/ambari/centos7/2.6.0.0-267
gpgcheck=1
gpgkey=http://master/ambari/centos7/2.6.0.0-267/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1
cp /var/www/html/ambari/centos7/2.6.0.0-267/ambari.repo  /etc/yum.repos.d/

(2) 修改hdp.repo

vi /var/www/html/HDP/centos7/2.6.3.0-235/hdp.repo

内容如下

#VERSION_NUMBER=2.6.3.0-235
[HDP-2.6.3.0]
name=HDP Version - HDP-2.6.3.0
baseurl=http://master/HDP/centos7/2.6.3.0-235
gpgcheck=1
gpgkey=http://master/HDP/centos7/2.6.3.0-235/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1[HDP-UTILS-1.1.0.21]
name=HDP-UTILS Version - HDP-UTILS-1.1.0.21
baseurl=http://master/HDP-UTILS
gpgcheck=1
gpgkey=http://master/HDP-UTILS/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1
cp /var/www/html/HDP/centos7/2.6.3.0-235/hdp.repo /etc/yum.repos.d/

上面就创建好了主机上的文件,然后可以通过下面命令清除yum的缓存

yum clean all
yum makecache
yum repolist

可以打开浏览器查看一下:
http://master/ambari/centos7/
http://master/HDP/centos7/

如果希望在本地计算机上使用http://master/ambari/centos7/和http://master/HDP/centos7/访问, 需要配置本机的hosts文件

C:\Windows\System32\drivers\etc\hosts, 添加如下内容即可:

192.168.91.128 master
192.168.91.129 slave1
192.168.91.130 slave2

3.3 同步源文件

将创建好的源文件拷贝到子节点

cd /etc/yum.repos.d
scp ambari.repo slave1:/etc/yum.repos.d/ambari.repo
scp ambari.repo slave2:/etc/yum.repos.d/ambari.repo
scp hdp.repo slave1:/etc/yum.repos.d/hdp.repo
scp hdp.repo slave2:/etc/yum.repos.d/hdp.repo

四、安装Ambari

Ambari有两种安装模式

  • 一种是使用默认postgresql数据库的存储安装元数据
  • 使用第三方数据库作为Ambari元数据库

我们这里使用mysql数据库作为Ambari元数据库

下载文末网盘资源中的文件:ambari-2.6.0.0-centos7.tar.gzMySQL-5.6.46-1.el7.x86_64.rpm-bundle.tarmysql-connector-java-5.1.40.jar

借助工具(比如xftp, lrzsz, Winscp)上传到虚拟机master的/root目录。

1. 安装Ambari服务

 yum -y install ambari-server

如果出现安装失败,请检查本地源创建是否成功

2.配置Ambari

2.1 卸载MariaDB 和 已有MySQL

rpm -qa | grep -i mariadb

在这里插入图片描述

rpm -e --nodeps mariadb-libs-5.5.52-1.el7.x86_64

同样的方法卸载已有的MySQL

删除服务

systemctl list-unit-files --type=service | grep -i mysql

如果查找到mysql服务,使用下面的命令进行删除

chkconfig --del mysql

2.2 安装mysql数据库

  1. 下载安装包: https://dev.mysql.com/downloads/mysql/5.6.html#downloads

    本文末尾的网盘资源中已经提供了相应安装包MySQL-5.6.46-1.el7.x86_64.rpm-bundle.tar,请使用相应工具(比如winscp)将该文件上传到目录/root

  2. 安装依赖

    yum -y install perl autoconf
    
  3. 安装

    tar -xvf MySQL-5.6.46-1.el7.x86_64.rpm-bundle.tar
    rpm -ivh MySQL-client-5.6.46-1.el7.x86_64.rpm
    rpm -ivh MySQL-server-5.6.46-1.el7.x86_64.rpm#查看安装时产生的随机密码
    cat /root/.mysql_secret#启动mysql
    service mysql start    mysql -uroot -p    #登入mysql
    Enter password:    #输入刚才查看的随机密码
    mysql> set password for 'root'@'localhost' = password('123456');   #修改密码
    mysql> grant all privileges on *.* to 'root'@'%' identified by '123456';
    mysql> flush privileges;   #刷新
    mysql> exit#MySQL服务自启动
    chkconfig mysql on
    

这里选择的是离线安装,如果使用在线安装,可以使用如下命令

wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpmrpm -ivh mysql-community-release-el7-5.noarch.rpm	yum -y install mysql mysql-server mysql-devel	#安装Mysqlsystemctl start mysqld.service		#启动mysql服务
systemctl enable mysqld.service		#开机启动mysqladmin  -uroot password '123456'		# 设置密码

2.3 MySQL 中 user 表中主机配置

mysql -uroot -p123456mysql> show databases;   #显示数据库mysql> use mysql;		#使用mysql数据库mysql> show tables;		#显示数据库mysql中的所有表mysql> desc user;		#显示user表的结构mysql> select User,Host,Password from user;   #查看User表mysql> update user set host='%' where host='localhost';     #修改 user 表,把 Host 表内容修改为%# 删除 root 用户的其他 host
mysql> 
delete from user where Host='master';
delete from user where Host='127.0.0.1';
delete from user where Host='::1';mysql> flush privileges;   #刷新mysql> quit;

2.4 配置Mysql驱动

请使用相应工具(比如winscp)将文件mysql-connector-java-5.1.40.jar上传到目录/root (官方下载地址:http://central.maven.org/maven2/mysql/mysql-connector-java/ )

mkdir /usr/share/java
cp /root/mysql-connector-java-5.1.40.jar  /usr/share/java/mysql-connector-java.jar

修改ambari.properties,添加mysql驱动路径

vi /etc/ambari-server/conf/ambari.properties

添加如下内容:

server.jdbc.driver.path=/usr/share/java/mysql-connector-java.jar

2.5 在MySQL中创建数据库

mysql -uroot -p123456mysql> CREATE DATABASE ambari;  
mysql> use ambari;  
mysql> CREATE USER 'ambari'@'%' IDENTIFIED BY 'ambarizk123';  
mysql> GRANT ALL PRIVILEGES ON *.* TO 'ambari'@'%';  
mysql> CREATE USER 'ambari'@'localhost' IDENTIFIED BY 'ambarizk123';  
mysql> GRANT ALL PRIVILEGES ON *.* TO 'ambari'@'localhost';  
mysql> CREATE USER 'ambari'@'master' IDENTIFIED BY 'ambarizk123';  
mysql> GRANT ALL PRIVILEGES ON *.* TO 'ambari'@'master';  
mysql> FLUSH PRIVILEGES;  
mysql> source /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql  
mysql> show tables;  
mysql> use mysql;  
mysql> select Host,User,Password from user where user='ambari';  
mysql> CREATE DATABASE hive;  
mysql> use hive;  
mysql> CREATE USER 'hive'@'%' IDENTIFIED BY 'hive';  
mysql> GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%';  
mysql> CREATE USER 'hive'@'localhost' IDENTIFIED BY 'hive';  
mysql> GRANT ALL PRIVILEGES ON *.* TO 'hive'@'localhost';  
mysql> CREATE USER 'hive'@'master' IDENTIFIED BY 'hive';  
mysql> GRANT ALL PRIVILEGES ON *.* TO 'hive'@'master';  
mysql> FLUSH PRIVILEGES;  
mysql> CREATE DATABASE oozie;  
mysql> use oozie;  
mysql> CREATE USER 'oozie'@'%' IDENTIFIED BY 'oozie';  
mysql> GRANT ALL PRIVILEGES ON *.* TO 'oozie'@'%';  
mysql> CREATE USER 'oozie'@'localhost' IDENTIFIED BY 'oozie';  
mysql> GRANT ALL PRIVILEGES ON *.* TO 'oozie'@'localhost';  
mysql> CREATE USER 'oozie'@'master' IDENTIFIED BY 'oozie';  
mysql> GRANT ALL PRIVILEGES ON *.* TO 'oozie'@'master ';  
mysql> FLUSH PRIVILEGES; 

2.6 配置Ambari

执行

ambari-server setup

下面是配置执行流程,按照提示操作

(1)提示是否自定义设置。输入: y

Customize user account for ambari-server daemon [y/n] (n)? y

(2) ambari-server 账号, 如果直接回车就是默认选择 root 用户

Enter user account for ambari-server daemon (root):

(3)设置JDK。输入:3

Checking JDK...
Do you want to change Oracle JDK [y/n] (n)? y
[1] Oracle JDK 1.8 + Java Cryptography Extension (JCE) Policy Files 8
[2] Oracle JDK 1.7 + Java Cryptography Extension (JCE) Policy Files 7
[3] Custom JDK
==================================================================
============
Enter choice (1): 3

如果上面选择 3 自定义 JDK,则需要设置 JAVA_HOME。输入:/opt/jdk

WARNING: JDK must be installed on all hosts and JAVA_HOME must be valid on all hosts.
WARNING: JCE Policy files are required for configuring Kerberos security. If you plan to use
Kerberos,please make sure JCE Unlimited Strength Jurisdiction Policy Files are valid on all
hosts.
Path to JAVA_HOME: /opt/jdk
Validating JDK on Ambari Server...done.
Completing setup...

(4)数据库配置。选择:y

Configuring database...
Enter advanced database configuration [y/n] (n)? y

(5)选择数据库类型。输入:3

Configuring database...
==================================================================
============
Choose one of the following options:
[1] - PostgreSQL (Embedded)
[2] - Oracle
[3] - MySQL
[4] - PostgreSQL
[5] - Microsoft SQL Server (Tech Preview)
[6] - SQL Anywhere
==================================================================
============
Enter choice (3): 3

(6)设置数据库的具体配置信息,根据实际情况输入,如果和括号内相同,则可以直接回车。
如果想重命名,就输入。

Hostname (localhost): master    
Port (3306):
Database name (ambari):
Username (ambari): 
Enter Database Password (bigdata):ambarizk123    (这里输入时不会显示)
Re-enter password:ambarizk123 (这里输入时不会显示)

(7)将 Ambari 数据库脚本导入到数据库

WARNING: Before starting Ambari Server, you must run the following DDL against the
database to create the schema: /var/lib/ambari-server/resources/Ambari-DDL-MySQL-
CREATE.sql
Proceed with configuring remote database connection properties [y/n] (y)?

如果使用自己定义的数据库,必须在启动 Ambari 服务之前导入 Ambari 的 sql 脚本。

3. 启动 Ambari

ambari-server start 

成功启动后在浏览器输入Ambari地址测试:http://master:8080 (需要配置hosts, 没配置时可以直接访问 192.168.91.128:8080)

4. 错误处理

如果出现错误,请注意查看日志,根据具体的错误内容进行处理,默认ambari-server的日志在/var/log/ambari-server/ambari-server.log里面。如果在处理日志的过程中或者后面安装的过程中出现一些莫名的错误,可以重置的安装。如果上面进行的默认数据库的配置,可以使用下面的代码重置ambari-server

ambari-server stop
ambari-server reset
ambari-server setup

如果选择的是第二种方式,就需要先执行上面的语句,然后手动将mysql里面创建的数据库进行删除。然后再重新执行第2步的操作

mysql -uroot -p123456mysql> show databases;mysql> drop database ambari;

五、搭建集群

1. 登录

登录界面,默认管理员账户登录http://master:8080/ (需要配置hosts, 没配置时可以访问 192.168.91.128:8080), 账户:admin 密码:admin

注意,如果在windows上要访问master,需要配置 C:\Windows\System32\drivers\etc\hosts

2. 安装向导

在这里插入图片描述

2.1 配置集群的名字为hadoop

在这里插入图片描述

2.2 选择版本和本地库

在redhat7后面填写:

http://192.168.91.128/HDP/centos7/2.6.3.0-235
http://192.168.91.128/HDP-UTILS

在这里插入图片描述

2.3 安装配置

填写主机地址以及主节点的id.rsa文件

需要首先把master节点为的私密(/root/.ssh/id.rsa)拷贝到windows:

在这里插入图片描述

2.4 安装ambari的agent,同时检查系统问题

在这里插入图片描述

如果失败,根据错误日志。

  • 出现如下错误:
ERROR 2020-12-26 05:23:37,117 NetUtil.py:96 - EOF occurred in violation of protocol (_ssl.c:618)
ERROR 2020-12-26 05:23:37,117 NetUtil.py:97 - SSLError: Failed to connect. Please check openssl library versions. 

修改 /etc/ambari-agent/conf/ambari-agent.ini, 在[security]添加如下信息:

[security]
force_https_protocol=PROTOCOL_TLSv1_2

2.5 选择要安装的服务

在这里插入图片描述

2.6 分配主节点

虚拟机的配置有限,实验时采用默认的方式即可。

在这里插入图片描述

在这里插入图片描述

2.7 分配从节点

在这里插入图片描述

2.8 自定义服务

如果前面安装的服务有Hive或者Oozie

在这里插入图片描述

在这里插入图片描述

2.9 检查

Admin Name : adminCluster Name : hadoopTotal Hosts : 3 (3 new)Repositories:redhat7 (HDP-2.6):
http://192.168.91.128/HDP/centos7/2.6.3.0-235
redhat7 (HDP-UTILS-1.1.0.21):
http://192.168.91.128/HDP-UTILS
Services:HDFS
DataNode : 3 hosts
NameNode : master
NFSGateway : 0 host
SNameNode : slave1
YARN + MapReduce2
App Timeline Server : slave1
NodeManager : 3 hosts
ResourceManager : slave1
Tez
Clients : 3 hosts
HBase
Master : master
RegionServer : 3 hosts
Phoenix Query Server : 0 host
Pig
Clients : 3 hosts
Sqoop
Clients : 3 hosts
ZooKeeper
Server : 3 hosts
Flume
Flume : 3 hosts
Ambari Metrics
Metrics Collector : slave2
Grafana : master
Kafka
Broker : master
SmartSense
Activity Analyzer : master
Activity Explorer : master
HST Server : master
Slider
Clients : 3 hosts

2.10 安装

注释掉 /usr/lib/python2.6/site-packages/resource_management/libraries/script/script.py文件的533行

# package_version = None

在这里插入图片描述

遇到出错,需要查看日志文件,进行相应解决

如果没修改 /usr/lib/python2.6/site-packages/resource_management/libraries/script/script.py,可能会有如下错误:

Traceback (most recent call last):
File "/var/lib/ambari-agent/cache/common-services/HDFS/2.1.0.2.0/package/scripts/hdfs_client.py", line 73, in <module>HdfsClient().execute()
File "/usr/lib/python2.6/site-packages/resource_management/libraries/script/script.py", line 367, in executemethod(env)
File "/var/lib/ambari-agent/cache/common-services/HDFS/2.1.0.2.0/package/scripts/hdfs_client.py", line 37, in installself.install_packages(env)
File "/usr/lib/python2.6/site-packages/resource_management/libraries/script/script.py", line 803, in install_packagesname = self.format_package_name(package['name'])
File "/usr/lib/python2.6/site-packages/resource_management/libraries/script/script.py", line 538, in format_package_nameraise Fail("Cannot match package for regexp name {0}. Available packages: {1}".format(name, self.available_packages_in_repos))
resource_management.core.exceptions.Fail: Cannot match package for regexp name hadoop_${stack_version}. Available packages: ['accumulo', 'accumulo-conf-standalone', 'accumulo-source', 'accumulo_2_6_3_0_235', 'accumulo_2_6_3_0_235-conf-standalone', '
123456789101112

2.11 查看&管理集群

在这里插入图片描述

在这里插入图片描述

2.12 添加服务

我们将要添加hive服务,先运行如下命令:

ambari-server setup --jdbc-db=mysql --jdbc-driver=/usr/share/java/mysql-connector-java.jar

(1)选择要添加的服务:

在这里插入图片描述

在这里插入图片描述

(2)分配主机

在这里插入图片描述

(3)分配从服务器和客户端

在这里插入图片描述

(4)设置Hive服务

在这里插入图片描述

(5)略…

(6)安装

在这里插入图片描述

六、常用命令练习

1. HDFS命令练习

掌握常用hdfs操作命令(hdfs dfs),执行并查看结果(可以在终端输入hdfs dfs -help查询命令用法)。

先通过vi在Linux本地创建三个文本文件:txt1.txt、txt2.txt、txt3.txt。文件文件里面随意输入些内容。

(1) 列出子目录或子文件

# 查看HDFS根目录下的文件或目录
hdfs dfs  -ls 
#递归列出子目录文件
hdfs dfs  -ls -R /

hadoop fs [generic options] -ls [-C] [-d] [-h] [-q] [-R] [-t] [-S] [-r] [-u] [ …]

(2) 创建目录

hdfs dfs -mkdir  /001hdfs dfs -mkdir /001/mydemo2# -p表示父目录都会创建
hdfs dfs -mkdir  -p  /001/mydemo/x/y/zhdfs dfs -mkdir /001/mydemo3 /001/mydemo4 /001/mydemo5#检查创建结果
hdfs dfs -ls /001/mydemohdfs dfs -ls -R  /001/mydemo

hadoop fs [generic options] -mkdir [-p]

(3) 上传文件

# 将本地目录txt1.txt文件上传到HDFS上并重命名为hdfs1.txt:hdfs dfs -put txt1.txt  /001/mydemo/hdfs1.txthdfs dfs -copyFromLocal txt2.txt /001/mydemo/hdfs2.txt

(4) 本地文件移动到HDFS

 hdfs dfs -moveFromLocal txt3.txt  /001/mydemo/hdfs3.txt

(5) 下载文件

#将HDFS中的file2文件复制到本地系统并命名为txt3.txt:hdfs dfs -get  /001/mydemo/hdfs1.txt  txt11.txthdfs dfs -copyToLocal  /001/mydemo/hdfs3.txt  txt3.txt

(6) 查看文件

#查看HDFS下/001/mydemo/hdfs2.txt文件中的内容:hdfs dfs -cat  /001/mydemo/hdfs2.txthdfs dfs -text  /001/mydemo/hdfs2.txt

(7) 删除文件

# 删除HDFS下名为file1的文件(参数r为递归删除)hdfs dfs -rm -r /001/mydemo/hdfs3.txt

(8) 复制和移动

#复制
hdfs dfs -cp  /001/mydemo/hdfs1.txt  /001/mydemo/hdfs3.txt#移动
hdfs dfs -mv  /001/mydemo/hdfs3.txt  /001/mydemo/hdfs4.txt

(9) 创建一个空文件

hdfs dfs -touchz  /001/mydemo/hdfs5.txt

(10) 追加文件

hdfs dfs -appendToFile txt1.txt /001/mydemo/hdfs5.txt

(11) 文件合并再下载

hdfs dfs -getmerge  /001/mydemo merge.txt

(12) count统计

# (显示:目录个数, 文件个数, 文件总计大小 输入路径)hdfs dfs -count  /001/mydemo

(13) 查看文件大小

hdfs dfs -du  /001/mydemo

(14) 设置扩展属性,获取扩展属性

hdfs dfs -setfattr -n user.from -v http://www.baidu.com /001/mydemo/hdfs1.txthdfs dfs -getfattr -d  /001/mydemo/hdfs1.txt

2. HBase练习

启动 HBase Shell,运行如下命令:

hbase shell

(1) 一般操作

#查询服务器状态
status#查询 Hbase 版本
version#查看所有表
list

(2) 增删改

# 创建一个表
create 'member001','member_id','address','info'# 获得表的描述
describe 'member001'# 添加一个列族
alter 'member001', 'id'# 添加数据, 在 HBase shell 中,我们可以通过 put 命令来插入数据。列簇下的列不需要提前创建,在需要时通过:来指定即可。添加数据如下:
put 'member001', 'debugo','id','11'
put 'member001', 'debugo','info:age','27'
put 'member001', 'debugo','info:birthday','1991-04-04'
put 'member001', 'debugo','info:industry', 'it'
put 'member001', 'debugo','address:city','Shanghai'
put 'member001', 'debugo','address:country','China'
put 'member001', 'Sariel', 'id', '21'
put 'member001', 'Sariel','info:age', '26'
put 'member001', 'Sariel','info:birthday', '1992-05-09'
put 'member001', 'Sariel','info:industry', 'it'
put 'member001', 'Sariel','address:city', 'Beijing'
put 'member001', 'Sariel','address:country', 'China'
put 'member001', 'Elvis', 'id', '22'
put 'member001', 'Elvis','info:age', '26'
put 'member001', 'Elvis','info:birthday', '1992-09-14'
put 'member001', 'Elvis','info:industry', 'it'
put 'member001', 'Elvis','address:city', 'Beijing'
put 'member001', 'Elvis','address:country', 'china'# 查看表数据
scan 'member001'# 删除一个列族
alter 'member001', {NAME => 'member_id', METHOD => 'delete’}# 删除列
# a)通过 delete 命令,我们可以删除 id 为某个值的‘info:age’字段,接下来的 get 就无值了:
delete 'member001','debugo','info:age'
get 'member001','debugo','info:age'# b)删除整行的值,用 deleteall 命令:
deleteall 'member001','debugo'
get 'member001','debugo'# 通过 enable 和 disable 来启用/禁用这个表,相应的可以通过 is_enabled 和
is_disabled 来检查表是否被禁用
is_enabled 'member001'
is_disabled 'member001'# 使用 exists 来检查表是否存在
exists 'member001'# 删除表需要先将表 disable。
disable 'member001'
drop 'member001'

(3) 查询

# 查询表中有多少行,用 count 命令:
count 'member001'# get
# a)获取一个 id 的所有数据:
get 'member001', 'Sariel'# b)获得一个 id,一个列簇(一个列)中的所有数据:
get 'member001', 'Sariel', 'info'# 查询整表数据
scan 'member001'# 扫描整个列簇
scan 'member001', {COLUMN=>'info'}# 指定扫描其中的某个列
scan 'member001', {COLUMNS=> 'info:birthday'}# 除了列(COLUMNS)修饰词外,HBase 还支持 Limit(限制查询结果行数),STARTROW(ROWKEY 起始行。会先根据这个 key 定位到 region,再向后扫描)、STOPROW(结束行)、TIMERANGE(限定时间戳范围)、VERSIONS(版本数)、和 FILTER(按条件过滤行)等。比如我们从 Sariel 这个 rowkey 开始,找下一个行的最新版本:
scan 'member001', { STARTROW => 'Sariel', LIMIT=>1, VERSIONS=>1}# Filter 是一个非常强大的修饰词,可以设定一系列条件来进行过滤。比如我们要限制某个列的值等于 26。
scan 'member001', FILTER=>"ValueFilter(=,'binary:26')"# 值包含 6 这个值:
scan 'member001', FILTER=>"ValueFilter(=,'substring:6')"# 列名中的前缀为 birth 的:
scan 'member001', FILTER=>"ColumnPrefixFilter('birth') "#FILTER 中支持多个过滤条件通过括号、AND 和 OR 的条件组合:
scan 'member001', FILTER=>"ColumnPrefixFilter('birth') AND ValueFilter ValueFilter(=,'substring:1988')"# PrefixFilter是对 Rowkey 的前缀进行判断,这是一个非常常用的功能。
scan 'member001', FILTER=>"PrefixFilter('E')"

附、网盘资源

链接:https://pan.baidu.com/s/18SGZkYnyq9AAjp5SLYqpZA?pwd=jiau
提取码:jiau

这篇关于基于Ambari搭建大数据分析平台的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/806714

相关文章

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

如何解决线上平台抽佣高 线下门店客流少的痛点!

目前,许多传统零售店铺正遭遇客源下降的难题。尽管广告推广能带来一定的客流,但其费用昂贵。鉴于此,众多零售商纷纷选择加入像美团、饿了么和抖音这样的大型在线平台,但这些平台的高佣金率导致了利润的大幅缩水。在这样的市场环境下,商家之间的合作网络逐渐成为一种有效的解决方案,通过资源和客户基础的共享,实现共同的利益增长。 以最近在上海兴起的一个跨行业合作平台为例,该平台融合了环保消费积分系统,在短

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

pico2 开发环境搭建-基于ubuntu

pico2 开发环境搭建-基于ubuntu 安装编译工具链下载sdk 和example编译example 安装编译工具链 sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib 注意cmake的版本,需要在3.17 以上 下载sdk 和ex