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

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

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

相关文章

代理IP是否会导致网络连接变慢?

目录 一、代理IP的工作原理及其在网络中的作用 二、代理IP可能导致网络连接变慢的因素 三、案例分析 四、优化代理IP使用的建议 五、总结 在网络世界中&#xff0c;代理IP的使用非常普遍&#xff0c;尤其是在需要隐藏真实IP地址、访问受限资源或进行网络爬虫等场景下。然而…

如何查看mnist数据集的图片

import numpy as np import matplotlib.pyplot as pltdef read_mnist_images(filename):with open(filename, rb) as f:# 读取魔术数字、图像数量、行数、列数magic_number int.from_bytes(f.read(4), big)number_of_images int.from_bytes(f.read(4), big)rows int.from_by…

UE4案例记录

UE4案例记录&#xff08;制作3D角色显示在UI中&#xff09; 制作3D角色显示在UI中 转载自youtube视频 https://www.youtube.com/channel/UCC8f6SxKJElVvaRb7nF4Axg 新建项目 创建一个Actor 场景组件->摄像机组件->场景捕获组件2D&#xff0c;之后添加一个骨骼网格体…

CLion 配置 Qt 开发环境

文章目录 CLion 配置 Qt 开发环境环境说明基本配置1. 创建Qt项目2. 设置CLion工具链3. 配置外部工具 一些问题的补充 CLion 配置 Qt 开发环境 环境说明 操作系统&#xff1a;Windows 10 CLion版本&#xff1a;2023.3.4 CMake版本&#xff1a;3.27.7 Qt6版本&#xff1a;6.6…

Java特性之设计模式【组合模式】

一、组合模式 概述 组合模式&#xff08;Composite Pattern&#xff09;&#xff0c;又叫部分整体模式&#xff0c;是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象&#xff0c;用来表示部分以及整体层次。这种类型的设计模式属于结构型模式&#x…

AHU 汇编 实验一

一、实验名称&#xff1a;实验1 实验1 用Debug命令查看寄存器和内存中的内容 实验目的:求掌握使用Debug命令查看寄存器和内存的方法。 通过第2章两个简单实例认识汇编语言程序&#xff0c;初步了解程序格式&#xff1b;段定义&#xff1b;标号&#xff1b;DOS系统功能&#xf…

基于恒功率PQ控制的三电平并网逆变器MATLAB仿真模型

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 模型简介 三相 T 型三电平逆变器电路如图所示&#xff0c;逆变器主回路由三个单相 T 型逆变器组成。 直流侧输入电压为 UPV&#xff0c;直流侧中点电位 O 设为零电位&#xff0c;交流侧输出侧是三相三线制连…

如何深度学习

信息爆炸时代&#xff0c;诞生了很多新的学习方式&#xff0c;非常轻松就能掌握知识&#xff0c;比如&#xff0c;每天听一本书&#xff0c;半个小时就能学习一本书的精华&#xff0c;比如订阅名家专栏或者课程&#xff0c;在不长的时间内内就能学到很多知识。 很多人认为这样…

【数据结构取经之路】快速排序的非递归实现

概述 递归实现快速排序在一些场景下有栈溢出的风险&#xff0c;下面就谈谈如何用非递归的方法实现快速排序。 非递归实现的思想 递归实现与非递归实现快速排序的本质是一致的&#xff0c;效率并不会因为用了非递归实现而有所提升。递归实现快速排序的本质就在于通过递归&…

电脑音频显示红叉怎么办?这里提供四种方法

前言 如果你在系统托盘中看到音量图标上的红色X,则表示你无法使用音频设备。即使音频设备未被禁用,当你运行音频设备疑难解答时,仍然会看到此错误。 你的电脑将显示已安装高清音频设备,但当你将鼠标悬停在图标上时,它将显示未安装音频输出设备。这是一个非常奇怪的问题,…

Linux系统目录结构详细介绍

目录 一、根目录&#xff08;/&#xff09; 二、/bin 三、/boot 四、/dev 1.设备文件类型&#xff1a; 2.常见设备文件&#xff1a; 五、/etc 六、/home 七、/root 八、/run 九、/sbin 十、 /tmp 十一、/usr 十二、/var Linux系统目录结构是一种层次化的文件系…

leetcode 热题 100_两数相加

题解一&#xff1a; 迭代&#xff1a;首先判断整数0&#xff0c;然后分别遍历两段链表&#xff0c;将对应位数的值相加并存入新链表&#xff0c;再遍历新链表&#xff0c;将节点值val>10的减10&#xff0c;并且其下一节点值val1。需要注意最后一位节点进位是将下一位节点值设…

spring-boot-maven-plugin springboot打包配置问题

目录 一、打包可执行jar 二、打包非可执行jar 三、两种jar对比 springboot项目的pom文件中一般都配置了spring-boot-maven-plugin打包插件。 <!-- 打包插件依赖 --><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-b…

Python逆向:pyc字节码转py文件

一、 工具准备 反编译工具&#xff1a;pycdc.exe 十六进制编辑器&#xff1a;010editor 二、字节码文件转换 在CTF中&#xff0c;有时候会得到一串十六进制文件&#xff0c;通过010editor使用查看后&#xff0c;怀疑可能是python的字节码文件。 三、逆向反编译 将010editor得到…

9、组合模式(结构性模式)

组合模式又叫部分整体模式&#xff0c;它创建了对象组的树形结构&#xff0c;将对象组合成树状结构&#xff0c;以一致的方式处理叶子对象以及组合对象&#xff0c;不以层次高低定义类&#xff0c;都是结点类 一、传统组合模式 举例&#xff0c;大学、学院、系&#xff0c;它们…

优秀的前端框架vue,原理剖析与实战技巧总结【干货满满】

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属的专栏&#xff1a;前端零基础教学&#xff0c;实战进阶 景天的主页&#xff1a;景天科技苑 文章目录 Vuevue.js库的基本使用vue.js的M-V-VM思…

flutter入门

本文真对 Flutter 的技术特性&#xff0c;做了一些略全面的入门级的介绍&#xff0c;如果你听说过Flutter&#xff0c;想去了解它&#xff0c;但是又不想去翻厚厚的API&#xff0c;那么本文就是为你准备的。 随着纯客户端到Hybrid技术&#xff0c;到RN&Weex&#xff0c;再…

24计算机考研调剂 | 东北石油大学

东北石油大学智能物探团队招生宣传 考研调剂招生信息 学校:东北石油大学 专业:工学->地质资源与地质工程->矿产普查与勘探 年级:2024 招生人数:2 招生状态:正在招生中 联系方式:********* (为保护个人隐私,联系方式仅限APP查看) 补充内容 团队介绍&#xff1a; …

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的血细胞智能检测与计数(深度学习模型+UI界面代码+训练数据集)

摘要&#xff1a;开发血细胞智能检测与计数系统对于疾病的预防、诊断和治疗具有关键作用。本篇博客详细介绍了如何运用深度学习构建一个血细胞智能检测与计数系统&#xff0c;并提供了完整的实现代码。该系统基于强大的YOLOv8算法&#xff0c;并对比了YOLOv7、YOLOv6、YOLOv5&a…

C++顺序结构实例

1.计算浮点数相除的余数 计算两个双精度浮点数a和b相除的余数,a和b都是双精度浮点数。这里的余数r的定义是: a=k * 吧+r,其中k是整数,0<=r<b。 输入 一行,包括两个双精度浮点数a和b 输出 一行,a➗b的余数 样例输入 73.263 0.9973 样例输出 0.4301 #i…