Hadoop三大组件:
分布式文件系统:HDFS —— 实现将文件分布式存储在很多的服务器上(分布式存储)
分布式运算编程框架:MapReduce——实现多台机器的分布式并行运算。(分布式运算)
分布式资源调度平台:YARN —— 帮用户调度大量的mapreduce程序,并合理分配运算资源
Hive 入门
Hive构建在Hadoop上
HQL中对查询语句的解释、优化、生成查询计划是由Hive完成的所有的数据存储在Hadoop上。
查询计划被转化为 MapReduce 任务(job),在 Hadoop 中执行(有些查询没有 MR 任务,如:select * from table)
Hadoop和Hive都是用UTF-8编码的
常见数据库(database简称DB)
关系型数据库(关系型数据库就是由二维表及其之间的联系组成的一个数据组织):
mysql oracle sqlServer postgresql(小oracle)
非关系型数据库:mangodb hbase redis
数据仓库datawarehouse简称DW(数据处理分为两大类,)
数据仓库和数据库的区别:
数据仓库的数据量大,数据库以数据量小
数据仓库可新增但很慢,且复杂并且不能修改删除,一般只用于大批量查询;
数据库支持量小的增删改查
数据仓库是用来分析(OLAP)的,以读操作为主;数据库主要用来处理事务(OLTP),以写操作为主
联机分析处理:OLAP
联机事务处理:OLTP
数据仓库有哪些?
Hive EMR(阿里) TDW(腾讯) infosfree(IBM) 。。。。。数据仓库产品至少有几十个
数据仓库数据从何而来
1 log包括应用日志,系统日志 ,web日志(tomcat,ngnix,apache)
2数据库
3 外部(爬虫,外部公司接口)
为什么用hive
1, 开源
2,免费
3,基于hadoop编码格式与其都是UTF-8
tips;ETL数据处理 进行数据提取转化
桥接模式。 静态IP 异地,需要更改ip 因为和本机是同一网段
NAT模式,动态ip 局域网 有自己的虚拟适配器网关,因此无论异地,无需更改
网关一般为192.168.1.1 网络数据 传输都需要经过网关
DNS domain name service 域名解析器
浏览地址,一般会先查找系统host文件中是否有对应的,没有才回通过DNS域名解析服务进行查找
Tips 子网掩码的作用是判断该IP是否为同一网段
HDFS dfs -mkdir /xxx
Hive基本语法
基础数据类型包括:TINYINT,SMALLINT,INT,BIGINT,BOOLEAN,FLOAT,DOUBLE,STRING,BINARY,TIMESTAMP(时间戳,年月日时分秒),DECIMAL(精确小数,保证不会丢失,与钱有关的使用),CHAR,VARCHAR,DATE(日期:年月日)
元数据(Metadata)
元数据:形容数据的数据 ie:文件的内容是数据,那形容文件的信息如:文件大小、文件位置、文件访问时间、修改时间是元数据
Hive的数据是一张一张的表
Hive的元数据是形容表的数据,表的字段、标的名字、表的位置存放在mysql中
Tips:jps命令:当前虚拟机的java进程
Start-all.sh 启动所有
HQL语句
创建表
hive/ create table nanjing(id int,name string) row format delimited fields terminated by ‘,‘;
hive/ CREATE TABLE invites (foo INT, bar STRING) PARTITIONED BY (ds STRING);
PARTITIONED 分区
分区可以多级分区
分区字段不是表中字段
不限分区个数
例如:CREATE TABLE invites (foo INT, bar STRING) PARTITIONED BY (day STRING);
load data local inpath ‘/tmp/record‘ into table record partition(dggg
Hadoo页面本地文件系统目录 : /user/hive/warehouse
Hive内部表和外部表
默认创建的表是内部表
如果在创建的时候加上external就是外部表
区别:
内部删除的时候 会将数据和元数据一起删除
外部表只删除元数据,数据仍旧保留
外部表比内部表安全,但删除麻烦 推荐使用
加载本地数据,同时给定分区信息
hive> LOAD DATA LOCAL INPATH ‘./examples/files/kv2.txt‘ OVERWRITE INTO TABLE invites PARTITION (ds=‘2008-08-15‘);
加载DFS数据 ,同时给定分区信息hadoop -fs put record/1.txt
hive> LOAD DATA INPATH ‘/user/myname/kv2.txt‘ OVERWRITE INTO TABLE invites PARTITION (ds=‘2008-08-15‘);
Hive的执行引擎
1、local本地模式 不在yarn上执行mr,在本地。不是分布式执行
2、Mr mapreduce
3、Spark
4、tez
命令异常详解
ParseException 解析异常
SemanticRxception 语法异常
hive只是一个工具 把数据存放在 HDFS中,把元数据存放在mysql中
hive操作查询流程: 索引查询顺序,先去mysql 查询表在那个数据库里,发现数据库在HDFS中的指定位置,因此就去HDFS中 把文件下载下来 ,然后在显示在hive工具中。
mysql设置密码
mysqladmin -u root password ‘yourpassword‘
当在hive中创建了一个数据目录,
DBS(database)存放hive中的数据目录路径信息
TBLS 存放hive中的基本表信息