【问题标题】:Hive, HDFS data to local system and backHive、HDFS 数据到本地系统并返回
【发布时间】:2015-02-05 07:59:13
【问题描述】:

我是 Hadoop 管理新手 :)

我有一个 8 个节点的 Apache Hadoop 2.4.1 集群,使用了 16TB DFS(在任何 xml 文件中都找不到复制因子),带有 MySQL 元存储的 Hive 0.13。

目标:将集群上的数据备份到 NFS 驱动器,卸载集群,安装一些其他发行版(Cloudera、Hortonworks)并将数据从 NFS 驱动器重新加载到这个新集群。

有两个 956GB(大约 90 亿行)和 32Gb(几百万行)的 Hive 表以及其他一些较小的表。

疑虑/查询

  1. 如何在 NFS 驱动器上备份整个集群?目前我有一台安装了 NFS 驱动器的独立机器(不是集群的一部分)
  2. 最粗暴的方法是将表导出到 csv/tsv 文件到 NFS 驱动器,并在新集群准备就绪时将它们加载到新集群中,但是将这些大表导出到 csv/tsv 让我感到不舒服,但我想不出其他方式
  3. distcp 根据我的理解在 HDFS 级别工作,所以我不确定是否可以使用它更快地从 HDFS 复制到 NFS 和 NFS 到新的 HDFS。这是因为我还需要备份 Hive 元数据,然后使其与新发行版一起使用,这可能是不可能的

我应如何进行此迁移或至少将数据从 HDFS 传输到 NFS 并返回?

【问题讨论】:

    标签: hadoop hive hdfs hadoop2


    【解决方案1】:

    这些是我们遵循的步骤:

    1. 创建新的 hadoop 集群
    2. 使用 distcp 将数据复制到新集群
    3. 删除旧集群

    如果这不是一个选项

    1. 编写可以使用 hadoop fs -get 复制数据的 shell 脚本
    2. 确保以这样一种方式应用逻辑,即使用 nohup 以 HDFS 目录或文件模式作为参数可以并行运行相同的 shell 脚本

    【讨论】:

      【解决方案2】:

      使用Hadoop fs -get 命令将文件传输到NAS。假设 NAS 安装在其中一个 hadoop 节点上。 对于 HIVE 元数据,运行"SHOW CREATE TABLE tablename" 命令以获取可以在新集群中运行的 create 语句。

      即使上述步骤符合您的目的。推荐的选项是直接使用 DISTCP 将数据从现有集群复制到新集群。和 Hive DDL 脚本

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-28
        • 2015-03-28
        • 1970-01-01
        相关资源
        最近更新 更多