基于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 -Sn

ulimit -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.rpm

rpm -ivh mysql-community-release-el7-5.noarch.rpm	

yum -y install mysql mysql-server mysql-devel	#安装Mysql

systemctl start mysqld.service		#启动mysql服务
systemctl enable mysqld.service		#开机启动

mysqladmin  -uroot password '123456'		# 设置密码

2.3 MySQL 中 user 表中主机配置

mysql -uroot -p123456

mysql> 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 -p123456

mysql> 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 -p123456

mysql> 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 : admin

Cluster Name : hadoop

Total 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 execute
 method(env)
File "/var/lib/ambari-agent/cache/common-services/HDFS/2.1.0.2.0/package/scripts/hdfs_client.py", line 37, in install
 self.install_packages(env)
File "/usr/lib/python2.6/site-packages/resource_management/libraries/script/script.py", line 803, in install_packages
 name = self.format_package_name(package['name'])
File "/usr/lib/python2.6/site-packages/resource_management/libraries/script/script.py", line 538, in format_package_name
 raise 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  /001

hdfs dfs -mkdir /001/mydemo2
 
# -p表示父目录都会创建
hdfs dfs -mkdir  -p  /001/mydemo/x/y/z

hdfs dfs -mkdir /001/mydemo3 /001/mydemo4 /001/mydemo5

#检查创建结果
hdfs dfs -ls /001/mydemo

hdfs 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.txt

hdfs 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.txt

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

(6) 查看文件

#查看HDFS下/001/mydemo/hdfs2.txt文件中的内容:

hdfs dfs -cat  /001/mydemo/hdfs2.txt

hdfs 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.txt

hdfs 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

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

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

相关文章

【开发】微服务整合Sentinel

目录 前言 1W&#xff1a;什么是Sentinel&#xff1f; 2W&#xff1a;为什么使用Sentinel&#xff1f; 3W&#xff1a;如何使用Sentinel&#xff1f; 1. 在pom.xml中导入Sentinel依赖坐标 2. 配置控制台 3. 访问API接口的任意端点 流量控制 1. 簇点链路 2. 快速入门…

数据结构入门篇 之 【双链表】的实现讲解(附完整实现代码及顺序表与线性表的优缺点对比)

一日读书一日功&#xff0c;一日不读十日空 书中自有颜如玉&#xff0c;书中自有黄金屋 一、双链表 1、双链表的结构 2、双链表的实现 1&#xff09;、双向链表中节点的结构定义 2&#xff09;、初始化函数 LTInit 3&#xff09;、尾插函数 LTPushBack 4&#xff09;、头…

华为三层交换机:ACL的基本实验

实验要求&#xff1a; PC1不允许访问PC3&#xff0c;PC3可以访问PC1 分析问题&#xff1a; PC1不允许访问PC3&#xff0c;问题中含有“目标地址”则我们需要设置目标地址&#xff0c;这样基本ACL是不行的&#xff0c;必须使用高级ACL [sw1]acl ? INTEGER<2000-2999>…

数字图像处理 使用C#进行图像处理九 实现傅里叶变换

一、简述 傅立叶变换将图像分解为其正弦和余弦分量。换句话说,它将图像从空间域变换到频率域。这个想法是任何函数都可以用无限正弦函数和余弦函数之和来精确近似。傅里叶变换是实现此目的的一种方法。 网上有很多关于傅里叶变换的文章,这里就不进行赘述了,这里主要结合代码…

python爬虫实战——抖音

目录 1、分析主页作品列表标签结构 2、进入作品页前 判断作品是视频作品还是图文作品 3、进入视频作品页面&#xff0c;获取视频 4、进入图文作品页面&#xff0c;获取图片 5、完整参考代码 6、获取全部作品的一种方法 本文主要使用 selenium.webdriver&#xff08;Firef…

【WSN覆盖优化】基于改进黏菌算法的无线传感器网络覆盖 WSN覆盖优化【Matlab代码#65】

文章目录 【可更换其他算法&#xff0c;获取资源请见文章第5节&#xff1a;资源获取】1. 改进SMA算法1.1 改进参数p1.2 混沌精英突变策略 2. WSN节点感知模型3. 部分代码展示4. 仿真结果展示5. 资源获取 【可更换其他算法&#xff0c;获取资源请见文章第5节&#xff1a;资源获取…

Python 基于 OpenCV 视觉图像处理实战 之 开发环境搭建

Python 基于 OpenCV 视觉图像处理实战 之 开发环境搭建 目录 Python 基于 OpenCV 视觉图像处理实战 之 开发环境搭建 一、简单介绍 二、该项目案例的开发环境 三、Python 环境搭建 1、Python 安装包下载 2、这里以 下载 Python 3.10.9 为例 3、安装 Python 3.10.9 4、检…

http协议-基于TCP的超文本传输协议

一、通过http最终实现一个效果 用我们自己电脑上的浏览器去访问我们自己写的python程序&#xff0c;这个程序就可以满足浏览器的需求&#xff0c;你可以从浏览器里面看到自己写出来的网页。所谓的协议就是一种规定。 二、http协议 正常情况下www.xxx是域名&#xff0c;将来…

前端实现复制粘贴功能

在前端开发的世界里&#xff0c;复制粘贴功能就像是那个总是被忽视&#xff0c;却在关键时刻能救你一命的老朋友。我们习惯了用那些古老的魔法咒语&#xff08;document.execCommand(copy)&#xff09;来实现这一功能&#xff0c;但时代在进步&#xff0c;技术在更新&#xff0…

LNMP架构之web服务器实战

LNMP架构 1.nginx部署 systemctl disable --now keepalived.service 关闭keepalived服务&#xff0c;避免冲突 将下载好的nginx软件压缩包直接拖入mobaxterm目录即可 tar zxf nginx-1.23.3.tar.gz cd nginx-1.23.3/ yum install -y gcc pcre-devel openssl-devel #安装依…

LInux系统架构----Nginx模块rewrite的规则与应用场景

LInux系统架构----Nginx模块rewrite的规则与应用场景 一.rewrite跳转实现 Nginx实现跳转通过ngx_http_rewrite_module模块支持URL重写、支持if条件判断&#xff0c;但是不支持else跳转时&#xff0c;循环最多可以执行10次&#xff0c;超过后nginx将返回500错误注&#xff1a;…

0基础使用dockerfile构建容器镜像

目录 一、使用dockerfile构建镜像 1.1、dockerfile指令 1.FROM 2.RUN 3.CMD 4.ENTRYPOINT 5.EXPOSR ​编辑 6.ADD和COPY ​编辑7.volume 8.USER 二、案例1&#xff1a;dockerfile构建httpd镜像 构建一个指定挂载点的httpd镜像 三、案例2&#xff1a;构建tomcat镜…

使用endnote插入引用文献导致word英文和数字变成符号的解决方案

使用endnote插入引用文献导致word英文和数字变成符号的解决方案 如图使用endnote插入引用文献导致word英文和数字变成符号字体Wingdings Wingdings 是一个符号字体系列&#xff0c;它将许多字母渲染成各式各样的符号&#xff0c;用途十分广泛。 **解决方法&#xff1a;**直接通…

【相关问题解答1】bert中文文本摘要代码:import时无法找到包时,几个潜在的原因和解决方法

【相关问题解答1】bert中文文本摘要代码 写在最前面问题1问题描述一些建议import时无法找到包时&#xff0c;几个潜在的原因和解决方法1. 模块或包的命名冲突解决方法&#xff1a; 2. 错误的导入路径解决方法&#xff1a; 3. 第三方库的使用错误解决方法&#xff1a; 4. 包未正…

gpt-4-all模型中转实现

最近才完成这个功能&#xff0c;相信知道这个模型的人&#xff0c;应该已经熟悉了。这是我的中转&#xff1a;openai-api Chatbox配置如下&#xff1a; 模型测试&#xff1a; 1&#xff09;图片生成 2&#xff09;文件分析&#xff0c;链接读取&#xff1a;

WPF实时时间显示demo(MVVM)

跟着b站的视频学习做一个界面,它里面的时间不能实时刷新,因此自己研究写一个,同时加深一下自己对MVVM的理解. 运行结果: 实现步骤: 1.界面 界面设计就是放置了一个TextBlock,它的text绑定了ViewModel层里面的公告属性CurrentTime. <Grid><TextBlock Text"{Bindi…

【Vite+Ts】自动按需引入Element-Plus

安装插件 cnpm i -D unplugin-vue-components unplugin-auto-import unplugin-element-plus修改vite.config.ts // vite.config.ts import AutoImport from "unplugin-auto-import/vite"; import Components from "unplugin-vue-components/vite"; impor…

白嫖AWS云服务器,验证、注册指南

背景 不知道你想不想拥有一台属于自己的云服务器呢&#xff0c;拥有一台自己的云服务器可以建站&#xff0c;可以在上面搭建个人博客&#xff0c;今天我就来教大家如何申请亚马逊 AWS 免费云服务器&#xff0c;这个云服务器可以长达12个月的免费。而且到期后可以继续换个账号继…

【Flink SQL】Flink SQL 基础概念:SQL 动态表 连续查询

Flink SQL 基础概念&#xff1a;SQL 动态表 & 连续查询 1.SQL 应用于流处理的思路2.流批处理的异同点及将 SQL 应用于流处理核心解决的问题3.SQL 流处理的输入&#xff1a;输入流映射为 SQL 动态输入表4.SQL 流处理的计算&#xff1a;实时处理底层技术 - SQL 连续查询5.SQL…

Arduino IDE的下载和安装

一、Arduino的介绍 Arduino是一款开源电子原型平台&#xff0c;主要包含两部分&#xff1a;硬件&#xff08;各种型号的Arduino板&#xff09;和软件&#xff08;Arduino IDE&#xff09;。这个平台由意大利的Massimo Banzi、David Cuartielles等人共同开发设计&#xff0c;并于…
最新文章