大数据导论学习

1.概念

1.数据是什么?

数据是指对客观事件进行记录并可以鉴别的符合,是对客观事物的性质,状态以及相互关系等进行记载的物理符号或这些物理符号的组合,它是可以识别的,抽象的符合。

它不仅是狭义上的数字,还可能是具有一定意义的文字,字母,数字符号的组合,图形,视频,音频等,也是客观事物的属性,数量,位置及其相互关系的抽象表示。

2.数据如何产生?

对客观事物的计量和记录产生数据。

3.企业数据分析方向

1.现状分析

分析当下的数据,现阶段的整体情况,各个部分的构成占比,发展,变动。

实时分析(Real Time Processing | Streaming):面向当下,分析实时产生的数据;所谓的实时是指从数据产生到数据分析到数据应用的时间间隔很短,可细分秒级,毫秒级。也叫流处理。

2.原因分析

分析过去的数据,某一现状为什么发生,确定原因,做出调整优化

离线分析(Batch Processing):面向过去,面向历史,分析已有的数据,在时间维度明显成批次性变化。一周一分析(T+7),一天一分析(T+1),所以也叫批处理。

3.预测分析

结合数据预测未来,结合已有数据预测未来发展趋势。

机器学习(Machine Learning):基于历史数据和当下产生的实时数据预测未来发生的事情。侧重于数学算法的运用,如分类,聚类,关联,预测。

4.数据分析步骤

1.明确分析目的和思路

2.数据收集

数据从无到有的过程:比如传感器收集气象数据,埋点收集用户行为数据。

数据传输搬运的过程:比如采集数据库到数据分析平台。

3.数据预处理

对收集到的数据进行加工处理,形成适合数据分析的样式,主要包含数据清洗,数据转化,数据提取,数据计算

数据预处理可以保证数据的一致性和有效性,让数据变成干净规整的结构化数据。

干净规整的结构化数据:专业来说就是二维表的数据,行列对应;即格式清晰,利于解读的数据。

4.数据分析

5.数据展现

又称为数据可视化,指的是分析结果图表展示

6.报告撰写

5.大数据定义

无法在一定时间范围内用常规软件工具进行捕捉,管理和处理的数据集合。

大数据5V特征

1.Volume

数据体量大,采集,存储,计算数据量大

2.Variety

种类,来源多样化。结构化,半结构化,非结构化。日志文本,图片,音频,视频等。

3.Value

低价值密度。海量信息但是价值密度低,深度复杂的挖掘分析需要机器学习参与

5.Velocity

速度快。数据增长,获取,处理速度快。

5.Veracity

数据的质量。数据的准确性,可信赖度。

6.分布式与集群

分布式:每台机器上部署不同组件

集群:每台机器上部署相同组件

2.Apache Hadoop

1.概念

用java实现,开源,允许用户使用简单的编程模型实现跨机器集群对海量数据进行分布式计算处理。

1.Hadoop核心组件

        Hadoop HDFS(分布式文件存储系统):解决海量数据存储

        Hadoop YARN(集群资源管理和任务调度框架):解决资源任务调度

        Hadoop MapReduce(分布式计算框架):解决海量数据计算

2.Hadoop现状

        HDFS作为分布式文件存储系统,处在生态圈的底层与核心地位

        YARN作为分布式通用的集群资源管理系统和任务调度平台,支撑各种计算引擎运行,保证了Hadoop地位

        MapReduce作为大数据生态圈第一代分布式计算引擎,由于自身设计的模型所产生的弊端,导致企业一线几乎不再直接使用MapReduce进行编程处理,但是很多软件的底层依然在使用MapReduce引擎来处理数据。

3.Hadoop特性优点

1.扩容能力(scalability):Hadoop是在可用的计算机集群间分配数据并完成计算任务的,这些集群可方便灵活的方式扩展到数以千计的节点。

2.成本低(Economical):Hadoop集群允许通过部署普通廉价的机器组成集群来处理大数据,以至于成本很低。看重的是集群整体能力。

3.效率高(efficiency):通过并发数据,Hadoop可以在节点之间动态并行的移动数据,使得速度非常快。

4.可靠性(reliability):能自动维护数据的多份复制,并且在任务失败后能自动的重新部署(redeploy)计算任务。所以Hadoop的按位存储和处理数据的能力值得人们信赖。

4.Hadoop集群整体概述

Hadoop集群包括两个集群:HDFS集群,YARN集群

两个集群逻辑上分离,通常物理上在一起

两个集群互相之间没有依赖,互不影响。某些角色进程往往部署在同一台物理机器上

两个集群都是标准的主从架构集群

5.HDFS集群(分布式存储)

主角色:NameNode

从角色:DataNode

主角色辅助角色:SecondaryNameNode

6.YARN集群(资源管理,调度)

主角色:ResouceManager

从角色:NadeManager

2.安装部署

1.集群角色规划

角色规划的准则

        根据软件工作特性和服务器硬件资源情况合理分配

角色规划注意事项

        资源上有抢夺冲突的,尽量不要部署在一起

        工作上需要相互配合的,尽量部署在一起

2.服务器基础环境准备

1.每台服务器配置主机名(唯一)
 cat /etc/hostname
2.设置hosts映射
 cat /etc/hosts
3.防火墙关闭
# 关闭防火墙
systemctl stop firewalld.service
# 禁止防火墙自动启动
systemctl disable firewalld.service
4.ssh免密登录
# 生成公钥,私钥
ssh-keygen
# 设置免密登录,节点名需要在hosts里面配置了映射才能直接用名称,负责用ip,设置之后就可以直接使用ssh命令跨节点了
ssh-copy-id node1
5.集群时间同步
yum -y install ntpdate
ntpdate ntp4.aliyun.com
6.创建统一工作目录(所有机器)
mkdir -p /export/server/  # 软件安装路径
mkdir -p /export/data/    # 数据存储路径
mkdir -p /export/software/# 安装包存放路径
7.JDK安装
tar -zxvf jdk-8u241-linux-x64.tar.gz 
# 设置环境变量
vim /etc/profile

export JAVA_HOME=/export/server/jdk1.8.0_241
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

# 重新加载环境变量
source /etc/profile

#拷贝给其它节点
 scp -r /export/server/jdk1.8.0_241/ root@node3:/export/server/
8.上传,解压Hadoop安装包
tar -zxvf hadoop-3.3.0-Centos7-64-with-snappy.tar.gz 
9.修改配置文件

hadoop-env.sh文件

vim hadoop-env.sh 

    #文件最后添加
    export JAVA_HOME=/export/server/jdk1.8.0_241
    
    export HDFS_NAMENODE_USER=root
    export HDFS_DATANODE_USER=root
    export HDFS_SECONDARYNAMENODE_USER=root
    export YARN_RESOURCEMANAGER_USER=root
    export YARN_NODEMANAGER_USER=root 

core-site.xml 文件 

vim core-site.xml 

<!-- 设置默认使用的文件系统 Hadoop支持file、HDFS、GFS、ali|Amazon云等文件系统 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://node1:8020</value>
    </property>
    
    <!-- 设置Hadoop本地保存数据路径 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/export/data/hadoop-3.3.0</value>
    </property>
    
    <!-- 设置HDFS web UI用户身份 -->
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>root</value>
    </property>
    
    <!-- 整合hive 用户代理设置 -->
    <property>
        <name>hadoop.proxyuser.root.hosts</name>
        <value>*</value>
    </property>
    
    <property>
        <name>hadoop.proxyuser.root.groups</name>
        <value>*</value>
    </property>
    
    <!-- 文件系统垃圾桶保存时间 -->
    <property>
        <name>fs.trash.interval</name>
        <value>1440</value>
    </property>

 hdfs-site.xml文件

vim hdfs-site.xml


    <!-- 设置SNN进程运行机器位置信息 -->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>node2:9868</value>
    </property>

 mapred-site.xml文件

vim mapred-site.xml

<!-- 设置MR程序默认运行模式: yarn集群模式 local本地模式 -->
    <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
    </property>
    
    <!-- MR程序历史服务地址 -->
    <property>
      <name>mapreduce.jobhistory.address</name>
      <value>node1:10020</value>
    </property>
     
    <!-- MR程序历史服务器web端地址 -->
    <property>
      <name>mapreduce.jobhistory.webapp.address</name>
      <value>node1:19888</value>
    </property>
    
    <property>
      <name>yarn.app.mapreduce.am.env</name>
      <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
    </property>
    
    <property>
      <name>mapreduce.map.env</name>
      <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
    </property>
    
    <property>
      <name>mapreduce.reduce.env</name>
      <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
    </property>

yarn-site.xml文件

vim yarn-site.xml

<!-- 设置YARN集群主角色运行机器位置 -->
    <property>
    	<name>yarn.resourcemanager.hostname</name>
    	<value>node1</value>
    </property>
    
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    
    <!-- 是否将对容器实施物理内存限制 -->
    <property>
        <name>yarn.nodemanager.pmem-check-enabled</name>
        <value>false</value>
    </property>
    
    <!-- 是否将对容器实施虚拟内存限制。 -->
    <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
    </property>
    
    <!-- 开启日志聚集 -->
    <property>
      <name>yarn.log-aggregation-enable</name>
      <value>true</value>
    </property>
    
    <!-- 设置yarn历史服务器地址 -->
    <property>
        <name>yarn.log.server.url</name>
        <value>http://node1:19888/jobhistory/logs</value>
    </property>
    
    <!-- 历史日志保存的时间 7天 -->
    <property>
      <name>yarn.log-aggregation.retain-seconds</name>
      <value>604800</value>
    </property>

 workers文件

vim workers

#写入集群节点ip或映射
10.将hadoop添加到环境变量
vim /etc/profile

  export HADOOP_HOME=/export/server/hadoop-3.3.0
  export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

source /etc/profile
 11.验证hadoop是否安装成功
hadoop
12.NameNode format(格式化操作)

首次启动HDFS是,必须对其进行格式化操作

format本质上是初始化工作,进行HDFS清理和准备工作

只能执行一次,会造成数据丢失,hsfs集群主从角色之间互不识别,需要通过删除所有机器hadoop.tmp.dir目录重新format解决 

hdfs namenode -format

 13.Hadoop集群启停命令

在主节点上,使用软件自带的shell脚本可以一键启停,前提是配置好机器之间的SSH免密登录和workers文件

HDFS集群

        start-dsf.sh

        stop-dfs.sh

YARN集群

        start-yarn.sh

        stop-yarn.sh

Hadoop集群

        start-all.sh

        stop-all.sh

检验是否启动成功

        jps命令

Hadoop启动日志路径:/export/server/hadoop-3.3.0/logs/

14.Hadoop浏览器页面访问路径

HDFS集群:http://nameNode节点ip:9870

YARN集群:http://resourcemanager节点ip:8088

15.Hadoop安装包目录结构
目录说明
binHadoop最基本的管理脚本和使用脚本的目录,这些脚本实是sbin目录下管理脚本的基础实现,用户可以直接使用这些脚本管理和使用Hadoop
etcHadoop配置文件所在的目录
include对外提供的编程库头文件(具体动态库和静态库在lib目录中),这些头文件均是用C++定义的,通常用于C++程序访问HDFS或者编写MapReduce程序
lib该目录包含了Hadoop对外提供的编程动态库和静态库,与include目录中的头文件结合使用
libexec各个服务对用的shell配置文件所在的目录,可用于配置日志输出,启动参数(比如JVM参数)等基本信息
sbinHadoop管理脚本所在的目录,主要包含HDFS和YARN中各类服务的启动/关闭脚本
shareHadoop各个模块编译后的jar包所在的目录,官方自带示例

3.文件系统

文件系统是一种存储和组织数据的方法,实现了数据的存储,分级组织,访问和获取等操作,使得用户对文件访问和查找变得容易。

文件系统使用树形目录的抽象逻辑概念代替了硬盘等物理设备使用数据块的概念,用户不必关心数据底层存在硬盘哪里,只需要记住这个文件的所属目录和文件名即可。

文件系统通常使用硬盘和光盘这样的存储设备,并维护文件在设备中的物理位置。

1.传统文件系统

        通常指单机的文件系统,也就是底层不会横跨多态机器实现。

三个特征:

        1.带有抽象的目录树结构,树都是从/根目录开始往下蔓延

        2.树中节点分为两类:目录和文件

        3.从根目录开始,节点路径具有唯一性

两个概念:

        数据:指存储的内容本身,比如文件,视频,图片等,这些数据底层最终是存储在磁盘等存储介质上的,一般用户无需关心。

        元数据(metadata):解释性数据,记录数据的数据。一般指文件大小,最后修改时间,底层存储位置,属性,所属用户,权限等信息。

2.分布式存储系统

核心属性

        分布式存储  无线扩展支持海量数据存储(加机器)

        元数据记录  快速定位文件位置便于查找

        分块存储   针对块并行操作提高效率

        副本机制   冗余存储保障数据安全

3.HDFS(Hadoop Distributed File System)

Hadoop分布式文件系统,作为大数据生态圈最底层的分布式存储服务而存在。

HDFS主要是解决大数据如何存储问题的。分布式意味着是HDFS是横跨在多台计算机上的存储系统。能够在普通硬件上运行的分布式文件系统,是高度容错的,适应于具有大数据集的应用程序,非常适于存储大型数据。使用多台计算机存储文件,并且提高统一的访问接口,像是访问一个普通文件系统一样使用分布式文件系统。

适合场景

        大文件,数据流式访问,一次写入多次读取,低成本部署,廉价PC,高容错

不适合场景

        小文件,数据交互式访问,频繁任意修改,低延迟处理

1.重要特性

1.主从架构

        HDFS集群是标准的master/slave主从架构集群。

        一般是一个HDFS集群是有一个Namenode和一定数目的Datanode组成

        Namenode是HDFS主节点,Datanode是HDFS从节点,两种角色各司其职,共同协调完成分布式的文件存储服务

2.分块存储

        HDFS中的文件在物理上是分块存储(block)的,默认大小是128M(134217728),不足128M则本身就是一块

        块的大小可以通过配置参数来规定,参数位于hdfs-default.xml中:dfs.blocksize

3.副本机制

       文件的所有block都会有副本。副本系数可以在文件创建的时候指定,也可以在之后通过命令改变

        副本数由参数dfs.replication控制,默认是3,连同本身总共3份。

4.元数据管理

Namenode元数据两种类型

1.文件自身属性信息

        文件名称,权限,修改时间,文件大小,复制因子,数据块大小

2.文件块位置映射信息

        记录文件块和DataNode之间的映射信息,即哪个块位于哪个节点上。

5.namespace

        HDFS支持传统的层次型文件组织结构。用户可以创建目录,然后将文件保存在这些目录里。文件系统名字空间的层次结构和大多数现有的文件系统类似:用户可以创建,删除,移动或重命名文件。

        Namenode负责维护文件系统的namespace名称空间,任何对文件系统名称空间或属性的修改都将被Namenode记录下来

        HDFS会给客户端提高一个统一的抽象目录树,客户端通过路径来访问文件。

6.数据块存储

        文件的各个block的具体存储管理由DataNode节点承担

        每一个block都可以在多个DataNode上存储

4.HDFS shell命令操作

命令行界面(command-line interface, CLI):指用户通过键盘输入指令,计算机接收到指令后,予以执行的一种人机交互方式。

Hadoop提供了文件系统的shell命令行客户端:hadoop fs [generic options]

1.文件系统协议

        HDFS Shell CLI支持操作多种文件系统,包括本地文件系统(file:///),分布式文件系统(hdfs://nn:8020)等

        具体操作的是什么文件系统取决于命令中文件路径URL中的前缀协议

        如果没有指定前缀,则将会读取环境变量中的fs.defaultFS属性,以该属性值作为默认文件系统

# 操作本地文件系统
hadoop fs -ls fiel:///
# 操作HDFS分布式文件系统
hadoop fs -ls hdfs://node1:8020/
# 直接根目录,没有指定协议,将加载读取fs.defaultFS值
hadoop fs -ls /

三种命令

        hadoop dfs:只能操作HDFS文件系统(包括于Local FS间的操作),已经Deprecated,不支持了

        hdfs dfs: 只能操作HDFS文件系统相关(包括与Local FS间的操作),常用

        hadoop fs:可操作任意文件系统,不仅仅是hdfs文件系统,使用范围更广

2.常用命令

1.创建文件夹

hadoop fs -mkdir [-p] path

2.查看指定目录下的内容

hadoop fs -ls [-h] [-R] path

        -h 人性化显示文件size

        -R 递归查看指定目录及其子目录

3.上传文件到HDFS指定目录下

hadoop fs -put [-f] [-p] 本地文件 目标目录

        -f 覆盖目标文件

        -p 保留访问和修改时间,所有权和权限

hadoop fs -put a.txt /test

hadoop fs -put file:///etc/profile hdfs://node1:8020/test

4.查看HDFS文件内容

hadoop fs -cat 文件

读取指定文件全部内容,显示在标准输出控制台

5.下载HDFS文件

hadoop fs -get [-f] [-p] 目标文件 本地目录

下载文件到本地文件系统指定目录

        -f 覆盖目标文件

        -p 保留访问和修改时间,所有权和权限

6.拷贝HDFS文件

hadoop fs -cp [-f] 目标文件 存放目录

        -f 覆盖目标文件

7.追加数据到HDFS文件中

hadoop fs -appendToFile 本地文件列表 目标文件

将所有给定本地文件的内容追加到给定目标文件中,如果目标文件不存在,将创建该文件

8.HDFS数据移动操作

hadoop fs -mv 目标文件 目标目录

移动文件到指定文件夹下

4.HDFS集群角色及职责

1.主角色 namenode

NameNode是Hadoop分布式文件系统的核心,架构中的主角色

NameNode维护和管理文件系统元数据,包括名称空间目录树结构,文件和块的位置信息,访问权限等信息。

基于此,NameNode成为了访问HDFS的唯一入口。

NameNode内部通过内存和磁盘文件两种方式管理元数据

其中磁盘上的元数据文件包括Fsimage内容元数据镜像文件和edits log(Journal)编辑日志

2.从角色 datanode

DataNode是Hadoop HDFS中的从角色,负责具体的数据块存储。

DataNode的数量决定了HDFS集群的整体数据存储能力。通过和NameNode配合维护着数据块

3.主角色辅助角色 secondarynamenode

Secondary NameNode充电NameNode的辅助节点,但不能替代NameNode

主要是帮助主角色进行元数据文件的合并动作

4.namenode职责

NameNode仅存储HDFS的元数据:文件系统中所有文件的目录树,并跟踪整个集群的文件,不存储实际数据。

NameNode知道HDFS中任何给定文件的块列表及其位置。使用此信息NameNode知道如何从块中构建文件。

NameNode不持久化存储每个文件中各个块所在的datanode的位置信息,这些信息会在系统启动时从DataNode重建

NameNode是Hadoop集群中的单点故障(局部出错会导致全局出错)

NameNode所在机器通常会配置有大量内存(RAM)

5.datanode职责

DataNode负责最终数据块block的存储。是集群的从角色,也称为Slave

DataNode启动时,会将自己注册到NameNode并汇报自己负责持有的块列表

当某个DataNode关闭时,不会影响数据的可用性。NameNode将安排由其它DataNode管理的块进行副本复制。

DataNode所在机器通常配置有大量的硬盘空间,因为实际数据存储在DataNode中。

5.HDFS写数据流程

1.Pipeline管道

        HDFS在上传文件写数据过程中采用的一种数据传输方式

        客户端将数据块写入第一个数据节点,第一个数据节点保存数据之后再将块复制到第二个数据节点,后者保存后将其复制到第三个数据节点。

        数据以管道的方式,顺序的沿着一个方向传输,这样能够充分利用每个机器的带宽,避免网络瓶颈和高延迟时的连接,最小化推送所有数据的延时。

        在线性推送模式下,每台机器所有的出口带宽都用于以最快的速度传输数据,而不是在多个接收者之间分配带宽。

2.ACK应答响应

        ACK(Acknowledge character)确认字符,在数据通信中,接收方发给发送方的一种传输类控制字符,表示发来的数据以确认接收无误。

        在pipeline管道传输数据的过程中,传输的反方向会进行ACK检验,确保数据传输安全

3.默认3副本存储策略

默认副本存储策略是由BlockPlacementPolicyDefault类指定

第一个副本:优先选择客户端本地,否则随机

第二个副本:不同于第一块副本的不同机架

第三个副本:第二块副本相同机架不同机器

4.流程

1.HDFS客户端创建对象实例DistributedFileSystem,该对象中封装了与HDFS文件系统操作的相关方法。

2.调用DistrubutedFileSystem对象的create()方法,通过RPC请求NameNode创建文件。

NameNode执行各种检查判断:目标文件是否存在,父目录是否存在,客户端是否具有创建文件的权限。检查通过,NameNode就会为本次请求记下一条记录,返回FSDataOutputStream输出流对象给客户端用于写数据。

3.客户端通过FSDataOutputStream输出流开始写入数据

4.客户端写入数据时,将数据分成一个个数据包(packet 默认64k),内部组件DataSreamer请求NameNode挑选出适合存储数据副本的一组DataNode地址,默认是3副本存储。

DataStreamer将数据包流式传输到pipeline的第一个DataNode,该DataNode存储数据包并将它发送到pipeline的第二个DataNode。同样,第二个DataNode存储数据包并且发送给第三个(最后一个) DataNode。

5.传输的反方向上,会通过ACK机制校验数据包传输是否成功

6.客户端完成数据写入后,在FSDataOutputStream输出流上调用close()方法关闭。

7.DistributedFileSystem联系NameNode告知其文件写入完成,等待NameNode确认。

因为namenode已经知道文件由哪些块组成(DataStream请求分配数据块),因此仅需等待最小复制块即可成功返回。最小复制是由参数dfs.namenode.replication.min指定,默认是1。

3.Hadoop MapReduce

1.MapReduce思想

核心:先分在合,分而治之。        把一个复杂的问题,按照一定的“分解”方法分为等价的规模较小的若干部分,然后逐个解决,分别找出各部分的结果,然后把各部分的结果组成整个问题的最终结果。

Map表示第一阶段,负责“拆分”:即把复杂的任务分解为若干个“简单的子任务”来并行处理。可以进行拆分的前提是这些小任务可以并行计算,彼此间几乎没有依赖关系。

Reduce表示第二阶段,负责“合并”:即对map阶段的结果进行全局汇总。

2.分布式计算

分布式计算是一种计算方法,和集中式计算是相对的。

随着计算技术的发展,有些应用需要非常巨大的计算能力才能完成,如果采用集中式计算,需要耗费相当长的时间来完成。

分布式计算将该应用分解成许多小的部分,分配给多台计算机进行处理。节约整体计算时间,提高计算效率。

Hadoop MapReduce是一个分布式计算框架。

3.MapReduce特点

1.易于编程

MapReduce框架提供了用于二次开发的接口,简单的实现一些接口,就可以完成一个分布式程序。任务计算交给计算框架去处理,将分布式程序部署到hadoop集群上运行,集群节点可以扩展到成百上千个。

2.良好的扩展性

当计算机资源不够时,可以通过增加机器来扩展它的计算能力。可以随节点数目增长保持近似于线性的增长。

3.高容错性

Hadoop集群式分布式搭建和部署的,如何单一机器节点宕机了,可以把上面的计算任务转移到另一个节点上运行,不影响整个作业任务的完成。

4.适合海量数据的离线处理

可以处理GB,TP,PB级别的数据。

5.实时计算性能差

MapReduce主要应用于离线作业,无法做到秒级或者亚秒级的数据响应。

6.不能进行流式计算

流式计算特点是数据是源源不断的计算,并且数据是动态的,而MapReduce作为一个离线计算框架,主要是针对静态数据集的,数据是不能动态变化的。

7.MapReduce实例进程

一个完整的MapReduce程序在分布式运行时有三类

MRAppMaster:负责整个MR程序的过程调度及状态协调

MapTask:负责map阶段的整个数据处理流程

ReduceTask:负责reduce阶段的整个数据处理流程

阶段组成:

一个MapReduce编程模型中只能包含一个Map阶段和一个Reduce阶段,或者只有Map阶段。

不能有诸如多个map阶段,多个reduce阶段的情景出现

如果业务逻辑非常复杂,只能多个MapReduce程序串行运行

MapReduce数据类型:

整个MapReduce程序中,数据都是以key-value键值对的形式流转的

MapReduce内置了很多默认属性,比如排序,分组等,都和数据的k有关,所以kv的数据类型确定及其重要。

4.MapReduce官方示例

一个最终完整版本的MR程序需要用户编写的代码和Hadoop自己实现的代码整合在一起才可以。

其中用户负责map,reduce两个阶段的业务问题,Hadoop负责底层所有的技术问题

示例程序路径:/export/server/hadoop-3.3.0/share/hadoop/mapreduce

示例程序:hadoop-mapreduce-examples-3.3.0.jar

MapReduce程序提交命令:[hadoop jar|yarn jar] hadoop-mapreduce-examples-3.3.0.jar 参数

        第一个参数:pi表示MapReduce程序执行圆周率计算任务

        第二个参数:用于指定map阶段运行的任务task次数,并发度

        第三个参数:用于指定每个map任务取样的个数

提交到YARN集群上分布式执行

5.Map执行流程

1.把输入目录下文件按照一定的标准逐个进行逻辑切片,形成切片规划。默认每个切片128M,每一个切片由一个MapTask处理,有多少个切片就有多少个MapTask。

2.对切片中的数据按照一定的规则读取解析返回<key, value>对。默认是按行读取。

3.调用Mapper类中的map方法处理数据。每读取解析出来一个<key,value>,调用一次map方法。

4.按照一定的规则对Map输出的键值对进行分区partition。默认不分区,因为只有一个reducetask,分区的数量就是reducetask运行的数量。

5.Map输出数据写入内存缓冲区,达到比例溢出到磁盘上。溢出spill的时候根据key进行排序sort,默认根据key字典序排序。

6.对所有溢出文件进行最终的merge合并,成为一个文件。

6.Reduce阶段流程

1.ReduceTask会主动从MapTask复制拉取属于需要自己处理的数据。

2.把拉取来数据,全部进行合并merge,即把分散的数据合并成一个大的数据。再对合并后的数据排序。

3.对排序后的键值对调用reduce方法。键相等的键值对调用一次reduce方法。最后把这些输出的键值对写入到HDFS文件中。

7.Shuffle机制

shuffle是一个过程

1.概念

Shuffle本意为洗牌,即有序到无序,而在MapReduce中,Sheffle为洗牌的逆过程,指将map端的无规则输出按指定的规则"打乱"成具有一定规则的数据,以便reduce端接收处理。

一般把从Map产生输出开始到Reduce取得数据作为输入之前的过程称作shuffle

2.Map端Shuffle

Collect阶段:将MapTask的结果收集输出到默认大小为100M的环形缓冲区,保存之前会对key进行分区的计算,默认Hash分区。

Spill阶段:当内存中的数量达到一定的阈值的时候,就会将数据写入本地磁盘,在将数据写入磁盘之前需要对数据进行一次排序的操作,如果配置了conbiner,还会将有相同分区号和key的数据进行排序。

Merge阶段:把所有溢出的临时文件进行一次合并操作,以确保一个MapTask最终只产生一个中间数据文件。

3.Reduce端shuffle

Copy阶段:ReduceTask启动Fetcher线程到已经完成MapTask的节点上复制一份属于自己的数据。

Merge阶段:在ReduceTask远程复制数据的同时,会在后台开启两个线程对内存到本地的数据文件进行合并操作。

Sort阶段:在对数据进行合并的同时,会进行排序操作,由于MapTask阶段已经对数据进行了局部的排序,ReduceTask只需保证Copy的数据的最终整体有效即可。

4.Shuffle弊端

Shuffle是MapReduce的核心,但是Shuffle中频繁涉及到数据在内存,磁盘之间的多次往复,导致了MapReduce计算速度慢。

4.Hadoop YARN

Yet Another Resource Negotiator: 另一种资源协调者

1.概念

是一种新的Hadoop资源管理器,是一个通用资源管理系统调度平台,可为上层应用提供统一的资源管理和调度。

资源管理系统:集群的硬件资源,和程序运行相关,比如内存,CPU等。

调度平台:多个程序同时申请计算资源如何分配,调度的规则/算法。

通用:不仅仅支持MapReduce程序,理论上支持各种计算程序。只关心资源的管理。

可以把YARN理解为相当于一个分布式的操作系统平台,而MapReduce等技术程序则相当于运行于操作系统上的应用程序,YARN为这些程序提供运算所需的资源。

2.Hadoop YARN架构,组件

1.架构

物理集群层面: ResourceManager, NodeManager

App层面: ApplicationMaster(App Mstr)

Client

Container容器(资源的抽象),逻辑隔离

2.3大组件

ResourceManager(RM)

YARN集群中的主角色,决定系统中所有应用程序之间资源分配的最终权限,即最终仲裁者。接收用户的作用提交,并通过NM分配,管理各个机器上的计算资源。

NodeManager(NM)

YARN中的从角色,一台机器上一个,负责管理本机器上的计算资源。根据RM命令,启动Container容器,监视容器的资源使用情况。并且向RM主角色汇报资源使用情况。

ApplicationMaster(AM)

用户提交的每个应用程序均包含一个AM。应用程序的老大,负责程序内部各阶段的资源申请,监督程序的执行情况。 

3.程序提交交互流程

MR作业提交  Client --> RM

资源的申请   MrAppMaster --> RM

MR作业状态汇报   Container(Map|Reduce Task) --> Container(MrAppMaster)

节点的状态汇报   NM --> RM

整体概述

        当用户向YARN中提交一个应用程序后,YARN将分两个阶段运行该应用程序

        第一个阶段是客户端申请资源启动运行本次程序的ApplicationMaster

        第二个阶段是由ApplicationMaster根据本次程序内部具体情况,为它申请资源,并监控它的整个运行过程,直到运行完成。

具体流程

        1.用户提供客户端向YARN中的ResourceManager提交应用程序(比如hadoop jar提交MR程序)

        2.ResouceManager为该应用程序分配第一个Container(容器),并于对应的NodeManager通信,要求它在这个Container中启动这个应用程序的ApplicationMaster。

        3.ApplicationMaster启动成功之后,首先向ResourceManager注册并保持通信,这样用户可以之间通过ResouceManager查看应用程序的运行状态。

        4.AM为本次程序内部的各个Task任务向RM申请资源,并监控它的运行状态。

        5.一旦ApplicationMaster申请到资源后,便于对应的NodeManager通信,要求它启动任务。

        6.NodeManager为任务设置好运行环境后,将任务启动命令写到一个脚本中,并通过运行该脚本启动任务。

        7.各个任务通过某个RPC协议向ApplicationMaster汇报自己的状态和进度,以让ApplicationManager随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务。在应用程序运行过程中,用户可以随时通过RPC向Application查询应用程序的当前运行状态。

        8.应用程序运行完成后,ApplicationMaster向ReourceManager注销并关闭自己。

4.YARN资源调度器scheduler

Scheduler完全专用于调度作业,无法跟踪应用程序的状态

yarn-site.xml中的yarn.resourcemanager.scheduler.class进行配置

1.FIFO Schelduler(先进先出调度器)

先进先出,先提交的先运行。不考虑优先级和范围,适用于负载较低的小规模集群。

拥有一个控制全局的队列queue,默认queue名称为default,该调度器会获取当前集群上所有的资源信息作用于这个全局queue

优点:无需配置,先到先得,易于执行

缺点:任务的优先级不会变高,高优先级的作用需要等待。不适合共享集群

2.Capacity Scheduler(容量调度,默认)

允许多个组织共享整个集群资源,每个组织可以获得集群的一部分计算能力。通过为每个组织分配专门的队列,然后再为每个队列分配一定的集群资源,这样整个集群就可以通过设置多个队列的方式给多个组织提供服务了。在队列内部采用先进先出策略。

该调度器以队列为单位划分资源。

优势:

        1.层次化的队列设计(Hierachical Queues)

        层次化的管理,可以更容易,更合理分配和限制资源的使用。

        2.容量保证(Capacity Guarantees)

        每个队列上都可以设置一个资源的占比,保证每个队列都不会占用整个集群的资源。

        3.安全(Security)

        每个队列有严格的访问控制。用户只能向自己的队列里面提交任务,而且不能修改或者访问其它队列的任务。

        4.弹性分配(Elasticity)

        空闲的资源可以被分配给任何队列。当多个队列出现争用的时候,则会按照权重比例进行平衡。

3.Fair Scheduler(公平调度)

使所有应用在平均情况下随着时间的流逝可以获得相等的资源份额。可以在多个队列间工作,允许资源共享和抢占。

优势:

        1.分层队列

        队列可以按照层次结构排列以划分资源,并可以配置权重以按特定比例共享集群

        2.基于用户或组的队列映射:可以根据提交任务的用户名或组来分配队列。如果任务指定了一个队列,则在该队列中提交任务。

        3.资源抢占

        根据应用的配置,抢占和分配资源可以是友好的或是强制的。默认不启用资源抢占。

        4.保证最小配额

        可以设置队列最小资源,允许将保证的最小份额分配给队列,保证用户可以启动任务。当队列不能满足最小资源时,可以从其它队列抢占。当队列资源使用不完时,可以给其它队列使用。确保某些用户,组或生成应用始终获得足够的资源。

        5.允许资源共享

        即当一个应用运行时,如果其它队列没有任务执行。则可以使用其它队列,当其它队列有应用需要资源时再将占用的队列释放出来。所有的应用都从资源队列中分配资源。

        6.默认不限制每个队列和用户可以同时运行应用的数量

        可以配置来选择队列和用户并行执行的应用数量。选择并行执行应用数量不会导致任务提交失败,超出的应用会在队列中等待。

5.数据仓库 Apache Hive

1.概念

数据仓库(Data Warehouse, 数仓,DW):是一个用于存储,分析,报告的数据系统。数据仓库的目的是构建面向分析的集成化数据环境,分析结果为企业提供决策支持。

数据仓库本身并不“生产”任何数据,其数据来源于不同外部系统。

同时数据仓库自身也不需要“消费”任何的数据,其结果开放给各个外部应用使用。

OLTP:联机事务处理系统,执行联机事务处理。

我们把面向分析,支持分析的系统称之为OLAP(联机分析处理)系统,数据仓库是OLAP系统的一种实现。

数仓主要特征:

1.面向主题(Subject-Oriented)

        主题是一个抽象的概念,是较高层次上数据综合,归类并进行分析利用的抽象。在逻辑意义上,对应企业中某一宏观分析领域所涉及的分析对象。

2.集成性(Integrated)

        主题相关的数据通常会分布在多个操作型系统中,彼此分散,独立,异构。需要集成到数仓主题下。要经过统一与综合,对数据进行抽取,清理,转换和汇总。要统一源数据中所有矛盾之处,如字段的同名异义,异名同义,单位不统一,字长不统一等。要进行数据综合和计算。

3.非易失性(Non-Volatile)

        也叫非易变性。数据仓库是分析数据的平台,而不是创造数据的平台。数据进入数据仓库后,便稳定且不会改变。

        数据仓库的数据反映的是一段相当长的时间内历史数据的内容,数据一般被较长时间保留。

        数据仓库中一般有大量的查询操作,但修改和删除操作很少。

4.时变性(Time-Variant)

        数据仓库的数据需要随着数据更新,以适应决策的需要。

数据仓库主流开发语言-SQL

结构化查询语言(Structured Query Language, SQL)

结构化数据:也叫行数据,由二维表结构来逻辑表达和实现的数据。严格的遵循数据格式与长度规范,主要通过关系型数据库进行存储和管理。

什么是Hive

        Apache Hive是一款建立在Hadoop之上的开源数据仓库系统,可以将存储在Hadoop文件中的结构化,半结构化数据文件映射为一张数据库表,基于表提供了一种类似于SQL的查询模型,称为Hive查询语言(HQL),用于访问和分析存储在Hadoop文件中的大型数据集。

        Hive核心是将HQL转换为MapReduce程序,然后将程序提交到Hadoop集群执行。

        Hive利用HDFS存储数据,利用MapReduce查询分析数据。用户专注于编写HQL,Hive负责转换为MapReduce程序完成对数据的分析。

Hive组件

1.用户接口

        包括CLI,JDBC/ODBC,WebGUI。其中,CLI(command line interface)为shell命令行。Hive中的Thrift服务器允许外部客户端通过网络与Hive进行交互,类似于JDBC或ODBC协议。WebGUI是通过浏览器访问Hive。

2.元数据存储

        通常是存储在关系数据库如mysql/derby中。Hive中的元数据包括表的名字,表的列和分区及其属性(是否为外部表等),表的属性,表的数据所在目录等。

3.Driver驱动程序

        包括语法解析器,计划编译器,优化器,执行器。

        完成HQL查询语句从词法分析,语法分析,编译,优化以及查询计划的生成。生成的查询计划存储在HDFS中,并在随后有执行引擎调用执行。

4.执行引擎

        Hive本身并不直接处理数据文件。而是通过执行引擎处理。当下Hive支持MapReduce,Tez, Spark 3种引擎。

Hive元数据

        元数据(Metadata),又称为中介数据,中继数据。为描述数据的数据(data about data),主要是描述数据属性(property)的信息,用来支持如存储位置,历史事件,资源查找,文件记录等功能。

Hive Metadata

        即Hive的元数据,包含用Hive创建的database,table,表的位置,类型,属性,字段顺序类型等元信息。元数据存储在关系型数据库中。如hive内置的Derby,或者第三方如MySql等。

Hive Metastore

        即元数据服务,Metastore服务的作用是管理metadata元数据,对外暴露服务地址,让各种客户端通过连接metastore服务,由metastore再去连接MySQL数据库来存取元数据。

        有了metastore服务,就可以有多个客户端同时连接,而且这些客户端不需要知道MySQL数据库的用户名和密码,只需要连接meatstore服务即可。某种程度上也保证了hive元数据的安全。

metastore配置方式

        内嵌模式,本地模式,远程模式

区分方式
内嵌模式本地模式远程模式
Metastore是否单独配置,启动
Metadata存储介质Derby(内置)MysqlMysql

2.安装部署

1.安装前准备

服务器基础环境:集群时间同步,防火墙关闭,主机Host映射,免密登录,JDK安装。

Hadoop集群健康可用

启动Hive之前必须先启动Hadoop集群。注:需等待HDFS安全模式关闭之后再启动运行Hive.

在Hadoop中添加相关配置属性,以满足Hive在Hadoop上运行,修改Hadoop中的core-site.xml,同步集群中的每个节点,重启生效。

    <property>
        <name>hadoop.proxyuser.root.hosts</name>
        <value>*</value>
    </property>
    
    <property>
        <name>hadoop.proxyuser.root.groups</name>
        <value>*</value>
    </property>

2.MySQL安装

只需要在一台机器安装并且授权远程访问

1.卸载Centos7自带的mariadb

rpm -qa|grep mariadb

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

2.安装mysql

mkdir /export/software/mysql

 上传安装包,解压

tar xvf mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar

安装依赖

yum -y install libaio

启动mysql

rpm -ivh mysql-community-common-5.7.29-1.el7.x86_64.rpm mysql-community-libs-5.7.29-1.el7.x86_64.rpm mysql-community-client-5.7.29-1.el7.x86_64.rpm mysql-community-server-5.7.29-1.el7.x86_64.rpm

mysql初始化设置

  #初始化
  mysqld --initialize

  #更改所属组
  chown mysql:mysql /var/lib/mysql -R

  #启动mysql
  systemctl start mysqld.service

  #查看生成的临时root密码
  cat  /var/log/mysqld.log

修改root密码,授权远程访问,设置开机自启动

mysql -u root -p
# 输入日志中获取的临时密码


# 设置新的密码
alter user user() identified by "123456";


#授权
use mysql;

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
#刷新权限
FLUSH PRIVILEGES; 


#mysql的启动和关闭 状态查看 (这几个命令必须记住)
systemctl stop mysqld
systemctl status mysqld
systemctl start mysqld

#开机自启动
systemctl enable  mysqld  

3.Hive安装

1.上传Hive包,解压,node1即可

tar zxvf apache-hive-3.1.2-bin.tar.gz

2.解决Hive与Hadoop之间guava版本差异

  cd /export/server/apache-hive-3.1.2-bin/
  rm -rf lib/guava-19.0.jar
  cp /export/server/hadoop-3.3.0/share/hadoop/common/lib/guava-27.0-jre.jar ./lib/

3.修改配置文件

hive-env.sh

cd /export/server/apache-hive-3.1.2-bin/conf
mv hive-env.sh.template hive-env.sh


vim hive-env.sh
# 追加到文件最后
export HADOOP_HOME=/export/server/hadoop-3.3.0
export HIVE_CONF_DIR=/export/server/apache-hive-3.1.2-bin/conf
export HIVE_AUX_JARS_PATH=/export/server/apache-hive-3.1.2-bin/lib

hive-site.xml

vim hive-site.xml



    <configuration>
    <!-- 存储元数据mysql相关配置 -->
    <property>
    	<name>javax.jdo.option.ConnectionURL</name>
    	<value>jdbc:mysql://node1:3306/hive3?createDatabaseIfNotExist=true&amp;useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8</value>
    </property>
    
    <property>
    	<name>javax.jdo.option.ConnectionDriverName</name>
    	<value>com.mysql.jdbc.Driver</value>
    </property>
    
    <property>
    	<name>javax.jdo.option.ConnectionUserName</name>
    	<value>root</value>
    </property>
    
#数据库密码,改成自己的
    <property>
    	<name>javax.jdo.option.ConnectionPassword</name>
    	<value>123456</value>
    </property>
    
    <!-- H2S运行绑定host -->
    <property>
        <name>hive.server2.thrift.bind.host</name>
        <value>node1</value>
    </property>
    
    <!-- 远程模式部署metastore metastore地址 -->
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://node1:9083</value>
    </property>
    
    <!-- 关闭元数据存储授权  --> 
    <property>
        <name>hive.metastore.event.db.notification.api.auth</name>
        <value>false</value>
    </property>
    </configuration>

4.上传mysql jdbc驱动到hive安装包lib下

5.初始化元数据

cd /export/server/apache-hive-3.1.2-bin/


bin/schematool -initSchema -dbType mysql -verbos
#初始化成功会在mysql中创建74张表

6.在hdfs创建hive存储目录(如存在则不用操作)

  hadoop fs -mkdir /tmp
  hadoop fs -mkdir -p /user/hive/warehouse
  hadoop fs -chmod g+w /tmp
  hadoop fs -chmod g+w /user/hive/warehouse

4.metastore服务启动

1.前台启动

        进程会一直占据终端,ctrl + c结束进程,服务关闭。可以根据需求添加参数开启debug日志,获取详细日志信息,便于排错。

    #前台启动  关闭ctrl+c
    /export/server/apache-hive-3.1.2-bin/bin/hive --service metastore
    #前台启动开启debug日志
  /export/server/apache-hive-3.1.2-bin/bin/hive --service metastore --hiveconf hive.root.logger=DEBUG,console  

2.后台启动

        输入日志信息在/root目录下的nohup.out

    #后台启动 进程挂起  关闭使用jps+ kill -9
    nohup /export/server/apache-hive-3.1.2-bin/bin/hive --service metastore &

kill -9 pid 关闭

3.Hive客户端使用

1.Hive自带客户端

bin/hive

        第一代,不推荐使用,是一个shellUitl。可以用于以交互或批处理模式运行Hive查询,Hive相关服务的启动,比如metastore服务。

bin/beeline

        第二代,是一个JDBC客户端,推荐,比第一代安全性高。

HiveServer2服务

        远程模式下beeline通过Thrift连接到单独的HiveServer2服务上,支持多客户端的并发和身份认证。

        HiveServer2通过Metastore服务读写元数据,所以远程模式下,启动HiveServer2之前必须先启动metastore服务。

        远程模式下,Beeline客户端只能通过HiveServer2服务访问Hive,而bin/hive是通过Metastore服务访问的。

nohup /export/server/apache-hive-3.1.2-bin/bin/hive --service hiveserver2 &

# 连接访问
/export/server/apache-hive-3.1.2-bin/bin/beeline
# 启动之后,连接对应服务
! connect jdbc:hive2://node1:10000
# 输入用户名,密码

2.Hive可视化客户端

DataGrip,Dbeaver,SQuirrel SQL Client等

4.Hive SQL

数据定义语言(Data Definition Language, DDL),对数据库内部的对象结构进行创建,删除,修改等的操作语言,包括表,库等。

在Hive中,默认是数据库叫做default,存储数据位置位于HDFS的/user/hive/warehouse下

用户自己创建的数据库存储位置是/user/hive/warehouse/database_name.db下

# 创建数据库
create database name

切换数据库

use name

删除数据库,库下没表才能删

drop database name
建表语句
create table 库名.t_archer(
    id int comment "ID编号", -- comment后面是注释,不影响执行
    name string comment "英雄名称",
    hp_max int comment "最大生命",
    mp_max int comment "最大法力",
    attack_max int comment "最高物攻",
    defense_max int comment "最大物防",
    attack_range string comment "攻击范围",
    role_main string comment "主要定位",
    role_assist string comment "次要定位"
)
row format delimited
field terminated by "\t";  -- 字段之间的分隔符是tab键 指标符

建表成功之后,在Hive的默认存储路径下就生成了表对应的文件夹,把要解析的文件上传到对应的表文件夹下。

建表时如果没有指定分隔符,则采用默认分隔符。默认分隔符是'\001',一种特殊字符,使用ASCII编码的值,键盘打不出来。

vim编辑器下,连续按下Ctrl + v/Ctrl + a 即可输入'\001',形式 ^A。一些文本编辑器中以SOH形式显示。

show语法
-- 显示数据库
show databases;
show schemas;

-- 显示表
show tables;
-- 指定某个数据库
show tables in database;

-- 显示一张表的元数据信息
desc formatted table_name;
注释comment中文乱码问题
# 登录mysql数据库
mysql -u root -p

# 切换到hive的数据库
user hive3

# 修改编码方式
alter table hive3.COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;
alter table hive3.TABLE_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
alter table hive3.PARTITION_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8 ;
alter table hive3.PARTITION_KEYS modify column PKEY_COMMENT varchar(4000) character set utf8;
alter table hive3.INDEX_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;

5.Apache Hive DML语句与函数使用

1.加载数据

1.Load语法

 将数据文件移动到与Hive表对应的位置,移动时是纯复制,移动操作。即在数据load加载到表中时,Hive不会对表中的数据内容进行任何转换,任何操作。

LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename;

LOAD DATA LOCAL INPATH '/root/hivedata/students.txt' INTO TABLE student_local;

hadoop fs -put |-mv   上传文件命令

如果指定Local,将在本地文件系统中查找文件路径,本地文件系统指的是Hiveserver2服务所在机器的本地Linux文件系统,不是Hive客户端所在的本地文件系统。

从本地加载时是复制操作,从Hdfs加载则是移动操作。

如果没有指定Loacl,如果filepath指向的是一个完整的URL,会直接适用这个URL,如果没有指定schema,Hive会使用在hadoop配置文件中参数fs.default.name指定的

overwrite:是否覆盖原数据

2.Insert插入

语法与Mysql一致,速度慢,不建议使用

一般与select搭配使用,将查询出来的数据插入表中。

2.查询数据

同mysql

-- 查询当前数据库
select current_database();

-- 去重
select distinct * from table_name;

3.Join管理查询

同mysql

4.函数使用

-- 查看当下可用的所有函数
show functions

-- 查看函数的使用方式
describe function extended function_name

按函数输入输出的行数进行分类

UDF(User-Defined-Function)普通函数,一进一出

UDAF(User-Defined Aggregation Function)聚合函数,多进一出

UDTF(User-Defined Table-Generating Functions)表生成函数,一进多出

6.FineBI可视化展示数据

1.特点

1.通过多人协作来实现最终的可视化构建

2.不需要通过复杂代码来实现开发,通过可视化操作实现开发

3.适合于各种数据可视化的应用场景

4.支持各种常见的分析图表和各种数据源

5.支持处理大数据

2.安装

官网免费安装

1.配置驱动

如果使用FineBI连接Hive,读取Hive的数据表,需要在FineBI中添加Hive的驱动jar包,将Hive的驱动jar包放入FineBI的lib目录下

FineBI5.1\webapps\webroot\WEB-INF\lib

2.插件安装

自己放的Hive驱动包会和FineBI自带的驱动包产生冲突,导致FineBI无法识别自己的驱动包,需要安装FineBI官方提供的驱动包隔离插件。

安装之后重启FineBI才能生效 

3.构建连接

4.数据准备

分组下新建业务包,点击进入业务包

 选择要展示的表

 5.新建报表

仪表盘新建仪表板

  • 15
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值