文章目录
- 理解什么是大数据分析以及其应用场景。
- 熟悉Hadoop/Hive的基本概念与原理。
- 严格按照步骤进行服务器/虚拟机操作。
- 熟悉Hive的基本操作。
- 使用云实验环境启动Hive。
1 大数据分析简介
大数据:这个名词是近年来伴随着以Hadoop为代表的一系列分布式计算框架的产生才流行起来的。大数据带来的挑战包括数据分析、数据捕获、数据治理、搜索、共享、存储、传输、可视化、查询、更新和信息安全等。术语大数据通常指的是应用预测分析,用户行为分析,或者某些其他从数据中提取有价值信息的高级数据分析方法,并不是专指某种特定规模的数据集(维基百科)
大数据4V特征:指的是数据源和数据种类多样(Variety)、数据产生和处理速度快(Velocity)、生成和存储的数据量大(Volume)和精准性(Veracity)。
思考:为什么需要大数据分析?
- 任何企业都不能否认数据的重要性。企业一直都在收集大量的历史数据,并将其保存在数据仓库中以便进行分析。企业可以通过分析历史数据来获得新的增长点,这也证明了数据的重要性。由于数据结构和数据规模的特点,使用传统的数据库和方法已经很难有效地对大数据进行分析,因为我们需要新的工具和技术来存储,管理和实现数据的商业价值。
大数据数据分析的商业驱动因素
商业驱动力 | 案例 |
优化业务操作 | 销售,报价,利润率,效率 |
识别业务风险 | 客户流失,欺诈,违约 |
预测新的商业机会 | 增值销售,追加销售,最佳的潜在新客户 |
遵守法律或法规要求 | 反洗钱,公平信贷 |
2 走进Hadoop
2.1 快速认知Hadoop
- Hadoop是Apache基金组织下的一套开源软件平台:免费(hive也是免费的)
- Hadoop提供的功能:利用服务器集群对海量数据进行分布式处理:数据很多的情况下,用多台服务器处理,加快处理速度
- Hadoop的核心组件:HDFS、MapReduce、YARN、Hadoop基础功能库
- 广义上来说,Hadoop通常指的是指一个更广泛的概念->Hadoop生态圈
- 云计算是分布式计算、并行计算、网格计算、多核计算、网络存储、虚拟化、负载均衡等传统计算机技术和互联网技术融合发展的产物。借助IaaS(基础设施即服务)、PaaS(平台即服务)、SaaS(软件即服务)等业务模式,把强大的计算能力提供给终端用户:类似盖房子,IaaS第一层,PaaS第二层,…(了解)
- 现阶段,云计算的两大底层支撑技术为虚拟化和大数据技术
- Hadoop是云计算的PaaS层的解决方案之一,并不等同于PaaS,更不等同于云计算本身:Hadoop只是属于PaaS层一个产物或工具
- Hadoop广泛应用于数据服务基础平台建设、用户画像、网站点击流日志数据挖掘
2.2 HDFS:块级别的分布式文件存储系统
块级别的理解:
假设一个500M的文件,被均分成4块,分别是p1:128M,p2:128M,p3:128M,p4:116M,这四个块会被随机地分到多个服务器中,假设是3个服务器A,B,C
- A:p1,p3
- B:p2
- C:p4
p4虽然只有116M,但是也要在C中占据128M的位置,也就是不管胖瘦都穿一个size的衣服。
2.3 MapReduce:分布式计算框架
Spark是一个计算平台,和MapReduce是相互竞争的关系,Spark速度更快,MapReduce更稳定可靠
MapReduce是采用一种分而治之的思想设计出来的分布式计算框架
如一复杂的计算任务,单台服务器无法胜任时,可将此大任务切分成一个个小的任务,小任务分别在不同的服务器上并行(在不同的服务器上执行)的执行;
最终再汇总每个小任务的结果MapReduce由两个阶段组成:
- Map阶段(切分成一个个小的任务)
- Reduce阶段(汇总小任务的结果)
如果在Reduce前断电的话,任务会失败
2.4 YARN:作业调度和资源管理器
YARN是集群(服务器们,集群就是一群服务器)的管家,就是Map阶段分任务的,服务器找YARN申请,YARN分配。
2.5 Hadoop生态圈
3 走进Hive
3.1 Hive是什么?
- 基于Hadoop的开源的数据仓库工具,用于处理海量结构化数据:免费
- Hive把HDFS中结构化的数据文件映射成数据表
- Hive通过把HiveSQL进行解析和转换,最终生成一系列在hadoop上运行的mapreduce任务,通过执行这些任务完成数据分析与处理
- HiveSQL和MySQL一样,都遵循着SQL的标准,因此它们很多语句都是一样的
3.2 Hive与传统数据库的比较
说明:
- 数据仓库(hive)/关系型数据库 都是用来做数据存储和数据分析的,对企业中的决策起到关键性的作用
- 关系型数据库容易遇到可拓展性瓶颈,进行向上拓展通常意味着要购买性能更强劲的硬件设备
- Hadoop很容易进行集群的横向拓展,便捷地进行节点的退役与服役
- 数据仓库中的历史数据一般不会改变,因为其主要用来记录已经发生的事实的数据:一般没有删除操作,主要用来查询,有时增加
- 面向事务的联机事务处理OLTP vs 面向分析的联机分析处理OLAP
hive中放日志数据,mysql的数据也可以放hive中,但是mysql体量小。
3.3 Hive的数据类型
基本数据类型
复杂数据类型
4 Hive的数据定义与操作
4.1 数据库相关
创建数据库
CREATE (DATABASE/SCHEMA) [IF NOT EXISTS] database_name
[COMMENT database_comment]
[LOCATION hdfs_path]
[WITH DBPROPERTIES (property_name=property_value,...)];
案例演示:
create database if not exists kaikeba;
查看数据库信息
desc database extended 数据库名;
删除数据库【了解】
drop database if exists kaikeba;
drop database if exists kaikeba cascade;强制删除数据库
修改数据库【了解】
ALTER (DATABASE/SCHEMA) database_name SET LOCATION
hdfs_path;
4.2 数据表相关
创建数据表
create [external] table if not exists 表名
(列名 数据类型 [comment 本列注释],...)
[comment 表注释]
[partitioned by (列名 数据类型 [comment 本列注释],...)]
[clustered by(列名,列名,...)]
[sorted by (列名 [asc|desc],...)] info num_buckets
buckets]
[row format row_format]
[stored as file_format]
[location hdfs_path]
[tblproperties (property_name=property_value,...)]
[as select_statement]
说明:
①external表示创建外部表
②partitioned by表示创建分区表
③clustered by创建分桶表
④sorted by 不常用
⑤row format delimited [fields terminated by char]
[collection items terminated by char] [map keys terminated
by char] [line terminated by char] ⑥stored as 指定文件存储类型(sequencefile二进制文件、textfile文
本文件、rcfile列式存储格式) ⑦location 指定表在hdfs上的存储位置
⑧like 允许用户复制现有的表结构,但是不复制数据
⑨as 后跟查询语句,根据查询结果创建表
查看数据表结构
desc formatted table_name;
修改表【了解】
修改表名
ALTER TABLE log_messages RENAME TO logmsgs;
向表中添加列
ALTER TABLE log_messages ADD COLUMNS (
app_name STRING COMMENT ' Application name ' ,
session_id BIGINT COMMENT ' The current session
id');
修改列名
ALTER TABLE table_name change column_name new_column_name
new_type;
删除表【了解】
drop table if exists table_name;
清空表【了解】
truncate table employee;
分区表
- hive中有分区表的概念,我们可以看到分区具重要性能优势,分区表可以将数据以一种符合逻辑的方式进行组织,比如分层存储。查询分区表中的数据时,除非where语句中包含分区字段过滤条件来显示数据范围,否则不允许执行。换句话说,就是用户不允许扫描所有的分区。进行这个限制的原因是,通常分区表都拥有非常大的数据集,而且数据增加迅速。如果没有进行分区限制的查询可能会消耗令人不可接受的巨大资源来处理这个表
数据的导入和导出【了解】
1.从本地导入到表中
load data local inpath '本地路径' overwrite into table
sogou [partition(partcol1=val1,....)];
2.从HDFS导入到表中
load data inpath 'HDFS上的路径' into table 表名
[partition(partcol1=val1,....)];
3.将Hive表中的数据导出到本地
insert overwrite local directory '本地路径' 查询语句; 4.将Hive表中的数据导出到HDFS
insert overwrite directory 'HDFS路径' 查询语句;
5 拓展知识
CentOS7系统的基本常识
- CentOS7是一个Liunx操作系统,能够同时登陆多个用户。这些用户的文件互不相通
- Liunx系统中,我们通过命令来和主机进行交互
- root用户是Linux系统中的超级管理员。我们一般使用普通的用户进行操作
- 普通用户的操作受到很多限制,各个用户之间有一层权限保证操作的安全性
- 学习好linux系统,关键是掌握命令的使用。命令的基本格式:命令 -选项 参数
常用的Linux命令
cd:切换目录,进入到某个目录
1. cd /etc/ 表示进入/etc这个目录中
2. cd ../ 表示返回上一级目录
3. cd 进入当前用户的家目录
su - 用户名:切换用户
查看当前所在的目录路径:pwd
ls:列出目录下的文件
ll:列出目录下的文件
ifconfig:查看网卡的配置信息
mkdir:新建一个目录/文件夹
touch:新建一个文件
vim:文件编辑器
1. 一般模式
2. 插入模式
3. 命令模式
rm -rf 文件:删除文件/目录
当我们在mac通过iterms2运行Mac终端时,需要使用党上述常见的linux语言,例如我们需要修改一个文件时:
cd到file所在文件夹
vim filename
接着我们需要查找需要修改的字段,在远端linux中查找不同于在本机查找(command+F):
- command+F只能找到本地信息
- 若想要找到远端的信息,步骤如下:
- 输入斜杠
/ + 查找内容
- 回车 - 按“N
”向下查找 - 找到要修改的位置,输入
i
进入编辑模式,方向键定位光标位置,按del
按键删除不要的信息,完成编辑后按esc
退出编辑模式; - 完成全部修改任务,输入冒号
:wq
保存退出文档;输入:q
不保存直接退出文档。