-》重难点
-》二次排序、HA、yarn、hdfs
-》MarkDown/有道笔记
一、介绍Hive
-》来源:Facebook
-》2008年
-》原因:
-》MapReduce编程十分麻烦
-》driver、Mapper、reduce
-》java 开发
-》缺少大量的开发人员,DBA(数据分析)
-》发展以及版本
-》0.x:0.13.1
-》1.x:1.2.1 常见
MapReduce/Tez/Spark
-》2.x:2.1.0 生产环境中很少见
hive MLlib
-》区别:
-》性能越来越高效
-》越来越像关系型数据库
-》应用场景
-》使用SQL来解决大数据存储及大数据分析问题
-》直接使用SQL就可以对数据进行分析开发
hadoop hbase spark
hive hadoop
mapreduce:java 100行
hadoop,1
hbase,1
spark,1
hive,1
hadoop,1
分组:将相同key的value合并
SQL:wordcount:每个单词出现的次数
select
word,count(word) as cnt
from
testSql
group by
word
order by
cnt desc;
-》应用
-》构建数据仓库
-》用户画像
-》ETL(抽取、转换、加载)
-》数据采集:hdfs
-》数据清洗:etl
-》数据分析
-》数据展示
-》结构化数据
-》结构化:固定行和列
-》半结构化
-》非结构化
-》如何在hive中实现wordcount
hadoop hbase spark
hive hadoop
-》将一行转为多行,一行一个单词
explode:行列转换的函数
-》对单词进行分组统计
hadoop
hbase
spark
hive
hadoop
-》原理
-》基于hadoop之上
-》存储:hdfs/hbase(hdfs)
-》计算:MapReduce
-》功能:
-》将SQL语句转换为MapReduce程序
MapReduce默认输入读hdfs文件来进行处理
||
SQL处理的数据也是hdfs文件
||
SQL处理表中的数据
-》将hdfs文件变成表格
表格:固定的行和列
||
日志:固定的行和列
-》hive:hdfs+mapreduce
-》hadoop的客户端(SQL)
-》特点:
-》数据仓库/数据集市/数据仓库建模
-》使用SQL对大数据进行分析
-》SQL:DDL/DML
数据定义语言:create
数据操作语言:update、delete、select、insert
SQL:mysql、oracle
create、update、delete、select、insert
HQL:Hive、spark SQL
create、select、insert(不做行级的事务)
-》hadoop
-》hdfs:分布式存储
-》MapReduce:分布式计算
-》SQL on Hadoop = Hive
-》presto:京东
-》impala:cloudera
-》存储:hdfs
-》计算:
MapReduce =》 java、scala、Python
Hive =》 HQL(SQL)
-》地址:hive.apache.org
hadoop.apache.org
flume.apache.org
spark.apache.org
sqoop.apache.org
oozie.apache.org
-》支持udf/自定义存储格式
-》user define function
-》自己开发一个函数,打成jar包
-》放入hive中,使用自己开发的函数
二、安装部署hive
-》简单安装
-》下载解压
apache-hive-1.2.1-bin.tar.gz
tar -zxvf apache-hive-1.2.1-bin.tar.gz -C /opt/modules/
-》修改配置
mv hive-env.sh.template hive-env.sh
mv hive-log4j.properties.template hive-log4j.properties
mv beeline-log4j.properties.template beeline-log4j.properties
mv hive-exec-log4j.properties.template hive-exec-log4j.properties
-》修改hive-env.sh
HADOOP_HOME=/opt/modules/hadoop-2.7.3
export HIVE_CONF_DIR=/opt/modules/hive-1.2.1-bin/conf
-》配置hdfs
-》hive的数据仓库结构(与数据库类似)
-》数据库(目录)、表(目录)、表的数据(文件)
-》给定hive在HDFS上数据仓库的地址
bin/hdfs dfs -mkdir /tmp
bin/hdfs dfs -mkdir -p /user/hive/warehouse
bin/hdfs dfs -chmod g+w /tmp
bin/hdfs dfs -chmod g+w /user/hive/warehouse
-》启动服务
-》启动客户端直接连接服务端
bin/hive
-》测试
-》SQL
-》怎么学习hive
-》Hadoop:hdfs+MapReduce+Yarn
-》将hdfs上的文件变成了表格
-》将SQL转换为MapReduce程序提交给yarn去执行
-》HQL:SQL
create database if not exists wordcount;
use wordcount;
drop table if exists wc;
create table wc(
id int,
word string
)
row format delimited fields terminated by '\t'
LINES TERMINATED BY '\n';
-》把文件映射成表
-》怎么将文件中每一列与表格中的每一列一一对应
-》在创建表时,根据文件行和列的分割符来指定表创建时的分隔符
指定列:row format delimited fields terminated '\t'
指定行:LINES TERMINATED BY '\n'
-》查看表的信息
desc wc;
desc formatted wc;
-》加载数据到表中
load data local inpath '/opt/datas/hivetest.txt' into table wc;
-》hive实现的原理
-》用户提交SQL语句
-》hive判断SQL语句是否合法
-》语法是否正确?
-》表、数据库、是否存在?
-》hive根据表和数据库的信息到hdfs上查找对应的文件
-》hive将表目录下所有的文件作为MapReduce程序的输入
-》封装好底层的MapReduce程序提交给yarn去执行
-》将处理后的结果返回
-》hive将所有表、数据库、文件等一一对应的信息存在数据库中
-》hive的元数据:默认情况使用hive自带的derby数据库进行存储
-》表、文件、数据库等等之间的关系
-》所有表、文件、数据库在hdfs上的位置
-》默认的Derby数据库不适合生产环境
-》文本数据库
-》工作中一般使用mysql来存储hive的元数据
-》hive的组成
-》hadoop
-》文件的存储:hdfs
-》数据的计算:MapReduce、yarn
-》metastore:元数据
-》表、文件、数据库等等之间的关系
-》所有表、文件、数据库在hdfs上的位置
-》Driver:将SQL语句转换为MapReduce程序