hadoop的集群copy
2014-08-18 10:30
302 查看
hadoop不同版本之间的集群复制。
1.基础
使用hadoop distcp 来进行集群间的数据复制。
2.实战
如果两个集群之间版本不一样,应该这样来复制。
hadoop distcp hftp://source/source hdfs://dest:9000/source
为啥是hftp呢,因为不同版本rpc不太一样。
如果一个集群闲置,尽量使用它的MR能力。有一个要注意,在这个集群里
目标nn尽量采用ip地址。为啥,你试试就知道,用hostname多麻烦了。
还遇到这个错,引以为鉴。
如果文件过大,过多,不建议直接复制,建议采用脚本文件遍历目录,导出单个复制小目录的批命令。
python脚本如下(临时脚本,未优化,请保函)
1.基础
使用hadoop distcp 来进行集群间的数据复制。
2.实战
如果两个集群之间版本不一样,应该这样来复制。
hadoop distcp hftp://source/source hdfs://dest:9000/source
为啥是hftp呢,因为不同版本rpc不太一样。
如果一个集群闲置,尽量使用它的MR能力。有一个要注意,在这个集群里
目标nn尽量采用ip地址。为啥,你试试就知道,用hostname多麻烦了。
还遇到这个错,引以为鉴。
ERROR org.apache.hadoop.mapred.JobHistory: Failed creating job history log file for job job_201308261457_000 5 java.net.UnknownHostException: unknown host: namenode2 at org.apache.hadoop.ipc.Client$Connection.<init>(Client.java:216) at org.apache.hadoop.ipc.Client.getConnection(Client.java:1154) at org.apache.hadoop.ipc.Client.call(Client.java:1010) at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:224) at $Proxy5.getProtocolVersion(Unknown Source) at org.apache.hadoop.ipc.RPC.getProxy(RPC.java:364) at org.apache.hadoop.hdfs.DFSClient.createRPCNamenode(DFSClient.java:106) at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:208) at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:175) at org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:89) at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:1310)
如果文件过大,过多,不建议直接复制,建议采用脚本文件遍历目录,导出单个复制小目录的批命令。
python脚本如下(临时脚本,未优化,请保函)
#!/usr/bin/env python import sys, os, time, atexit, string from signal import SIGTERM def list_dir(exec_cmd,s_dir): tmp=[] tmps = os.popen(exec_cmd +s_dir).read().strip().split("\n") for tmp_sline in tmps : if "-" in tmp_sline: sitem=tmp_sline.split(" ") tmp.append(sitem) return tmp dir="/data/dw/" cmd="/opt/modules/hadoop/hadoop-0.20.203.0/bin/hadoop fs -ls hdfs://192.168.1.99:9000"#目标集群 cmd2="/opt/modules/hadoop/hadoop-0.20.203.0/bin/hadoop fs -ls hdfs://source:9000"#源集群 lines = list_dir(cmd2,dir)#sort for line in lines : if "-" in line: slines= list_dir(cmd2,line[-1])#year print "/opt/modules/hadoop/hadoop-0.20.203.0/bin/hadoop fs -mkdir hdfs://192.168.1.99:9000%s"%line[-1].replace("data/","data/ sbak/") #复制前建上级目录 for sline in slines : if "-" in sline: print "/opt/modules/hadoop/hadoop-0.20.203.0/bin/hadoop distcp hftp://source:50070%s hdfs://192.168.1. 99:9000%s"%(sline[-1],line[-1].replace("data/","data/sbak/"))
相关文章推荐
- hadoop集群之间的copy---->distcp
- hadoop的集群copy
- hadoop 集群配置,遇到节点连不上,copy 0 than 1
- hadoop集群中的日志文件 分类: A1_HADOOP 2015-02-28 20:37 680人阅读 评论(0) 收藏
- 【Hadoop】hadoop2.7完全分布式集群搭建以及任务测试
- Hadoop2.6.2完全分布式集群HA模式安装配置详解
- 配置Hadoop集群
- 测试集群模式安装实施Hadoop
- hadoop集群目录和端口配置
- 搭建hadoop集群,
- Hadoop集群安装
- ubuntu docker搭建Hadoop集群环境的方法
- hadoop 集群高可用环境搭建(zookeeper)
- hadoop1.2.1在linux中配置安装独立运行Standalone Operation,伪分布Pseudo-Distributed Operation,集群配置三种配置和测试
- hadoop集群搭建
- Hadoop集群和网络的基本原理(一)
- 小白笔记--------------------------安装hadoop集群简单总结
- hadoop集群启动脚本——解决启动hadoop集群时,效率低问题
- Hadoop集群之hive安装
- Hadoop集群