Hive,HDFS数据到本地系统并返回

时间:2015-02-05 07:59:13

标签: hadoop hive hdfs hadoop2

我是Hadoop管理的新手:)

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

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

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

关注/查询

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

2 个答案:

答案 0 :(得分:0)

以下是我们遵循的步骤:

  1. 创建新的hadoop群集
  2. 使用distcp将数据复制到新群集
  3. 删除旧群集
  4. 如果那不是一个选项

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

答案 1 :(得分:0)

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

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