当前位置:文档之家› 14_尚硅谷大数据之HDFS HA高可用

14_尚硅谷大数据之HDFS HA高可用

14_尚硅谷大数据之HDFS HA高可用
14_尚硅谷大数据之HDFS HA高可用

八HDFS HA高可用

8.1 HA概述

1)所谓HA(high available),即高可用(7*24小时不中断服务)。

2)实现高可用最关键的策略是消除单点故障。HA严格来说应该分成各个组件的HA机制:HDFS的HA和YARN的HA。

3)Hadoop2.0之前,在HDFS集群中NameNode存在单点故障(SPOF)。

4)NameNode主要在以下两个方面影响HDFS集群

NameNode机器发生意外,如宕机,集群将无法使用,直到管理员重启

NameNode机器需要升级,包括软件、硬件升级,此时集群也将无法使用

HDFS HA功能通过配置Active/Standby两个nameNodes实现在集群中对NameNode的热备来解决上述问题。如果出现故障,如机器崩溃或机器需要升级维护,这时可通过此种方式将NameNode很快的切换到另外一台机器。

8.2 HDFS-HA工作机制

1)通过双namenode消除单点故障

8.2.1 HDFS-HA工作要点

1)元数据管理方式需要改变:

内存中各自保存一份元数据;

Edits日志只有Active状态的namenode节点可以做写操作;

两个namenode都可以读取edits;

共享的edits放在一个共享存储中管理(qjournal和NFS两个主流实现);

2)需要一个状态管理功能模块

实现了一个zkfailover,常驻在每一个namenode所在的节点,每一个zkfailover负责监控自己所在namenode节点,利用zk进行状态标识,当需要进行状态切换时,由zkfailover 来负责切换,切换时需要防止brain split现象的发生。

3)必须保证两个NameNode之间能够ssh无密码登录。

4)隔离(Fence),即同一时刻仅仅有一个NameNode对外提供服务

8.2.2 HDFS-HA自动故障转移工作机制

前面学习了使用命令hdfs haadmin -failover手动进行故障转移,在该模式下,即使现役NameNode已经失效,系统也不会自动从现役NameNode转移到待机NameNode,下面学习如何配置部署HA自动进行故障转移。自动故障转移为HDFS部署增加了两个新组件:ZooKeeper和ZKFailoverController(ZKFC)进程。ZooKeeper是维护少量协调数据,通知客户端这些数据的改变和监视客户端故障的高可用服务。HA的自动故障转移依赖于ZooKeeper的以下功能:

1)故障检测:集群中的每个NameNode在ZooKeeper中维护了一个持久会话,如果机器崩溃,ZooKeeper中的会话将终止,ZooKeeper通知另一个NameNode需要触发故障转移。

2)现役NameNode选择:ZooKeeper提供了一个简单的机制用于唯一的选择一个节点为active状态。如果目前现役NameNode崩溃,另一个节点可能从ZooKeeper获得特殊的排外锁以表明它应该成为现役NameNode。

ZKFC是自动故障转移中的另一个新组件,是ZooKeeper的客户端,也监视和管理NameNode的状态。每个运行NameNode的主机也运行了一个ZKFC进程,ZKFC负责:1)健康监测:ZKFC使用一个健康检查命令定期地ping与之在相同主机的NameNode,只要该NameNode及时地回复健康状态,ZKFC认为该节点是健康的。如果该节点崩溃,冻结或进入不健康状态,健康监测器标识该节点为非健康的。

2)ZooKeeper会话管理:当本地NameNode是健康的,ZKFC保持一个在ZooKeeper 中打开的会话。如果本地NameNode处于active状态,ZKFC也保持一个特殊的znode锁,该锁使用了ZooKeeper对短暂节点的支持,如果会话终止,锁节点将自动删除。

3)基于ZooKeeper的选择:如果本地NameNode是健康的,且ZKFC发现没有其它的节点当前持有znode锁,它将为自己获取该锁。如果成功,则它已经赢得了选择,并负责运行故障转移进程以使它的本地NameNode为active。故障转移进程与前面描述的手动故障转移相似,首先如果必要保护之前的现役NameNode,然后本地NameNode转换为active状态。

HDFS-HA 故障转移机制

Name node Name node active

standby

内存中的元数据内存中的元数据fsimage

fsimage

edits

edits

edits

edits

edits

zk1

zk2

zk3

Zkfc

Failover controller Zkfc

Failover controller

Zookeeper 服务端

Edits 文件管理系统:qjournal

5 如果ssh 补刀失败则调用用户自定义脚本程序

6 获取命令运行结果

/home/atguigu/kill/poweroff.sh

1 假死

2 检测到假死

3 通知另一台NameNode 的zkfc

4 强行杀死namenode,防止脑裂ssh kill -9 namenode 进程号

7 激活本台namenode ,切换为Active

同时出现两个Active 状态

namenode 的术语叫脑裂brain split 。防止脑裂的两种方式:1)ssh 发送kill 指令

2)调用用户自定义脚本程序

Zookeeper 客户端

Zookeeper 客户端写

8.3 HDFS-HA 集群配置 8.3.1 环境准备

1)修改IP

2)修改主机名及主机名和IP 地址的映射 3)关闭防火墙 4)ssh 免密登录

5)安装JDK ,配置环境变量等

8.3.2 规划集群

hadoop102 hadoop103

hadoop104

NameNode

NameNode JournalNode JournalNode JournalNode DataNode DataNode DataNode

ZK

ZK

ZK

ResourceManager

NodeManager

NodeManager

NodeManager

8.3.3 配置Zookeeper 集群

0)集群规划

在hadoop102、hadoop103和hadoop104三个节点上部署Zookeeper 。

1)解压安装

(1)解压zookeeper安装包到/opt/module/目录下

[atguigu@hadoop102 software]$ tar -zxvf zookeeper-3.4.10.tar.gz -C /opt/module/ (2)在/opt/module/zookeeper-3.4.10/这个目录下创建zkData

mkdir -p zkData

(3)重命名/opt/module/zookeeper-3.4.10/conf这个目录下的zoo_sample.cfg为zoo.cfg mv zoo_sample.cfg zoo.cfg

2)配置zoo.cfg文件

(1)具体配置

dataDir=/opt/module/zookeeper-3.4.10/zkData

增加如下配置

#######################cluster##########################

server.2=hadoop102:2888:3888

server.3=hadoop103:2888:3888

server.4=hadoop104:2888:3888

(2)配置参数解读

Server.A=B:C:D。

A是一个数字,表示这个是第几号服务器;

B是这个服务器的ip地址;

C是这个服务器与集群中的Leader服务器交换信息的端口;

D是万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。

集群模式下配置一个文件myid,这个文件在dataDir目录下,这个文件里面有一个数据就是A的值,Zookeeper启动时读取此文件,拿到里面的数据与zoo.cfg里面的配置信息比较从而判断到底是哪个server。

3)集群操作

(1)在/opt/module/zookeeper-3.4.10/zkData目录下创建一个myid的文件

touch myid

添加myid文件,注意一定要在linux里面创建,在notepad++里面很可能乱码

(2)编辑myid文件

vi myid

在文件中添加与server对应的编号:如2

(3)拷贝配置好的zookeeper到其他机器上

scp -r zookeeper-3.4.10/ root@https://www.doczj.com/doc/e017304485.html,:/opt/app/

scp -r zookeeper-3.4.10/ root@https://www.doczj.com/doc/e017304485.html,:/opt/app/

并分别修改myid文件中内容为3、4

(4)分别启动zookeeper

[root@hadoop102 zookeeper-3.4.10]# bin/zkServer.sh start

[root@hadoop103 zookeeper-3.4.10]# bin/zkServer.sh start

[root@hadoop104 zookeeper-3.4.10]# bin/zkServer.sh start (5)查看状态

[root@hadoop102 zookeeper-3.4.10]# bin/zkServer.sh status

JMX enabled by default

Using config: /opt/module/zookeeper-3.4.10/bin/../conf/zoo.cfg

Mode: follower

[root@hadoop103 zookeeper-3.4.10]# bin/zkServer.sh status

JMX enabled by default

Using config: /opt/module/zookeeper-3.4.10/bin/../conf/zoo.cfg

Mode: leader

[root@hadoop104 zookeeper-3.4.5]# bin/zkServer.sh status

JMX enabled by default

Using config: /opt/module/zookeeper-3.4.10/bin/../conf/zoo.cfg

Mode: follower

8.3.4 配置HDFS-HA集群

1)官方地址:https://www.doczj.com/doc/e017304485.html,/

2)在opt目录下创建一个ha文件夹

mkdir ha

3)将/opt/app/下的hadoop-2.7.2拷贝到/opt/ha目录下

cp -r hadoop-2.7.2/ /opt/ha/

4)配置hadoop-env.sh

export JA V A_HOME=/opt/module/jdk1.8.0_144

5)配置core-site.xml

fs.defaultFS

hdfs://mycluster

hadoop.tmp.dir

/opt/ha/hadoop-2.7.2/data/tmp

6)配置hdfs-site.xml

https://www.doczj.com/doc/e017304485.html,services

mycluster

https://www.doczj.com/doc/e017304485.html,nodes.mycluster

nn1,nn2

https://www.doczj.com/doc/e017304485.html,node.rpc-address.mycluster.nn1

hadoop102:9000

https://www.doczj.com/doc/e017304485.html,node.rpc-address.mycluster.nn2

hadoop103:9000

https://www.doczj.com/doc/e017304485.html,node.http-address.mycluster.nn1

hadoop102:50070

https://www.doczj.com/doc/e017304485.html,node.http-address.mycluster.nn2

hadoop103:50070

https://www.doczj.com/doc/e017304485.html,node.shared.edits.dir

qjournal://hadoop102:8485;hadoop103:8485;hadoop104:8485/mycluster

dfs.ha.fencing.methods

sshfence

dfs.ha.fencing.ssh.private-key-files

/home/atguigu/.ssh/id_rsa

dfs.journalnode.edits.dir

/opt/ha/hadoop-2.7.2/data/jn

dfs.permissions.enable

false

dfs.client.failover.proxy.provider.mycluster

https://www.doczj.com/doc/e017304485.html,node.ha.ConfiguredFailoverProxyProvider

7)拷贝配置好的hadoop环境到其他节点

8.3.5 启动HDFS-HA集群

1)在各个JournalNode节点上,输入以下命令启动journalnode服务:

sbin/hadoop-daemon.sh start journalnode

2)在[nn1]上,对其进行格式化,并启动:

bin/hdfs namenode -format

sbin/hadoop-daemon.sh start namenode

3)在[nn2]上,同步nn1的元数据信息:

bin/hdfs namenode -bootstrapStandby

4)启动[nn2]:

sbin/hadoop-daemon.sh start namenode

5)查看web页面显示

6)在[nn1]上,启动所有datanode

sbin/hadoop-daemons.sh start datanode

7)将[nn1]切换为Active

bin/hdfs haadmin -transitionToActive nn1

8)查看是否Active

bin/hdfs haadmin -getServiceState nn1

8.3.6 配置HDFS-HA自动故障转移

1)具体配置

(1)在hdfs-site.xml中增加

dfs.ha.automatic-failover.enabled

true

(2)在core-site.xml文件中增加

ha.zookeeper.quorum

hadoop102:2181,hadoop103:2181,hadoop104:2181

2)启动

(1)关闭所有HDFS服务:

sbin/stop-dfs.sh

(2)启动Zookeeper集群:

bin/zkServer.sh start

(3)初始化HA在Zookeeper中状态:

bin/hdfs zkfc -formatZK

(4)启动HDFS服务:

sbin/start-dfs.sh

(5)在各个NameNode节点上启动DFSZK Failover Controller,先在哪台机器启动,哪个机器的NameNode就是Active NameNode

sbin/hadoop-daemin.sh start zkfc

3)验证

(1)将Active NameNode进程kill

kill -9 namenode的进程id

(2)将Active NameNode机器断开网络

service network stop

8.4 YARN-HA配置

8.4.1 YARN-HA工作机制

1)官方文档:

https://www.doczj.com/doc/e017304485.html,/docs/r2.7.2/hadoop-yarn/hadoop-yarn-site/ResourceManagerHA.html 2)YARN-HA工作机制

8.4.2 配置YARN-HA集群

0)环境准备

(1)修改IP

(2)修改主机名及主机名和IP地址的映射

(3)关闭防火墙

(4)ssh免密登录

(5)安装JDK,配置环境变量等

(6)配置Zookeeper集群

1)规划集群

hadoop102 hadoop103 hadoop104

NameNode NameNode

JournalNode JournalNode JournalNode

DataNode DataNode DataNode

ZK ZK ZK

ResourceManager ResourceManager

NodeManager NodeManager NodeManager 2)具体配置

(1)yarn-site.xml

yarn.nodemanager.aux-services

mapreduce_shuffle

yarn.resourcemanager.ha.enabled

true

yarn.resourcemanager.cluster-id

cluster-yarn1

yarn.resourcemanager.ha.rm-ids

rm1,rm2

yarn.resourcemanager.hostname.rm1

hadoop102

yarn.resourcemanager.hostname.rm2

hadoop103

yarn.resourcemanager.zk-address

hadoop102:2181,hadoop103:2181,hadoop104:2181

yarn.resourcemanager.recovery.enabled

true

yarn.resourcemanager.store.class

org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore<

/value>

(2)同步更新其他节点的配置信息

3)启动hdfs

(1)在各个JournalNode节点上,输入以下命令启动journalnode服务:sbin/hadoop-daemon.sh start journalnode

(2)在[nn1]上,对其进行格式化,并启动:

bin/hdfs namenode -format

sbin/hadoop-daemon.sh start namenode

(3)在[nn2]上,同步nn1的元数据信息:

bin/hdfs namenode -bootstrapStandby

(4)启动[nn2]:

sbin/hadoop-daemon.sh start namenode

(5)启动所有datanode

sbin/hadoop-daemons.sh start datanode

(6)将[nn1]切换为Active

bin/hdfs haadmin -transitionToActive nn1

4)启动yarn

(1)在hadoop102中执行:

sbin/start-yarn.sh

(2)在hadoop103中执行:

sbin/yarn-daemon.sh start resourcemanager

(3)查看服务状态

bin/yarn rmadmin -getServiceState rm1

8.5 HDFS Federation架构设计

1)NameNode架构的局限性

(1)Namespace(命名空间)的限制

由于NameNode在内存中存储所有的元数据(metadata),因此单个namenode所能存储的对象(文件+块)数目受到namenode所在JVM的heap size的限制。50G的heap能够存储20亿(200million)个对象,这20亿个对象支持4000个datanode,12PB的存储(假设文件平均大小为40MB)。随着数据的飞速增长,存储的需求也随之增长。单个datanode从4T增长到36T,集群的尺寸增长到8000个datanode。存储的需求从12PB增长到大于100PB。

(2)隔离问题

由于HDFS仅有一个namenode,无法隔离各个程序,因此HDFS上的一个实验程序就很有可能影响整个HDFS上运行的程序。

(3)性能的瓶颈

由于是单个namenode的HDFS架构,因此整个HDFS文件系统的吞吐量受限于单个namenode的吞吐量。

2)HDFS Federation架构设计

能不能有多个NameNode

NameNode NameNode NameNode

元数据元数据元数据

Log machine 电商数据/话单数据

Datanode1a Datanode2a Datanodem a

Pool 1Pool 2Pool n

NS1

NS2

NSn

NameSpace

HDFS Federation

3)HDFS Federation 应用思考

不同应用可以使用不同NameNode 进行数据管理

图片业务、爬虫业务、日志审计业务

Hadoop 生态系统中,不同的框架使用不同的namenode 进行管理namespace 。(隔离性)

尚硅谷大数据技术之ELK

第1章 Elasticsearch 概述 1.1 什么是搜索? 百度:我们比如说想找寻任何的信息的时候,就会上百度去搜索一下,比如说找一部自己喜欢的电影,或者说找一本喜欢的书,或者找一条感兴趣的新闻(提到搜索的第一印象)。百度 != 搜索 1)互联网的搜索:电商网站,招聘网站,新闻网站,各种app 2)IT 系统的搜索:OA 软件,办公自动化软件,会议管理,日程管理,项目管理。 搜索,就是在任何场景下,找寻你想要的信息,这个时候,会输入一段你要搜索的关键字,然后就期望找到这个关键字相关的有些信息 1.2 如果用数据库做搜索会怎么样? 如果用数据库做搜索会怎么样? select * from products where product_name list “%牙膏%”商品id 商品名称商品描述 1高露洁牙膏2中华牙膏3 佳洁士牙膏4其他牙膏京东商城搜索框 5 …… 1万条 京东商城后台商品表逐条遍历 1)比如说“商品描述”字段的长度,有长达数千个,甚至数万个字符, 这个时候,每次都要对每条记录的所有文本进行扫描,判断包不包含我指定的这个关键词(比如说“牙膏”),效率非常低。 select * from products where product_name list “%生化机%” 2)还不能将搜索词拆分开来,尽可能去搜索更多的符合你的期望的结果, 比如输入“生化机”,就搜索不出来“生化危机”。 用数据库来实现搜索,是不太靠 谱的。通常来说,性能会很差的。 1千字的商品描述 1千字的商品描述 用数据库来实现搜索,是不太靠谱的。通常来说,性能会很差的。 1.3 什么是全文检索和Lucene ? 1)全文检索,倒排索引 全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。这个过程类似于通过字典中的检索字表查字的过程。全文搜索搜索引擎数据库中的数据。

01_尚硅谷大数据之HBase简介

第1章HBase简介 1.1 什么是HBase HBASE是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBASE 技术可在廉价PC Server上搭建起大规模结构化存储集群。 HBASE的目标是存储并处理大型的数据,更具体来说是仅需使用普通的硬件配置,就能够处理由成千上万的行和列所组成的大型数据。 HBASE是Google Bigtable的开源实现,但是也有很多不同之处。比如:Google Bigtable 利用GFS作为其文件存储系统,HBASE利用Hadoop HDFS作为其文件存储系统;Google 运行MAPREDUCE来处理Bigtable中的海量数据,HBASE同样利用Hadoop MapReduce来处理HBASE中的海量数据;Google Bigtable利用Chubby作为协同服务,HBASE利用Zookeeper作为对应。 1.2 HBase中的角色 1.2.1 HMaster 功能: 1) 监控RegionServer 2) 处理RegionServer故障转移 3) 处理元数据的变更 4) 处理region的分配或移除 5) 在空闲时间进行数据的负载均衡 6) 通过Zookeeper发布自己的位置给客户端 1.2.2 RegionServer 功能: 1) 负责存储HBase的实际数据 2) 处理分配给它的Region 3) 刷新缓存到HDFS 4) 维护HLog 5) 执行压缩

6) 负责处理Region分片 1.2.3 其他组件: 1) Write-Ahead logs HBase的修改记录,当对HBase读写数据的时候,数据不是直接写进磁盘,它会在内存中保留一段时间(时间以及数据量阈值可以设定)。但把数据保存在内存中可能有更高的概率引起数据丢失,为了解决这个问题,数据会先写在一个叫做Write-Ahead logfile的文件中,然后再写入内存中。所以在系统出现故障的时候,数据可以通过这个日志文件重建。 2) HFile 这是在磁盘上保存原始数据的实际的物理文件,是实际的存储文件。 3) Store HFile存储在Store中,一个Store对应HBase表中的一个列族。 4) MemStore 顾名思义,就是内存存储,位于内存中,用来保存当前的数据操作,所以当数据保存在WAL 中之后,RegsionServer会在内存中存储键值对。 5) Region Hbase表的分片,HBase表会根据RowKey值被切分成不同的region存储在RegionServer中,在一个RegionServer中可以有多个不同的region。 1.3 HBase架构

01_尚硅谷大数据之Hive基本概念

第1章Hive基本概念 1.1 什么是Hive Hive:由Facebook开源用于解决海量结构化日志的数据统计。 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。 本质是:将HQL转化成MapReduce程序 1)Hive处理的数据存储在HDFS 2)Hive分析数据底层的实现是MapReduce 3)执行程序运行在Yarn上 1.2 Hive的优缺点 1.2.1 优点 1)操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手) 2)避免了去写MapReduce,减少开发人员的学习成本。 3)Hive的执行延迟比较高,因此Hive常用于数据分析,对实时性要求不高的场合; 4)Hive优势在于处理大数据,对于处理小数据没有优势,因为Hive的执行延迟比较高。5)Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。 1.2.2 缺点 1)Hive的HQL表达能力有限 (1)迭代式算法无法表达 (2)数据挖掘方面不擅长 2)Hive的效率比较低 (1)Hive自动生成的MapReduce作业,通常情况下不够智能化 (2)Hive调优比较困难,粒度较粗

1.3 Hive架构原理 HDFS MapReduce Meta store SQL Parser 解析器 Physical Plan 编译器Execution 执行器 Query Optimizer 优化器 Driver CLI JDBC Client Hive 架构 如图中所示,Hive通过给用户提供的一系列交互接口,接收到用户的指令(SQL),使用自己的Driver,结合元数据(MetaStore),将这些指令翻译成MapReduce,提交到Hadoop中执行,最后,将执行返回的结果输出到用户交互接口。 1)用户接口:Client CLI(hive shell)、JDBC/ODBC(java访问hive)、WEBUI(浏览器访问hive) 2)元数据:Metastore 元数据包括:表名、表所属的数据库(默认是default)、表的拥有者、列/分区字段、表的类型(是否是外部表)、表的数据所在目录等; 默认存储在自带的derby数据库中,推荐使用MySQL存储Metastore 3)Hadoop 使用HDFS进行存储,使用MapReduce进行计算。 4)驱动器:Driver (1)解析器(SQL Parser):将SQL字符串转换成抽象语法树AST,这一步一般都用第三方工具库完成,比如antlr;对AST进行语法分析,比如表是否存在、字段是否存在、SQL语义是否有误。 (2)编译器(Physical Plan):将AST编译生成逻辑执行计划。

尚硅谷大数据技术之数仓开发规范

1.背景 为了避免底层业务变动对上层需求影响过大,屏蔽底层复杂的业务逻辑,尽可能简单、完整的在接口层呈现业务数据,建设高内聚松耦合的数据组织,使数据从业务角度可分割,显得尤为重要。从整个集团业务条线出发,形成数据仓库总体概念框架,并对整个系统所需要的功能模块进行划分,明确各模块技术细节,建设一套完整的开发规范。 2.分层规范 ODS(原始数据层):ODS层是数据仓库准备区,为DWD层提供基础原始数据。 DWD(明细数据层):和ODS粒度一致的明细数据,对数据进行去重,脏数据过滤,空处理,保证数据质量。 DWS(服务数据层):轻度汇总数据及建宽表(按主题)存放数据。 ADS(应用数据层):存放应用类表数据。 3.表规范 3.1 命名 维表命名形式:dim_描述 事实表命名形式:fact_描述_[AB] 临时表命名形式:tmp_ 正式表名_ [C自定义序号] 宽表命名形式:dws_主题_描述_[AB] 备份表命名形式:正式表名_bak_yyyymmdd 表命名解释: 1)表名使用英文小写字母,单词之间用下划线分开,长度不超过40个字符,命名一般控制在小于等于6级。 2)其中ABC第一位"A"时间粒度:使用"c"代表当前数据,"h"代表小时数据,"d"代表天

数据,"w"代表周数据,"m"代表月数据,"q"代表季度数据, "y"代表年数据。 3)其中ABC的第二位"B"表示对象属性,用"t"表示表,用"v"表示视图。 4)其中ABC的第三位"C"自定义序号用于标识多个临时表的跑数顺序。 3.2 注释 注释要结合表的英文名,要求注释简洁明了,体现出表的业务出处、主题和用途。3.3 存储格式 所谓的存储格式就是在Hive建表的时候指定的将表中的数据按照什么样子的存储方式,如果指定了方式,那么在向表中插入数据的时候,将会使用该方式向HDFS中添加相应的数据类型。在数仓中建表默认用的都是PARQUET存储格式,相关语句如下所示:STORED AS INPUTFORMAT ‘org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat’ OUTPUTFORMAT ‘org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat’ 3.5 字符集 Hadoop和hive 都是用utf-8编码的,在建表时可能涉及到中文乱码问题,所以导入的文件的字符编码统一为utf-8格式。 3.6 约定 理论上在数仓落地的表不应该出现null未知类型,对于可能出现null的字段,如果为字符型统一为空字符串,如果是数值则给0。 4.字段规范 4.1 命名

尚硅谷大数据项目之实时项目2(日活需求)

第1章实时处理模块 1.1 模块搭建 添加scala框架 1.2 代码思路 1)消费kafka中的数据; 2)利用redis过滤当日已经计入的日活设备; 3)把每批次新增的当日日活信息保存到HBASE或ES中;

4)从ES中查询出数据,发布成数据接口,通可视化化工程调用。 1.3 代码开发1 ---消费Kafka 1.3.1 配置 1)config.properties # Kafka配置 kafka.broker.list=hadoop102:9092,hadoop103:9092,hadoop104:9092 # Redis配置 redis.host=hadoop102 rdis.port=6379 2)pom.xml com.atguigu.gmall2019.dw dw-common 1.0-SNAPSHOT org.apache.spark spark-core_2.11 org.apache.spark spark-streaming_2.11 org.apache.kafka kafka-clients 0.11.0.2 org.apache.spark spark-streaming-kafka-0-8_2.11 redis.clients jedis 2.9.0 io.searchbox

大数据技术之MySQL高级

尚硅谷大数据技术之MySQL高级 版本V3.0 第1章MySQL简介 1.1 什么是MySQL (1)MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle 公司。 (2)Mysql是开源的,可以定制的,采用了GPL协议,你可以修改源码来开发自己的Mysql系统。 (3)MySQL使用标准的SQL数据语言形式。 (4)MySQL可以允许于多个系统上,并且支持多种语言。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。 (5)MySQL支持大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大可支持4GB,64位系统支持最大的表文件为8TB。 1.2 在Linux上安装MySQL 1.2.1 检查当前系统是否安装过MySQL CentOS 6命令:rpm -qa|grep mysql 默认Linux在安装的时候,自带了mysql相关的组件。 先卸载系统自带的mysql,执行卸载命令rpm -e --nodeps mysql-libs 1

CentOS 7命令:rpm -qa|grep mariadb 不检查依赖卸载 检查/tmp目录的权限是否是满的 1.2.2 Mysql的安装 安装的版本是mysql 5.7,官网下载地址:https://www.doczj.com/doc/e017304485.html,/downloads/mysql/ 1)通过Xft5文件传输工具将rpm安装包传输到opt目录下 2)执行rpm安装,必须按照下面的顺序安装 1)rpm -ivh mysql-community-common-5.7.16-1.el7.x86_64.rpm 2)rpm -ivh mysql-community-libs-5.7.16-1.el7.x86_64.rpm 3)rpm -ivh mysql-community-client-5.7.16-1.el7.x86_64.rpm 4)rpm -ivh mysql-community-server-5.7.16-1.el7.x86_64.rpm 2

07_尚硅谷大数据之HBase优化

第7章HBase优化 7.1 高可用 在HBase中Hmaster负责监控RegionServer的生命周期,均衡RegionServer的负载,如果Hmaster挂掉了,那么整个HBase集群将陷入不健康的状态,并且此时的工作状态并不会维持太久。所以HBase支持对Hmaster的高可用配置。 1)关闭HBase集群(如果没有开启则跳过此步) [atguigu@hadoop102 hbase]$ bin/stop-hbase.sh 2)在conf目录下创建backup-masters文件 [atguigu@hadoop102 hbase]$ touch conf/backup-masters 3)在backup-masters文件中配置高可用HMaster节点 [atguigu@hadoop102 hbase]$ echo hadoop103 > conf/backup-masters 4)将整个conf目录scp到其他节点 [atguigu@hadoop102 hbase]$ scp -r conf/ hadoop103:/opt/modules/cdh/hbase-0.98.6-cdh5.3.6/ [atguigu@hadoop102 hbase]$ scp -r conf/ hadoop104:/opt/modules/cdh/hbase-0.98.6-cdh5.3.6/ 5)打开页面测试查看 0.98版本之前:http://hadooo102:60010 0.98版本及之后:http://hadooo102:16010 7.2 预分区 每一个region维护着startRow与endRowKey,如果加入的数据符合某个region维护的rowKey 范围,则该数据交给这个region维护。那么依照这个原则,我们可以将数据索要投放的分区提前大致的规划好,以提高HBase性能。 1)手动设定预分区 hbase> create 'staff','info','partition1',SPLITS => ['1000','2000','3000','4000'] 2)生成16进制序列预分区 create 'staff2','info','partition2',{NUMREGIONS => 15, SPLITALGO => 'HexStringSplit'} 3)按照文件中设置的规则预分区 创建splits.txt文件内容如下: create 'staff3','partition3',SPLITS_FILE => 'splits.txt' 4)使用JavaAPI创建预分区

02_尚硅谷大数据之Hive安装

第2章Hive安装 2.1 Hive安装地址 1)Hive官网地址: https://www.doczj.com/doc/e017304485.html,/ 2)文档查看地址: https://https://www.doczj.com/doc/e017304485.html,/confluence/display/Hive/GettingStarted 3)下载地址: https://www.doczj.com/doc/e017304485.html,/dist/hive/ 4)github地址: https://https://www.doczj.com/doc/e017304485.html,/apache/hive 2.2 Hive安装部署 1)Hive安装及配置 (1)把apache-hive-1.2.1-bin.tar.gz上传到linux的/opt/software目录下 (2)解压apache-hive-1.2.1-bin.tar.gz到/opt/module/目录下面 [atguigu@hadoop102 software]$ tar -zxvf apache-hive-1.2.1-bin.tar.gz -C /opt/module/ (3)修改apache-hive-1.2.1-bin.tar.gz的名称为hive [atguigu@hadoop102 module]$ mv apache-hive-1.2.1-bin/ hive (4)修改/opt/module/hive/conf目录下的hive-env.sh.template名称为hive-env.sh [atguigu@hadoop102 conf]$ mv hive-env.sh.template hive-env.sh (5)配置hive-env.sh文件 (a)配置HADOOP_HOME路径 export HADOOP_HOME=/opt/module/hadoop-2.7.2 (b)配置HIVE_CONF_DIR路径 export HIVE_CONF_DIR=/opt/module/hive/conf 2)Hadoop集群配置 (1)必须启动hdfs和yarn [atguigu@hadoop102 hadoop-2.7.2]$ sbin/start-dfs.sh [atguigu@hadoop103 hadoop-2.7.2]$ sbin/start-yarn.sh

13_尚硅谷大数据之常见错误及解决方案

第13章常见错误及解决方案 1)SecureCRT 7.3出现乱码或者删除不掉数据,免安装版的SecureCRT 卸载或者用虚拟机直接操作或者换安装版的SecureCRT 2)连接不上mysql数据库 (1)导错驱动包,应该把mysql-connector-java-5.1.27-bin.jar导入/opt/module/hive/lib的不是这个包。错把mysql-connector-java-5.1.27.tar.gz导入hive/lib包下。 (2)修改user表中的主机名称没有都修改为%,而是修改为localhost 3)hive默认的输入格式处理是CombineHiveInputFormat,会对小文件进行合并。 hive (default)> set hive.input.format; hive.input.format=https://www.doczj.com/doc/e017304485.html,bineHiveInputFormat 可以采用HiveInputFormat就会根据分区数输出相应的文件。 hive (default)> set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; 4)不能执行mapreduce程序 可能是hadoop的yarn没开启。 5)启动mysql服务时,报MySQL server PID file could not be found! 异常。 在/var/lock/subsys/mysql路径下创建hadoop102.pid,并在文件中添加内容:4396 6)报service mysql status MySQL is not running, but lock file (/var/lock/subsys/mysql[失败])异常。 解决方案:在/var/lib/mysql 目录下创建:-rw-rw----. 1 mysql mysql 5 12月22 16:41 hadoop102.pid 文件,并修改权限为777。 附录:Sqoop常用命令及参数手册 这里给大家列出来了一部分Sqoop操作时的常用参数,以供参考,需要深入学习的可以参看对应类的源代码。

7_尚硅谷大数据之HDFS概述

一HDFS概述 1.1 HDFS产生背景 随着数据量越来越大,在一个操作系统管辖的范围内存不下了,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统。HDFS只是分布式文件管理系统中的一种。 1.2 HDFS概念 HDFS,它是一个文件系统,用于存储文件,通过目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。 HDFS的设计适合一次写入,多次读出的场景,且不支持文件的修改。适合用来做数据分析,并不适合用来做网盘应用。 1.3 HDFS优缺点 1.3.1 优点 1)高容错性 (1)数据自动保存多个副本。它通过增加副本的形式,提高容错性; (2)某一个副本丢失以后,它可以自动恢复。 2)适合大数据处理 (1)数据规模:能够处理数据规模达到GB、TB、甚至PB级别的数据; (2)文件规模:能够处理百万规模以上的文件数量,数量相当之大。 3)流式数据访问,它能保证数据的一致性。 4)可构建在廉价机器上,通过多副本机制,提高可靠性。 1.3.2 缺点 1)不适合低延时数据访问,比如毫秒级的存储数据,是做不到的。 2)无法高效的对大量小文件进行存储。 (1)存储大量小文件的话,它会占用NameNode大量的内存来存储文件、目录和块信息。这样是不可取的,因为NameNode的内存总是有限的; (2)小文件存储的寻址时间会超过读取时间,它违反了HDFS的设计目标。 3)并发写入、文件随机修改。

(1)一个文件只能有一个写,不允许多个线程同时写; (2)仅支持数据append(追加),不支持文件的随机修改。 1.4 HDFS组成架构 HDFS的架构图 这种架构主要由四个部分组成,分别为HDFS Client、NameNode、DataNode和Secondary NameNode。下面我们分别介绍这四个组成部分。 1)Client:就是客户端。 (1)文件切分。文件上传HDFS的时候,Client将文件切分成一个一个的Block,然后进行存储; (2)与NameNode交互,获取文件的位置信息; (3)与DataNode交互,读取或者写入数据; (4)Client提供一些命令来管理HDFS,比如启动或者关闭HDFS; (5)Client可以通过一些命令来访问HDFS; 2)NameNode:就是Master,它是一个主管、管理者。 (1)管理HDFS的名称空间; (2)管理数据块(Block)映射信息; (3)配置副本策略; (4)处理客户端读写请求。 3) DataNode:就是Slave。NameNode下达命令,DataNode执行实际的操作。 (1)存储实际的数据块;

高清现场:尚硅谷区块链、AI技术沙龙人气爆棚!

下一届技术沙龙即将举办 我们在北京相聚 敬请期待! 2018年4月1日,来自各企业的IT技术人员、编程爱好者、教育从业者等百余位专业技术人士,齐聚深圳西部硅谷大厦,参加了由尚硅谷教育举办的“渔人节”IT技术交流研讨会。尚硅谷教育知名讲师韩顺平、宋红康、封捷等做了主题演讲,尚硅谷教育创始人佟刚老师(学员昵称:刚哥)出席了研讨会。 签到处排成了长队

座无虚席的沙龙现场,不得不临时加座 此次沙龙,是深圳少有的IT互联网专业技术沙龙。原本规划30人的规模,因报名太多,不得不连夜紧急寻找更大的场地,以尽可能多地满足大家的参会需求。沙龙的议题从程序员创业,到AI(人工智能)、区块链,专属IT从业者的聚会,专业性和活跃感并存。 各位嘉宾具体都分享了什么内容呢?一起来看看吧。 一 刚刚录制了Linux教程的韩顺平老师做了开场演讲。

韩老师分享了自己的创业历程和心得,以及加入尚硅谷的前因后果(详见:创业不易,尚硅谷教育延续初心)。韩老师说,从事一个行业,经验累积非常重要,所有的经历都是收获;软件工程师作为专业技术人员,更应该选对方向,努力不懈。 二 科技发展瞬息万变,每个时代都有每个时代的领军人物和代表性的技术方向,人工智 能正是当今时代的主角之一。 人类制造人工智能,目的是为了要造出机器人,和人差不多吗?或者换句话说,人类 今天能够站在食物链的顶端,靠的是什么呢?在引人深思的发问中,宋红康老师的《无学习,不AI》演讲开始了。 宋老师对人工智能的发展历程、深度学习崛起的时代背景和应用场景,以及常见的机 器学习算法、深度学习网络结构的技术趋势及应用,进行了生动幽默的全景式展现。 最后,以是否出现不可避免的人机大战收尾,引发全场思考。

05_尚硅谷大数据之Kafka producer拦截器(interceptor)

第5章Kafka producer拦截器(interceptor) 5.1 拦截器原理 Producer拦截器(interceptor)是在Kafka 0.10版本被引入的,主要用于实现clients端的定制化控制逻辑。 对于producer而言,interceptor使得用户在消息发送前以及producer回调逻辑前有机会对消息做一些定制化需求,比如修改消息等。同时,producer允许用户指定多个interceptor 按序作用于同一条消息从而形成一个拦截链(interceptor chain)。Intercetpor的实现接口是org.apache.kafka.clients.producer.ProducerInterceptor,其定义的方法包括: (1)configure(configs) 获取配置信息和初始化数据时调用。 (2)onSend(ProducerRecord): 该方法封装进KafkaProducer.send方法中,即它运行在用户主线程中。Producer确保在消息被序列化以及计算分区前调用该方法。用户可以在该方法中对消息做任何操作,但最好保证不要修改消息所属的topic和分区,否则会影响目标分区的计算 (3)onAcknowledgement(RecordMetadata, Exception): 该方法会在消息被应答或消息发送失败时调用,并且通常都是在producer回调逻辑触发之前。onAcknowledgement运行在producer的IO线程中,因此不要在该方法中放入很重的逻辑,否则会拖慢producer的消息发送效率 (4)close: 关闭interceptor,主要用于执行一些资源清理工作 如前所述,interceptor可能被运行在多个线程中,因此在具体实现时用户需要自行确保线程安全。另外倘若指定了多个interceptor,则producer将按照指定顺序调用它们,并仅仅是捕获每个interceptor可能抛出的异常记录到错误日志中而非在向上传递。这在使用过程中要特别留意。 5.2 拦截器案例 1)需求: 实现一个简单的双interceptor组成的拦截链。第一个interceptor会在消息发送前将时间戳信息加到消息value的最前部;第二个interceptor会在消息发送后更新成功发送消息数或

尚硅谷大数据技术之Phoenix

第1章Phoenix简介 1.1Phoenix定义 Phoenix是HBase的开源SQL皮肤。可以使用标准JDBC API代替HBase客户端API来创建表,插入数据和查询HBase数据。 1.2 Phoenix特点 1) 容易集成:如Spark,Hive,Pig,Flume和Map Reduce。 2) 操作简单:DML命令以及通过DDL命令创建和操作表和版本化增量更改。 3) 完美支持Hbase二级索引创建。 1.3 Phoenix架构 Phoenix架构

1.4 Phoenix的作用 第2章Phoenix快速入门 2.1 Phoenix安装部署 2.1.1 官方网址: 2.1.2 上传jar包到/opt/software/ 2.1.3 复制server和client这俩个包拷贝到各个节点的hbase/lib 在phoenix目录下 向每个节点发送server jar

向每个节点发送client jar 2.1.4 在root权限下给/etc/profile 下添加如下内容 2.1.5 启动Zookeeper,Hadoop,Hbase 2.1.6 启动Phoenix 2.2 phoenix表操作 2.2.1 显示所有表

2.2.2 创建表 如下显示: 在phoenix中,默认情况下,表名等会自动转换为大写,若要小写,使用双引号,如"us_population"。 2.2.3 插入记录 2.2.4 查询记录 2.2.5 删除记录 2.2.6 删除表 2.2.7 退出命令行 2.3 phoenix表映射 2.3.1 Phoenix和Hbase表的关系 默认情况下,直接在hbase中创建的表,通过phoenix是查看不到的。如图1和图2,US_POPULATION是在phoenix中直接创建的,而kylin相关表是在hbase中直接创建的,在phoenix中是查看不到kylin等表的。

大数据技术之Atlas(5元数据管理)

尚硅谷大数据技术之Atlas(元数据管理) 第1章Atlas入门 1.1 Atlas概述 Apache Atlas为组织提供开放式元数据管理和治理功能,用以构建其数据资产目录,对这些资产进行分类和管理,并为数据分析师和数据治理团队,提供围绕这些数据资产的协作功能。 1)表与表之间的血缘依赖 2)字段与字段之间的血缘依赖 1

2 1.2 Atlas 架构原理 Atlas 架构原理 类型系统(Type System): 用户为他们想要管理的元数据对象定义模型。Type System 称为“实体”的“类型”实例,表示受管理的实际元数据对象。 图形引擎(Graph Engine): Atlas 在内部使用Graph 模型持久保存它管理的元数据对象。 采集/导出(Ingest/Export):采集组件允许将元数据添加到Atlas 。同样,“导出”组件将Atlas 检测到的元数据导出。API: Atlas 的所有功能都通过REST API 向最终用户暴露,该API 允许创建,更新和删除类型和实体。它也是查询和发现Atlas 管理的类型和实体的主要机制。 Messaging: 除了API 之外,用户还可以选择使用基于Kafka 的消息传递接口与Atlas 集成。 Metadata Sources :目前,Atlas 支持从以下来源提取和管理元数据:HBase 、Hive 、Sqoop 、Storm 、Kafka Admin UI: 该组件是一个基于Web 的应用程序,允许数据管理员和科学家发现和注释元数据。这里最重要的是搜索界面和类似SQL 的查询语言,可用于查询Atlas 管理的元数据类型和对象。 Ranger Tag Based Policies :权限管理模块Business Taxonomy :业务分类 Metadata Store:采用HBase 来存储元数据Index Store:采用Solr 来建索引 第2章 Atlas 安装及使用 1) Atlas 官网地址:s:https://www.doczj.com/doc/e017304485.html,/ 2)文档查看地址:s:https://www.doczj.com/doc/e017304485.html,/0.8.4/index.html 3)下载地址:s:https://www.doczj.com/doc/e017304485.html,/dyn/closer.cgi/atlas/0.8.4/apache-atlas-0.8.4-sources.tar.gz

尚硅谷大数据项目之实时项目5(灵活分析需求)

1.1 灵活查询的场景 数仓中存储了大量的明细数据,但是hadoop存储的数仓计算必须经过mr ,所以即时交互性非常糟糕。为了方便数据分析人员查看信息,数据平台需要提供一个能够根据文字及选项等条件,进行灵活分析判断的数据功能。 2.2 需求详细 输入参数 返回结果

2.1 T+1 模式 2.1.1 实现步骤 1)利用sqoop等工具,从业务数据库中批量抽取数据; 2)利用数仓作业,在dws层组织宽表(用户购买行为); 3)开发spark的批处理任务,把dws层的宽表导入到ES中; 4)从ES读取数据发布接口,对接可视化模块。 2.1.2 特点 优点:可以利用在离线作业处理好的dws层宽表,直接导出一份到ES进行快速交互的分析。缺点:因为要用离线处理的后的结果在放入ES,所以时效性等同于离线数据。

2.2 T+0 模式 2.2.1 实现步骤 1)利用canal抓取对应的数据表的实时新增变化数据,推送到Kafka; 2)在spark-streaming中进行转换,过滤,关联组合成宽表的结构; 3)保存到ES中; 4)从ES读取数据发布接口,对接可视化模块。 2.2.2 特点 优点:实时产生数据,时效性非常高。 缺点:因为从kafka中得到的是原始数据,所以要利用spark-streaming要进行加工处理,相对来说要比批处理方式麻烦,比如join操作。 第3章实时采集数据 3.1 在canal 模块中增加要追踪的表 代码 public class CanalHandler { private List rowDatasList; String tableName; CanalEntry.EventType eventType;

尚硅谷大数据项目之实时项目4(预警需求)

第1章需求分析 1.1 简介 实时预警,是一种经常出现在实时计算中的业务类型。根据日志数据中系统报错异常,或者用户行为异常的检测,产生对应预警日志。预警日志通过图形化界面的展示,可以提醒监控方,需要及时核查问题,并采取应对措施。 1.2 需求说明 需求:同一设备,5分钟内三次及以上用不同账号登录并领取优惠劵,并且在登录到领劵过程中没有浏览商品。达到以上要求则产生一条预警日志。 同一设备,每分钟只记录一次预警。 1.3 预警日志格式

第2章整体流程设计 2.1 框架流程 2.2 开发思路 1)从kafka中消费数据,根据条件进行过滤筛选,生成预警日志;2)预警日志保存到ElasticSearch中; 3)利用Kibana快速搭建可视化图形界面。 第3章实时计算模块 3.1 筛选条件分析 同一设备(分组) 5分钟内(窗口) 三次不同账号登录(用户) 领取优惠券(行为) 没有浏览商品(行为)

同一设备每分钟只记录一次预警(去重)3.2 数据处理流程图 3.3 代码开发 3.3.1 事件日志样例类– EventInfo case class EventInfo(mid:String, uid:String, appid:String, area:String, os:String, ch:String, `type`:String, evid:String, pgid:String, npgid:String, itemid:String, var logDate:String, var logHour:String, var ts:Long)

3.3.2 预警日志样例类–CouponAlertInfo case class CouponAlertInfo(mid:String, uids:java.util.HashSet[String], itemIds:java.util.HashSet[String], events:java.util.List[String], ts:Long) 3.3.3 预警业务类– AlertApp import com.alibaba.fastjson.JSON import com.atguigu.gmall.constant.GmallConstants import com.atguigu.gmall2019.realtime.bean.{CouponAlertInfo, EventInfo} import com.atguigu.gmall2019.realtime.util.{MyEsUtil, MyKafkaUtil} import org.apache.kafka.clients.consumer.ConsumerRecord import org.apache.spark.SparkConf import org.apache.spark.streaming.dstream.{DStream, InputDStream} import org.apache.spark.streaming.{Seconds, StreamingContext} import scala.util.control.Breaks._ object AlertApp { def main(args: Array[String]): Unit = { val sparkConf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("event_app") val ssc = new StreamingContext(sparkConf,Seconds(5)) val inputDstream: InputDStream[ConsumerRecord[String, String]] = MyKafkaUtil.getKafkaStream(GmallConstants.KAFKA_TOPIC_EVENT,ssc) //1 格式转换成样例类 val eventInfoDstream: DStream[EventInfo] = inputDstream.map { record => val jsonstr: String = record.value() val eventInfo: EventInfo = JSON.parseObject(jsonstr, classOf[EventInfo]) eventInfo } //2 开窗口 val eventInfoWindowDstream: DStream[EventInfo] = eventInfoDstream.window(Seconds(30),Seconds(5)) //3同一设备分组 val groupbyMidDstream: DStream[(String, Iterable[EventInfo])] = eventInfoWindowDstream.map(eventInfo=>(eventInfo.mid,eventInfo)). groupByKey() //4 判断预警 // 在一个设备之内 // 1 三次及以上的领取优惠券 (evid coupon) 且 uid都不相同 // 2 没有浏览商品(evid clickItem) val checkCouponAlertDStream: DStream[(Boolean, CouponAlertInfo)] = groupbyMidDstream.map { case (mid, eventInfoItr) =>

04_尚硅谷大数据之DDL数据定义

第4章DDL数据定义 4.1 创建数据库 1)创建一个数据库,数据库在HDFS上的默认存储路径是/user/hive/warehouse/*.db。 hive (default)> create database db_hive; 2)避免要创建的数据库已经存在错误,增加if not exists判断。(标准写法) 3)创建一个数据库,指定数据库在HDFS上存放的位置 hive (default)> create database db_hive2 location '/db_hive2.db'; 4.2 修改数据库 用户可以使用ALTER DATABASE命令为某个数据库的DBPROPERTIES设置键-值对属性值,来描述这个数据库的属性信息。数据库的其他元数据信息都是不可更改的,包括数据库名和数据库所在的目录位置。 hive (default)> alter database db_hive set dbproperties('createtime'='20170830'); 在mysql中查看修改结果 hive> desc database extended db_hive; db_name comment location owner_name owner_type parameters db_hive hdfs://hadoop102:8020/user/hive/warehouse/db_hive.db atguigu USER {createtime=20170830} 4.3 查询数据库 4.3.1 显示数据库 1)显示数据库

hive> show databases; 2)过滤显示查询的数据库 hive> show databases like 'db_hive*'; OK db_hive db_hive_1 4.3.2 查看数据库详情 1)显示数据库信息 hive> desc database db_hive; OK db_hive hdfs://hadoop102:8020/user/hive/warehouse/db_hive.db atguiguUSER 2)显示数据库详细信息,extended hive> desc database extended db_hive; OK db_hive hdfs://hadoop102:8020/user/hive/warehouse/db_hive.db atguiguUSER 4.3.3 切换当前数据库 hive (default)> use db_hive; 4.4 删除数据库 1)删除空数据库 hive>drop database db_hive2; 2)如果删除的数据库不存在,最好采用if exists判断数据库是否存在 hive> drop database if exists db_hive2; 3)如果数据库不为空,可以采用cascade命令,强制删除

相关主题
文本预览
相关文档 最新文档