[Hadoop] Hive 性能+特性

2019-03-28 14:07|来源: 网络

[Hadoop] Hive 性能

利用Hive Bulk Inport数据到Hbase http://wiki.apache.org/hadoop/Hive/HBaseBulkLoad

生成测试数据

/home/bmb/jdk1.6.0_16/bin/java  -cp examples.zip examples.CreateLogFile 1 1000000

/home/bmb/jdk1.6.0_16/bin/java  -cp examples.zip examples.CreateLogFile 1000000 2000000


/home/bmb/jdk1.6.0_16/bin/java  -cp examples.zip examples.CreateLogFile 2000000 3000000

创建性能测试表


不带压缩的测试表

drop table  p_test_data;

CREATE TABLE p_test_data (
  id INT,
  content STRING,
  time  STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;

导入数据

LOAD DATA LOCAL INPATH '/home/iic/hadoop-0.20.2/test_0_1000000.log' INTO TABLE p_test_data;

 

LOAD DATA LOCAL INPATH '/home/iic/hadoop-0.20.2/test_1000000_2000000.log' INTO TABLE p_test_data;

 

LOAD DATA LOCAL INPATH '/home/iic/hadoop-0.20.2/test_2000000_3000000.log' INTO TABLE p_test_data;

 

set mapred.reduce.tasks=1;

select count(a.id) from p_test_data a;

Time taken: 27.265 seconds

 

select a.id,a.content,a.time from p_test_data a where a.id=1;

Time taken: 18.086 seconds

 

INSERT OVERWRITE DIRECTORY '/tmp/p_test_data_out'

select a.time,count(1) from p_test_data a group by a.time;

Time taken: 32.899 seconds

带压缩的测试表


(框架检测到输入文件的后缀是.gz和.lzo,就会使用对应的CompressionCodec自动解压缩这些文件 )

drop table  p_com_test_data;

CREATE TABLE p_com_test_data (
  id INT,
  content STRING,
  time  STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;

 

tar cvf 0_100W.tar test_0_1000000.log

gzip 0_100W.tar

 

tar cvf 100_200W.tar test_1000000_2000000.log

gzip 100_200W.tar

 

tar cvf 200_300W.tar test_2000000_3000000.log

gzip 200_300W.tar

导入数据

LOAD DATA LOCAL INPATH '/home/iic/hadoop-0.20.2/0_100W.tar.gz' INTO TABLE p_com_test_data;

LOAD DATA LOCAL INPATH '/home/iic/hadoop-0.20.2/100_200W.tar.gz' INTO TABLE p_com_test_data;

LOAD DATA LOCAL INPATH '/home/iic/hadoop-0.20.2/200_300W.tar.gz' INTO TABLE p_com_test_data;

select a.time,count(1) from p_com_test_data a group by a.time;

Time taken: 26.31 seconds

 此例子是针对小量文件的压缩和不压缩的性能测试,虽然不代表最终结果,但是从本次测试可以发现,压缩的效率更高,

可能是因为压缩文件是作为整个Block给Map,减少了InputSplit的检测和分析。

相关问答

更多
  • riak 华师大的吧- - 下面来简单介绍各个组件的作用: HDFS(Hadoop distribute file system)——Hadoop生态系统的基础组件Hadoop分布式文件系统。它是其他一些工具的基础HDFS的机制是将大量数据分布到计算机集群上,数据一次写入,但可以多次读取用于分析。HDFS让Hadoop可以最大化利用磁盘。 HBase—— 一个构建在HDFS之上的面向列的NoSql数据库,HBase用于对打量数据进行快速读取/写入。HBase将Zookeeper用于自身的管理,以保证其所有组 ...
  • order by nulls last 不是标准sql,oracle设计的 可以这么写,再指定一个虚拟列来辅助排序 order by case when col is null then 0 else 1 end , col desc
  • 当然可以了。hive只是一个数据仓库的工具。运行一些HQL语句。不一定非得分布式。
  • 将原始数据大小为260M的txt文件放入hdfs。并配置了Hive环境做数据查询测试。由于原始数据太小,要做GB以上的文件测试。 并且分别拷贝10、50、100、200、300、400、500份原始数据做成对应的大数据文件。 分别对这些数据使用hiveQL查询相同的数据,然后记录不同大小的数据查询的结果。做成一个图表。然后再添加一个slave计算节点,负载均衡后再使用相同的hiveQL语言查询相同的数据集,记录对应的结果。
  • 是的,你错误地解释了Hadoop。 Hadoop和Hive也不是实时的东西。 他们最适合离线,批处理的东西。 它们完全不是RDBMS的替代品。 虽然你可以做一些微调,但'绝对实时'是不可能的。 当你运行蜂巢式查询时,有很多事情发生在引擎盖下,我认为你并不知道。 首先,你的Hive查询被转换成相应的MR作业,接下来是几个其他事情,如分割创建,记录生成,映射器生成等。如果你有实时需求,我绝不会建议Hadoop(或Hive)。 您可能想看看Impala是否适合您的实时需求。 Yes..you have misin ...
  • 很难找到关于Hive的许多内容,但是我发现Hive网站上的这个代码片段大大地偏向了HBase(大胆的添加): Hive基于Hadoop,这是一个批量处理系统。 因此,该系统不能也不能承诺对查询的低延迟 。 这里的范例严格是提交作业,并且在作业完成而不是实时查询时被通知。 因此,它不应与像Oracle这样的系统进行比较,其中对数据量很少的数据进行分析,但分析反复进行得更多,迭代次数少于几分钟。 对于Hive查询,甚至最小的工作的响应时间可以是5-10分钟,而对于较大的工作,这甚至可能会在数小时内运行。 由于H ...
  • MapReduce只是一个计算框架 。 HBase与此无关。 也就是说,您可以通过编写MapReduce作业来有效地将数据提取到/从HBase中获取。 或者,您可以使用其他HBase API(如Java)编写顺序程序来放置或获取数据。 但是我们使用Hadoop,HBase等来处理大量的数据,所以没有什么意义。 当您的数据太大时,使用正常的顺序程序将非常低效。 回到你问题的第一部分,Hadoop基本上是两件事:一个分布式文件系统(HDFS) +一个计算或处理框架(MapReduce) 。 像所有其他FS一样, ...
  • 由于您的查询不包含“where”谓词,因此即使您的数据采用ORC格式,也无法享受0.12中引入的Predicate Pushdown to storage layer。 因此,尽管在0.12项改进中,计划生成和COUNT的优化速度更快,但我认为,有根据的猜测应该是性能改进不会是戏剧性的。 Since your query doesn't contain "where" predicate, you cannot enjoy Predicate Pushdown to storage layer introd ...
  • HBase中的数据仅由rowkey“索引”。 如果您在Hive中查询除rowkey前缀之外的任何内容,则通常会执行全表扫描。 可以使用HBase过滤器进行一些优化,例如,当使用FamilyFilter时,您可以跳过整个区域,但我怀疑Hive正在这样做。 如何提高性能取决于数据的形成方式以及需要对其执行的分析。 在执行频繁的临时分析时,可以通过将HBase中的数据导出到HDFS上的Parquet文件以及针对Hive(或Drill或Spark,Imapala等)的分析来运行您的分析,从而提供更好的服务。 Dat ...
  • 经过大量的研究,为了回答这个问题,我也通过了HDP。 然后我遇到了一个难题,我们无法比较SQL Db与Hadoop的性能,因为它们都用于不同的目的。 此外,只有在数据超过几TB的限制(即SQL数据库失败的情况)之后,Hadoop才会显示其性能。 因此,如果首先检查一个应用程序是否会更好。 如果有性能要求,选择Hadoop并不是一个好的选择; 去找SQL数据库。 但是,如果应用程序具有大量的数据,并且必须对SQL DB出现故障的大量数据进行分析, 在这种情况下,Hadoop很流行。 After lot of ...