Hive

本文详细探讨了Hadoop的顶级项目,分析了MapReduce执行性能低的原因,介绍了MapReduce的思想及其在Hadoop生态系统中的角色。同时,深入讲解了Hive作为构建在Hadoop之上的数据仓库的功能,包括其数据存储、执行方式、运行机制,以及安装配置过程。文章还对比了Hive与传统关系型数据库的优缺点,展示了Hive的SQL查询能力,并提供了实际操作示例。

apache的顶级项目

【1.为什么MR的执行性能低?】

1.map和reduce以一个进程来运行的,启动和销毁进程开销大;spark是线程级别的;

2.当Map 开始产生输出时,它并不是简单的把数据写到磁盘,因为频繁的磁盘操作会导致性能严重下降。它的处理过程更复杂,数据首先是写到内存中的一个缓冲区,并做了一些预排序,以提升效率。

【2.Mapreduce的思想】

map完成之后,为了确保每个reducer的的输入都是按键排序的,系统执行排序的过程,即将map task的输出通过一定规则传给reduce task,这个过程成为shuffle。

 

构建在Hadoop之上的数据仓库
    数据:HDFS
    执行:MR(2.0 过时)  或 Spark 或 Tez 
    运行:YARN

 

hive数据存储在hdfs之上

schema:database/table/column(name/type/index)

元数据信息:描述数据的数据,schema就是元数据信息里面的东西

hive的安装步骤

1.下载

2.解压

3.把hive添加到环境变量

4. 拷贝mysql的驱动到lib下

5)hive-site.xml配置mysql相关信息

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://localhost:3306/ruoze_d6?createDatabaseIfNotExist=true&amp;characterEncoding=UTF-8</value>
</property>

<property>
      <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
</property>

<property>
  <name>javax.jdo.option.ConnectionUserName</name>
    <value>root</value>
</property>

<property>
  <name>javax.jdo.option.ConnectionPassword</name>
    <value>123456</value>
</property>
</configuration>

 

hive是一个客户端,不存在集群的概念。

【3.为什么yarn ui上看到的作业对应的队列是root.hadoop】

在hadoop的配置文件capacity-scheduler.xml里定义成了默认,root默认,机器是hadoop用户。所以是root.hadoop


Hive提供了一种类SQL的语法 Hive QL
SQL 

Hive vs RDBMS(关系型数据库)

  1.  都是使用sql编程
  2.  关系型数据库查询速度快,时效性好;一个hive跑十几个小时很正常
  3. hive的事物鸡肋,不建议使用

 

hive支持insert、update操作,但是性能差

大数据不怕数据量大,就怕数据倾斜!!!

 

Hive实例

hive> create table d6_wc(sentence string);
OK
Time taken: 0.933 seconds
hive> select * from d6_wc;
OK
Time taken: 0.421 seconds
hive> load data local inpath '/home/hadoop/a.txt' into table d6_wc;
Loading data to table default.d6_wc
Table default.d6_wc stats: [numFiles=1, totalSize=49]
OK
Time taken: 0.524 seconds
hive> select * from d6_wc;
OK
hello world
hello yuan
hello nice
hello shanghai
Time taken: 0.096 seconds, Fetched: 4 row(s)

hive> select word,count(1) c
    > from
    > (select explode(split(sentence,' ')) as word from d6_wc) t
    > group by word 
    > order by c desc;
Query ID = hadoop_20190301010202_b52ff6a4-0be3-485d-8c71-6bc9a4b6f4d7
Total jobs = 2
Launching Job 1 out of 2
Number of reduce tasks not specified. Estimated from input data size: 1
In order to change the average load for a reducer (in bytes):
  set hive.exec.reducers.bytes.per.reducer=<number>
In order to limit the maximum number of reducers:
  set hive.exec.reducers.max=<number>
In order to set a constant number of reducers:
  set mapreduce.job.reduces=<number>
Starting Job = job_1550935198005_0003, Tracking URL = http://10-9-61-124:18088/proxy/application_1550935198005_0003/
Kill Command = /home/hadoop/app/hadoop-2.6.0-cdh5.7.0/bin/hadoop job  -kill job_1550935198005_0003
Hadoop job information for Stage-1: number of mappers: 1; number of reducers: 1
2019-03-01 01:02:57,511 Stage-1 map = 0%,  reduce = 0%
2019-03-01 01:03:02,914 Stage-1 map = 100%,  reduce = 0%, Cumulative CPU 1.76 sec
2019-03-01 01:03:09,246 Stage-1 map = 100%,  reduce = 100%, Cumulative CPU 3.11 sec
MapReduce Total cumulative CPU time: 3 seconds 110 msec
Ended Job = job_1550935198005_0003
Launching Job 2 out of 2
Number of reduce tasks determined at compile time: 1
In order to change the average load for a reducer (in bytes):
  set hive.exec.reducers.bytes.per.reducer=<number>
In order to limit the maximum number of reducers:
  set hive.exec.reducers.max=<number>
In order to set a constant number of reducers:
  set mapreduce.job.reduces=<number>
Starting Job = job_1550935198005_0004, Tracking URL = http://10-9-61-124:18088/proxy/application_1550935198005_0004/
Kill Command = /home/hadoop/app/hadoop-2.6.0-cdh5.7.0/bin/hadoop job  -kill job_1550935198005_0004
Hadoop job information for Stage-2: number of mappers: 1; number of reducers: 1
2019-03-01 01:03:16,165 Stage-2 map = 0%,  reduce = 0%
2019-03-01 01:03:21,415 Stage-2 map = 100%,  reduce = 0%, Cumulative CPU 0.91 sec
2019-03-01 01:03:27,743 Stage-2 map = 100%,  reduce = 100%, Cumulative CPU 2.65 sec
MapReduce Total cumulative CPU time: 2 seconds 650 msec
Ended Job = job_1550935198005_0004
MapReduce Jobs Launched: 
Stage-Stage-1: Map: 1  Reduce: 1   Cumulative CPU: 3.11 sec   HDFS Read: 6763 HDFS Write: 217 SUCCESS
Stage-Stage-2: Map: 1  Reduce: 1   Cumulative CPU: 2.65 sec   HDFS Read: 4709 HDFS Write: 41 SUCCESS
Total MapReduce CPU Time Spent: 5 seconds 760 msec
OK
hello	4
yuan	1
world	1
shanghai	1
nice	1
Time taken: 39.905 seconds, Fetched: 5 row(s)


DDL

Hive: DB/table/partition,任何一次层次都是对应hdfs上的一个目录或者文件夹

DDL

create database d6;

hdfs://10-9-61-124:9000/user/hive/warehouse
hdfs://10-9-61-124:9000:hdfs目录
/user/hive/warehouse:默认的hive存储在hdfs上的目录

修改hive参数的几种形式
1) set hive.metastore.warehouse.dir;
    set key 取值
    set key=value   设置值
    局部  单session
2)hive-site.xml
    全局

 

创建表

create table emp(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm double,
deptno int
) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';



拷贝表结构:
CREATE TABLE emp2
LIKE emp;    


拷贝表数据:
create table emp3 as select * from emp;

显示表的具体信息:
desc formatted emp3;

 

DML

导入数据

LOAD DATA LOCAL INPATH '/home/hadoop/data/emp.txt' OVERWRITE INTO TABLE emp ;

 

内部表,外部表

1.内部表(MANAGED):hive在hdfs中存在默认的存储路径,即default数据库。之后创建的数据库及表,如果没有指定路径应都在/user/hive/warehouse下,所以在该路径下的表为内部表。

2.外部表(EXTERNAL):指定了/user/hive/warehouse以外路径所创建的表

而内部表和外部表的主要区别就是 
- 内部表:当删除内部表时,MySQL的元数据和HDFS上的普通数据都会删除 ;
- 外部表:当删除外部表时,MySQL的元数据会被删除,HDFS上的数据不会被删除;

外部表使用场景 
对于一些原始日志文件,同时被多个部门同时操作的时候就需要使用外部表,如果不小心将meta data删除了,HDFS上 的data还在可以恢复,增加了数据的安全性。

【梳理元数据信息表中的DBS和TBLS中的字段信息】

 

 

 

 

 

 

 

 

 

 

 

多源动态最优潮流的分布鲁棒优化方法(IEEE118节点)(Matlab代码实现)内容概要:本文介绍了基于Matlab代码实现的多源动态最优潮流的分布鲁棒优化方法,适用于IEEE118节点电力系统。该方法结合两阶段鲁棒模型与确定性模型,旨在应对电力系统中多源不确定性(如可再生能源出力波动、负荷变化等),提升系统运行的安全性与经济性。文档还列举了大量相关的电力系统优化研究案例,涵盖微电网调度、电动汽车集群并网、需求响应、配电网重构等多个方向,并提供了YALMIP等工具包的网盘下载链接,支持科研复现与进一步开发。整体内容聚焦于电力系统建模、优化算法应用及鲁棒性分析。; 适合人群:具备电力系统基础知识和Matlab编程能力的研究生、科研人员及从事能源系统优化的工程技术人员;熟悉优化建模(如鲁棒优化、分布鲁棒优化)者更佳。; 使用场景及目标:①开展电力系统动态最优潮流研究,特别是含高比例可再生能源的场景;②学习和复现分布鲁棒优化在IEEE118等标准测试系统上的应用;③进行科研项目开发、论文复现或算法比较实验;④获取相关Matlab代码资源与仿真工具支持。; 阅读建议:建议按文档结构逐步浏览,重点关注模型构建思路与代码实现逻辑,结合提供的网盘资源下载必要工具包(如YALMIP),并在Matlab环境中调试运行示例代码,以加深对分布鲁棒优化方法的理解与应用能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值