`
tangjunliang
  • 浏览: 109086 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Hadoop 归档 和HIVE 如何使用har 归档 文件

阅读更多

Hadoop archive 唯一的优势可能就是将众多的小文件打包成一个har 文件了,那这个文件就会按照dfs.block.size 的大小进行分块,因为hdfs为每个块的元数据大小大约为150个字节,如果众多小文件的存在(什么是小文件内,就是小于dfs.block.size 大小的文件,这样每个文件就是一个block)占用大量的namenode 堆内存空间,打成har 文件可以大大降低namenode 守护节点的内存压力。但对于MapReduce 来说起不到任何作用,因为har文件就相当一个目录,仍然不能讲小文件合并到一个split中去,一个小文件一个split ,任然是低效的,这里要说一点<<hadoop 权威指南 中文版>>对这个翻译有问题,上面说可以分配到一个split中去,但是低效的。

     既然有优势自然也有劣势,这里不说它的不足之处,仅介绍如果使用har 并在hadoop中更好的使用har 文件
 
首先 看下面的命令
     hadoop archive -archiveName 20131101.har /user/hadoop/login/201301/01 /user/hadoop/login/201301/01
     我用上面的命令就可以将 /user/hadoop/login/201301/01 目录下的文件打包成一个 20131101.har 的归档文件,但是系统不会自动删除源文件,需要手动删除
     hadoop fs -rmr /user/hadoop/login/201301/01/*.*.* 我是用正则表达式来删除的,大家根据自己的需求删除原始文件
 
 有人说了,我删了,归档文件存在,源文件不在了,如果要恢复怎么办,这个也困惑了我,hadoop 好像确实也没有提供这样的API 可以 还原成源文件
 功夫不负有心人,其实也很简单,直接从har 文件中 cp出来就可以了。
     hadoop fs -cp /user/hadoop/login/201301/01/20130101.har/*  /user/hadoop/login/201301/01/
 
那如何在hive 中使用呢,首先看建表 :
 CREATE EXTERNAL TABLE login_har(
  ldate string,
  ltime string,
  userid int,
  name string)
ROW FORMAT DELIMITED
  FIELDS TERMINATED BY ' '
STORED AS INPUTFORMAT
  'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
  'hdfs://h60:9000/user/hadoop/login/201301/01'
这是正常的文件 建外表 从而可以不损害源文件的情况下 在Hive中查看,外边有啥优点不多说。
如果是har 文件呢?
 CREATE EXTERNAL TABLE login_har(
  ldate string,
  ltime string,
  userid int,
  name string)
ROW FORMAT DELIMITED
  FIELDS TERMINATED BY ' '
STORED AS INPUTFORMAT
  'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
  'har://h60:9000/user/hadoop/login/201301/01/20130101.har'
 
这样就可以实现,但这样不好,为什么不好呢,我只能制定单一的目录,加入我的数据增加了,如何能动态的修改呢?
其实也简单:
 CREATE EXTERNAL TABLE login_har(
  ldate string,
  ltime string,
  userid int,
  name string)
PARTITIONED BY (
  ym string,
  d string)
ROW FORMAT DELIMITED
  FIELDS TERMINATED BY ' '
STORED AS INPUTFORMAT
  'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
  'hdfs://h60:9000/user/hadoop/login'
先对其父目录建表,然后对年月日进行分区PARTITIONED BY 即是进行分区
再手动修改 其动态分区 即可:
     alter table login_har add partition(ym='201301',d='01') LOCATION 'har:///flume/loginlog/201301/01/20130101.har';
 
这样很好,既可以对hive 表进行分区索引,也可以动态增加har 文件 到新的分区中。har包不能一旦建成不能修改,我们可以打小包,建目录的方式进行分而治之,既满足需求也不影响效率。
分享到:
评论

相关推荐

    hadoop_the_definitive_guide_3nd_edition.pdf

    - **使用HAR文件**:通过Hadoop命令创建和使用HAR文件。 - **限制**:讨论了使用HAR文件的一些限制条件。 #### 四、Hadoop I/O **4.1 数据完整性** - **HDFS中的数据完整性**:介绍HDFS如何确保数据在存储过程中...

    HADOOP权威指南 第3版 PDF电子书下载 带目录书签 完整版

    7. **数据生命周期管理**:Hadoop提供了多种工具,如HDFS的 Trash机制、Hadoop Archive (HAR) 和SequenceFile,用于数据的保留、归档和清理。 8. **安全性与认证**:Kerberos、SSL/TLS加密、ACLs和Sentry等机制保障...

    Hadoop权威指引---中文版.pdf

    - HDFS支持数据的并行复制(distcp)和归档文件(Hadoop Archive,HAR),优化存储空间利用率。 4. **Hadoop的I/O** - Hadoop提供了数据完整性机制,确保数据在传输和存储过程中的准确性。 - 压缩技术可以减少...

    hadoop相关知识习题

    对于小文件处理,可以通过归档策略如SequenceFile、MapFile、Har等方式提高效率。 12. Client在HDFS上写文件时,Namenode提供DataNode信息,Client将文件分割并按顺序写入每个DataNode。在上传文件过程中,数据副本...

    大数据方向学习课程体系

    - 了解Hadoop归档文件(HAR)的概念。 - 学习如何创建和使用HAR文件来优化存储和访问效率。 14. **Hadoop实战案例** - 分析实际应用场景中的Hadoop项目案例。 - 探讨如何将理论知识应用于解决具体问题。 #### 二...

    2023最新最强大数据面试题汇总

    可以通过归档小文件、使用Har或者MapReduce的CombineFileInputFormat减少小文件数量。 8. **HDFS架构**:HDFS由NameNode(元数据管理)、DataNode(数据存储)和客户端组成,通过RPC通信,提供高容错、高吞吐量的...

    cosfs工具开发详细案例及常见问题记录

    4. **处理.HAR归档文件** - 如果HDFS中存在`.har`归档目录,使用`--decompress_har`参数可以自动解压并迁移。 ``` ./hdfs_to_cos_cmd --decompress_har --hdfs_path=/tmp/hive --cos_path=/hdfs/20170224/ ``` ...

    2023大数据面试题,很全

    避免策略包括使用Har Archive、SequenceFile或MapReduce的CombineFileInputFormat。 #### 8. HDFS组织架构 HDFS由NameNode(负责元数据管理)、DataNode(存储数据)和Client(与NameNode交互,读写数据)三部分...

    Hadoop Archives

    文章目录OverviewHow to Create an ArchiveHow to Look Up Files in ArchivesHow to Unarchive an Archive操作DemoHadoop Archives and ...Hadoop archive 包含元数据(形式是 _index 和 _masterindx)和数据(p

    大数据技术之高频面试题

    小文件会增加NameNode的内存负担,解决方法包括使用Har Archive、SequenceFile、MapReduce的CombineFileInputFormat,或者利用HBase、Spark等技术对小文件进行整合。 **1.2.5 Shuffle 与优化** Shuffle是MapReduce...

    项目介绍7.docx

    - **HAR(Hadoop Archive)**:将小文件打包成大文件,减少NameNode的负担。 - **Consolidator**:整合小文件,减少文件数量。 - **HBase存储**:使用HBase存储小文件,利用其列族和行键特性,优化存储效率。 6....

    【面试宝典】2021年超全超详细的最新大数据开发面试题,附答案解析(一版).pdf

    - 持久化级别的选择会影响内存使用和数据恢复速度。 **6. Checkpoint检查点机制** - 记录RDD的血统信息,以便在失败时恢复。 - 通过显式调用`checkpoint()`方法。 - 存储在可靠的存储系统中,如HDFS。 **7. ...

    05-大数据技术之面试题复习1.6.pdf

    - **解决方案**:介绍常见的解决方案,比如归档工具Hadoop Archive (HAR)、SequenceFile等,以及它们的优缺点。 ### 4. Shuffle及其优化 - **Shuffle过程**:解释MapReduce框架中的Shuffle阶段,包括Map端的数据...

Global site tag (gtag.js) - Google Analytics