【技术创作101训练营】数据仓库应用分享

ppt第一页

嗨,大家好。我是薄荷加点糖,我是一名java后端开发,一名彻头彻尾的coder。我今天的分享主要想解决的问题是 (下一张PPT)

ppt第二页

本次分享期望可以达成的目标,期望大家可以跟着我的思路来,我也希望通过本次分享可以把大家带入门!

万事开头难!!!!为了让大家不会从入门到放弃,我会从最简单的讲,后续会慢慢深入

面对新的技术,大家可能都有类似的问题: 我改怎么快速的去应用它?如果要应用,我要从哪里入手呢?业务中遇到新问题我改怎么办?

我该从哪里入手? 我什么都不了解,一脸懵逼状态......

ppt第三页

本次分享的主要内容(主要围绕)是:

主要分享hdfs、sqoop、hive三个hadoop生态系统里的技术

ppt第四页

基本环境介绍之操作系统

操作系统 Ubuntu 18.04.3 LTS (GNU/Linux 4.15.0-65-generic x86_64)

LTS: Long-term support

仿生海狸

ppt第五页

基本环境介绍之操作系统

Ubuntu版本的命名规则是根据正式版发行的年月命名,Ubuntu 8.10也就意味着2008年10月发行的Ubuntu,研发人员与使用者可从版本号码就知道正式发布的时间。Ubuntu是基于Debian开发的Linux发行版,Debian的开发代号来自于电影玩具总动员,不过,Ubuntu各版本的代号却固定是形容词加上动物名称,而且这2个词的英文首字母一定是相同的。从Ubuntu 6.06开始,两个词的首字母按照英文字母表的排列顺序取用

操作系统 Ubuntu 18.04.3 LTS (GNU/Linux 4.15.0-65-generic x86_64)

LTS: Long-term support

仿生海狸

https://zh.wikipedia.org/wiki/Ubuntu发行版列表

ppt第六页
ppt第七页

基本环境介绍之环境部署

ppt第八页

基本环境介绍之hosts 配置

要去除hosts文件中多余的内容

ppt第九页

基本环境介绍之安装目录及操作用户

基础目录是为了规范,部署方便,应用方便

Sundix -> sudo su -> root

source /etc/profile

基础目录——> 主要是用于规范才会有第二节

ppt第十页
ppt第十一页

在规范目录的情况下 配置 ~/.bashrc

ppt第十二页

组件基本运用主要讲解的是实施过程中常用的命令

ppt第十三页
ppt第十四页

主要是常规操作

Hadoop

主要是基于FileSystemShell

演示:

source /etc/profile

hdfs dfs -mkdir /yanshi

touch file

hdfs dfs -put file /yanshi

hdfs dfs -mkdir /yanshi/a

hdfs dfs -mkdir /yanshi/b

hdfs dfs -cp /yanshi/file /yanshi/b

hdfs dfs -mv /yanshi/file /yanshi/a

hdfs dfs -mv /yanshi/a/file /yanshi/a/file2

ppt第十五页

数据仓库离线分析工具

Hive 只适合用来做海量离线数 据统计分析,也就是数据仓库

原则上不支持更新操作

与mysql的区别非常小,不想讲函数的,如果讲函数的话,就讲不完了,哈哈

ppt第十六页
ppt第十七页

导出不能导出复杂的sql,只能借助中间表

ppt第十八页

音标:[dˈbivɚ]

可以看下hadoop的任务执行情况

ppt第十九页

可以使用shell 也可以使用 dbeaver

ppt第二十页

知道分类,可以确定大致的方向

ppt第二十一页

Hadoop和RDBMS之间传送数据的工具

sqoop-1.4.7.bin__hadoop-2.6.0

ppt第二十二页
ppt第二十三页

主要从整体上有一个大概的认知

ppt第二十四页

Hadoop 狭义上可以看成是 HDFS + MapReduce + Yarn,即分布式存储 + 作业 + 调度,是处理海量数据的整体解决方案,HDFS为海量数据提供存储,MapReduce为海量数据提供计算框架,Yarn负责集群资源的管理和调度

HDFS是Hadoop兼容最好的标准级文件系统,因为Hadoop是一个综合性的文件系统抽象,所以HDFS不是Hadoop必需的。所以可以理解为Hadoop是一个框架,HDFS是Hadoop中的一个部件

ppt第二十五页

整个HDFS集群由Namenode和Datanode构成master-worker(主从)模式。Namenode负责构建命名空间,管理文件的元数据等,而Datanode负责实际存储数据,负责读写工作。

1. NameNode概述

a、 NameNode是HDFS的核心。

b、 NameNode也称为Master。

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

d、 NameNode不存储实际数据或数据集。数据本身实际存储在DataNodes中。

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

f、 NameNode并不持久化存储每个文件中各个块所在的DataNode的位置信息,这些信息会在系统启动时从数据节点重建。

g、 NameNode对于HDFS至关重要,当NameNode关闭时,HDFS / Hadoop集群无法访问。

h、 NameNode是Hadoop集群中的单点故障。

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

2. DataNode概述

a、 DataNode负责将实际数据存储在HDFS中。

b、 DataNode也称为Slave。

c、 NameNode和DataNode会保持不断通信。

d、 DataNode启动时,它将自己发布到NameNode并汇报自己负责持有的块列表。

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

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

g、 DataNode会定期(dfs.heartbeat.interval配置项配置,默认是3秒)向NameNode发送心跳,如果NameNode长时间没有接受到DataNode发送的心跳, NameNode就会认为该DataNode失效。

h、 block汇报时间间隔取参数dfs.blockreport.intervalMsec,参数未配置的话默认为6小时.

后续需要做hdfs的高可用方案(HA) High Available

ppt第二十六页

YARN是Hadoop集群的资源管理系统。Hadoop2.0对MapReduce框架做了彻底的设计重构。YARN的基本设计思想是将MRv1中的JobTracker拆分成了两个独立的服务:一个全局的资源管理器ResourceManager和每个应用程序特有的ApplicationMaster。其中ResourceManager负责整个系统的资源管理和分配,而ApplicationMaster负责单个应用程序的管理

1.用户向YARN中提交应用程序,其中包括ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等。

2.ResourceManager为该应用程序分配第一个Container,并与对应的NodeManager通信,要求它在这个Container中启动应用程序的ApplicationMaster。

3.ApplicationMaster首先向ResourceManager注册,这样用户就可以直接通过ResourceManager查看应用程序的运行状态,然后它将为各个任务申请资源,并监控它的运行状态,直到运行结束,即重复步骤4~7。

4.ApplicationMaster采用轮询的方式通过RPC协议向ResourceManager申请和领取资源。

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

6.NodeManager为任务设置好运行环境(包括环境变量、JAR包、二进制程序等)后,将任务启动命令写到一个脚本中,并通过运行该脚本启动任务。

7.各个任务通过某个RPC协议向ApplicationMaster汇报自己的状态和进度,以让ApplicationMaster随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务。

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

资源利用率高。如果每个框架一个集群,可能在某段时间内,有些计算框架的集群资源紧张,而另外一些集群资源空闲。共享集群模式则通过多种框架共享资源,使得集群中的资源得到更加充分的利用。

运维成本低。如果采用“一个框架一个集群”的模式,则可能需要多个管理员管理这些集群,进而增加运维成本,而共享模式通常需要少数管理员即可完成多个框架的统一管理。

数据共享。随着数据量的暴增,跨集群间的数据移动不仅需花费更长的时间,且硬件成本也会大大增加,而共享集群模式可让多种框架共享数据和硬件资源,将大大减小数据移动带来的成本。

ppt第二十七页

从上图看出hive的内部架构由四部分组成:

1、用户接口: shell/CLI, jdbc/odbc, webui Command Line Interface

CLI,Shell 终端命令行(Command Line Interface),采用交互形式使用 Hive 命令行与 Hive 进行交互,最常用(学习,调试,生产)

JDBC/ODBC,是 Hive 的基于 JDBC 操作提供的客户端,用户(开发员,运维人员)通过 这连接至 Hive server 服务

Web UI,通过浏览器访问 Hive

2、跨语言服务 : thrift server 提供了一种能力,让用户可以使用多种不同的语言来操纵hive

Thrift 是 Facebook 开发的一个软件框架,可以用来进行可扩展且跨语言的服务的开发, Hive 集成了该服务,能让不同的编程语言调用 Hive 的接口

3、底层的Driver: 驱动器Driver,编译器Compiler,优化器Optimizer,执行器Executor

Driver 组件完成 HQL 查询语句从词法分析,语法分析,编译,优化,以及生成逻辑执行 计划的生成。生成的逻辑执行计划存储在 HDFS 中,并随后由 MapReduce 调用执行

Hive 的核心是驱动引擎, 驱动引擎由四部分组成:

(1) 解释器:解释器的作用是将 HiveSQL 语句转换为抽象语法树(AST)

(2) 编译器:编译器是将语法树编译为逻辑执行计划

(3) 优化器:优化器是对逻辑执行计划进行优化

(4) 执行器:执行器是调用底层的运行框架执行逻辑执行计划

4、元数据存储系统 : RDBMS MySQL

  元数据,通俗的讲,就是存储在 Hive 中的数据的描述信息。

Hive 中的元数据通常包括:表的名字,表的列和分区及其属性,表的属性(内部表和 外部表),表的数据所在目录

Metastore 默认存在自带的 Derby 数据库中。缺点就是不适合多用户操作,并且数据存 储目录不固定。数据库跟着 Hive 走,极度不方便管理

  解决方案:通常存我们自己创建的 MySQL 库(本地 或 远程)

Hive 和 MySQL 之间通过 MetaStore 服务交互

执行流程

HiveQL 通过命令行或者客户端提交,经过 Compiler 编译器,运用 MetaStore 中的元数 据进行类型检测和语法分析,生成一个逻辑方案(Logical Plan),然后通过的优化处理,产生 一个 MapReduce 任务。

ppt第二十八页
ppt第二十九页

首先明确一个态度:

问题都是可以解决的,慢慢来~~

ppt第三十页
  • 不要慌张,不要着急,因为问题已经出现,临危不乱
  • 确定问题影响面有多大
  • 确定是否需要上报(涉及公司,公关,客服,公司的命运,很多家庭,法务等等)
  • 定位问题,看表象,看日志(物理故障,程序故障)
  • 确定问题修复分支上线时间
  • 复盘故障
ppt第三十一页

执行hdfs namenode -format后,current目录会删除并重新生成,其中VERSION文件中的clusterID也会随之变化,而datanode的VERSION文件中的clusterID保持不变,造成两个clusterID不一致。

所以为了避免这种情况,可以再执行的namenode格式化之后,删除datanode的current文件夹,或者修改datanode的VERSION文件中出clusterID与namenode的VERSION文件中的clusterID一样,然后重新启动datanode。

ppt第三十二页

这些都是jar包的问题,一般集中在sqoop设计到的应用包,例如

hadoop-hdfs包,jar包等等

ppt第三十三页

Error: Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-based logging. InnoDB is limited to row-logging when transaction isolation level is READ COMMITTED or READ

这个问题是由于hive的元数据存储MySQL配置不当引起的,可以这样解决:

登录进mysql服务器,输入命令 set global binlog_format=‘MIXED';

Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V

是guava包的问题,使用hadoop下的guava包即可

Unauthorized request to start container

这个问题是master与slave的时间不同步造成的,导致yarn不能很好的管理,需要同步时间

同步时间使用ntpdate来同步,统一获取国内的时间ip为85.199.214.100

ntpdate 没有的使用apt install ntpdate 来安装即可

ntpdate -u 85.199.214.100

hive中文字符乱码

hive表更新(update,delete)支持

csv日本文件乱码问题

csv文件内容不能够满足业务,需要编码统一处理

csv文件列数不一致问题,每个国家列数不一致

csv文件列命名有差异

日本金额逗号问题,使用正则替换

ppt第三十四页

完善操作脚本——各种场景 —— 预案

所有服务配置成系统级服务——主要是想利用系统提供的功能,来提高程序的可靠性

后端管理程序——站在高一层的角度来管理程序

一键异常处理——需要总结,故障记录,行程异常处理产品

ppt第三十五页

完善操作脚本——各种场景 —— 预案

所有服务配置成系统级服务——主要是想利用系统提供的功能,来提高程序的可靠性

后端管理程序——站在高一层的角度来管理程序

一键异常处理——需要总结,故障记录,行程异常处理产品

ppt第三十六页

沉淀知识 —— 走过很多弯路,我们要沉淀下来属于自己的东西

面对问题应该抱有什么态度

发挥团队的力量

独立解决问题的能力

解决问题后,我们需要复盘解决问题

要一次次的锻炼自己的能力,要知道我们在公司是干啥的,提升自己的技能,顺便完成公司的业务

身体很重要,不要拼命~ 有时我们需要为公司做事,但是要有健康的身体

这一周期我的工作类似再做架构,做框架一样,数据需要大家往里面填充

ppt第三十七页

感谢大家的聆听。

本站文章资源均来源自网络,除非特别声明,否则均不代表站方观点,并仅供查阅,不作为任何参考依据!
如有侵权请及时跟我们联系,本站将及时删除!
如遇版权问题,请查看 本站版权声明
THE END
分享
二维码
海报
【技术创作101训练营】数据仓库应用分享
嗨,大家好。我是薄荷加点糖,我是一名java后端开发,一名彻头彻尾的coder。我今天的分享主要想解决的问题是 (下一张PPT)
<<上一篇
下一篇>>