我是hadoop管理新手:)
我有一个apachehadoop2.4.1集群,有8个节点,使用了16tbdfs(在任何xml文件中都找不到复制因子),hive0.13有一个mysql元存储。
目标:将集群上的数据备份到nfs驱动器,卸载集群,安装其他发行版(cloudera、hortonworks)并将数据从nfs驱动器重新加载到此新集群。
有两个配置单元表,分别是956gb(约90亿行)和32gb(几百万行)以及其他一些较小的表。
关注/疑问:
如何在nfs驱动器上备份整个集群?目前,我有一台安装了nfs驱动器的独立机器(不是集群的一部分)
最糟糕的方法是将表导出到csv/tsv文件到nfs驱动器,并在新集群准备就绪时将其加载到新集群中,但是将这些大表导出到csv/tsv会让我感到不舒服,但我想不出其他方法
根据我的理解,distcp在hdfs级别工作,所以我不确定是否可以使用它来更快地从hdfs复制到nfs和nfs到新的hdfs。这是因为我还需要备份配置单元元数据,然后使其与新发行版一起工作,这可能是不可能的
我应该如何进行这个迁移,或者至少是从hdfs到nfs的数据传输?
2条答案
按热度按时间jjjwad0x1#
我们遵循以下步骤:
创建新的hadoop集群
使用distcp将数据复制到新群集
删除旧群集
如果这不是一个选择
编写shell脚本,可以使用hadoopfs-get复制数据
确保应用逻辑时,可以使用nohup以hdfs目录或文件模式作为参数并行运行相同的shell脚本
polkgigr2#
使用
Hadoop fs -get
命令将文件传输到nas。假设nas安装在其中一个hadoop节点上。对于配置单元元数据运行"SHOW CREATE TABLE tablename"
命令获取可以在新集群中运行的create语句。尽管上述步骤符合你的目的。建议使用distcp直接将数据从现有集群复制到新集群。和配置单元ddl脚本