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

news2024/11/20 13:45:27

一、部署工具简介

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.coloradmin.cn/o/1514162.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

xss.pwnfunction.com靶机 Warmups

通关要求弹出警告框alert(1337) 没有用户交互 不能使用外链接 在chrome中测试 Ma Spaghet! 通过分析代码我们可以看到它直接用innerHTML将接收的内容赋值 但是我们不能使用<script>标签因为&#xff1a;HTML 5 中指定不执行由 innerHTML 插入的 <script> 标签。 所…

读书笔记之《机器与人》:AI如何重构工作方式和流程?

《机器与人: 埃森哲论新人工智能》作者是【美】保罗•多尔蒂和詹姆斯•威尔逊 &#xff0c;原作名: Human Machine: Reimagining Work in the Age of AI&#xff0c;2018年出版。 保罗•多尔蒂&#xff08;PAUL DAUGHERTYH&#xff09;&#xff1a;埃森哲首席技术官和创新官、…

Spring MVC中的REST风格

文章目录 REST风格1 REST简介问题导入1.1 REST介绍1.2 RESTful介绍1.3 注意事项 2 RESTful入门案例问题导入2.1 快速入门2.2 PathVariable介绍2.3 RequestBody、RequestParam、PathVariable区别和应用 3 REST快速开发【重点】3.1 代码中的问题3.2 Rest快速开发 4案例&#xff1…

springboot的maven多模块如何混淆jar包

springboot的maven多模块如何混淆jar包 一.简介二. 示例2.1 基本配置2.2 结果 三. 错误3.1 错误13.2 错误2 四. 参考文章 前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;神的孩子都在歌唱 一.简介 …

【node】模块化与包(二)

1、模块化的基本概念 模块化是指解决一个复杂的问题时&#xff0c;自顶向下逐层把系统划分成若干模块的过程。对于整个系统来说&#xff0c;模块是可组合、分解和更换的单元。 &#xff08;1&#xff09;模块化的优点 遵循固定规则&#xff0c;把大文件拆分成对立并相互依赖…

Python使用FastAPI提供图片缩略图生成接口

使用pillow的thumbnail生成缩略图时&#xff0c;会保持原图的宽高比&#xff1b;使用的opencv的resize则不会 具体代码如下&#xff1a; #!/usr/bin/env python import re import sys from enum import Enum from io import BytesIO from pathlib import Path from typing im…

蓝桥杯 2022 dp 背包

蓝桥杯 2022 dp 背包 题目链接&#xff1a; https://www.lanqiao.cn/problems/2186/learning/?subject_code1&group_code4&match_num13&match_flow2&origincup 题目&#xff1a; 代码&#xff1a; #include<bits/stdc.h> using namespace std;#defi…

王道机试C++第6章 数学问题和22年蓝桥杯省赛选择题Day34

6.1 进制转换 二进制数&#xff08;十转二&#xff09; 习题描述 大家都知道&#xff0c;数据在计算机里中存储是以二进制的形式存储的。 有一天&#xff0c;小明学了C语言之后&#xff0c;他想知道一个类型为unsigned int 类型的数字&#xff0c;存储在计算机中的二进制串是…

多数问题求解之蒙特卡洛与分治法

多数问题&#xff08;Majority Problem&#xff09;是一个有多种求解方法的经典问题&#xff0c;其问题定义如下&#xff1a; 给定一个大小为 n n n的数组&#xff0c;找出其中出现次数超过 n / 2 n/2 n/2的元素 例如&#xff1a;当输入数组为 [ 5 , 3 , 5 , 2 , 3 , 5 , 5 ] […

JavaEE:网络编程

网络编程&#xff1a;通过代码完成基于网络的跨主机通信 跨主机通信方式&#xff1a; 1.TCP/IP网络 2.蓝牙通信 3.近场通信NFC 4.毫米波通信&#xff1a;功率高&#xff0c;带宽高&#xff0c;抗干扰能力差 其中TCP/IP网络是日常编程中最常涉及到的&#xff0c;最通用的跨主机通…

深度学习进阶:揭秘强化学习原理,实战应用全解析!

作为机器学习领域的一大分支&#xff0c;强化学习以其独特的学习方式吸引了众多研究者和实践者的目光。强化学习&#xff0c;顾名思义&#xff0c;是通过不断地强化与环境的交互来优化决策策略。在这个过程中&#xff0c;智能体通过试错&#xff0c;根据环境给出的奖励信号来调…

Linux:导出环境变量命令export

相关阅读 Linuxhttps://blog.csdn.net/weixin_45791458/category_12234591.html?spm1001.2014.3001.5482 Linux中的内建命令export命令用于创建一个环境变量&#xff0c;或将一个普通变量导出为环境变量&#xff0c;并且在这个过程中&#xff0c;可以给该环境变量赋值。 下面…

产品测试方案:视频接入平台并发性能测试方案和报告(即150路视频并发流媒体服务器模块的性能测试方案和报告)

目 录 一、测试目的&#xff1a; 二、测试方案&#xff1a; 2.1、测试思路 2.2、拓扑图 三、测试环境 3.1 服务器配置 3.2 网络摄像机列表 3.3 测试软件 四、测试流程 4.1 H.264并发测试&#xff1a; 4.1.1老版本srsout3.10并发测试 4.1.2 新版本srsout…

反无人机电子护栏:原理、算法及简单实现

随着无人机技术的快速发展&#xff0c;其在航拍、农业、物流等领域的应用日益广泛。然而&#xff0c;无人机的不规范使用也带来了安全隐患&#xff0c;如侵犯隐私、干扰航空秩序等。为了有效管理无人机&#xff0c;反无人机电子护栏技术应运而生。 目录 一、反无人机电子护栏…

代码随想录算法训练营Day46 ||leetCode 139.单词拆分 || 322. 零钱兑换 || 279.完全平方数

139.单词拆分 class Solution { public:bool wordBreak(string s, vector<string>& wordDict) {unordered_set<string> wordSet(wordDict.begin(), wordDict.end());vector<bool> dp(s.size() 1, false);dp[0] true;for (int i 1; i < s.size(); …

【Linux】-Linux下的软件商店yum工具介绍(linux和windows互传文件仅仅一个拖拽搞定!!!!)

目录 1.Linux 软件包管理器yum 1.1快速认识yum 1.2 yumz下载方式&#xff08;如何使用yum进行下载&#xff0c;注意下载一定要是root用户或者白名单用户&#xff08;可提权&#xff09;&#xff09; 1.2.1下载小工具rzsz 1.2.2 rzsz使用 1.2.2查看软件包 1.3软件的卸载 2.yum生…

Grapher教程—重建长江中下游降雨量时间变化序列

各位朋友好&#xff01;非常激动&#xff01;新学了一个科研绘图软件&#xff0c;它的大名叫“Grapher”&#xff0c;也许在科研界早已如雷贯耳&#xff0c;但在我这&#xff0c;还得是第一次遇见你&#xff01;来看看小编在老师的指导下鼓捣了三节课搞出来的图。 就问大家&…

6.Java并发编程—深入剖析Java Executors:探索创建线程的5种神奇方式

Executors快速创建线程池的方法 Java通过Executors 工厂提供了5种创建线程池的方法&#xff0c;具体方法如下 方法名描述newSingleThreadExecutor()创建一个单线程的线程池&#xff0c;该线程池中只有一个工作线程。所有任务按照提交的顺序依次执行&#xff0c;保证任务的顺序性…

Mybatis-Plus实现常规增删改操作

文章目录 3.1 MP实现插入操作3.1.1 BaseMapper定义操作方法3.1.2 代码测试 3.2 MP主键字段注解-TableId3.2.1 注解TableId介绍3.2.2 MP主键生成策略介绍3.2.3 MP常用主键生成策略3.2.4 雪花算法(了解) 3.3 普通列注解-TableField3.3.1 注解TableField作用3.3.2 代码示例 3.4.MP…

自适应差分进化算法(SaDE)和差分进化算法(DE)优化BP神经网络

自适应差分进化算法(SaDE)和差分进化算法(DE)优化BP神经网络 自适应差分进化算法(SaDE)和差分进化算法(DE)可以用于优化神经网络中的参数&#xff0c;包括神经网络的权重和偏置。在优化BP神经网络中&#xff0c;DE和SaDE可以帮助找到更好的权重和偏置的组合&#xff0c;以提高…