hdfs迁移
hadoop fs常用命令
#显示HDFS根目录中各文件和文件夹大小
hadoop fs - du /
#以最大单位显示HDFS根目录中各文件和文件夹大小
hadoop fs -du -h /
#仅显示HDFS根目录大小。即各文件和文件夹大小之和
hadoop fs -du -s /
#显示HDFS根目录在物理空间的信息
hadoop fs -count /
# 递归删除全部文件和目录
hadoop fs -rm -r /dir/
# 删除之后不放到回收站
hadoop fs -rm -skipTrash /dir
#读取本地文件内容追加到HDFS文件
hadoop fs -appendToFile file:/test.txt hdfs:/newfile.txt
#可以同时创建多个目录
hadoop fs -mkdir /newdir /newdir2
#同时创建父级目录
hadoop fs -mkdir -p /ods_data/mark/D01-1-bj/total/node01
方式一:用 hadoop fs -cp 迁移
hadoop fs -cp hdfs://源IP或hostname/ods_data/mark/D01-1-bj/2021-09-01/* hdfs://目标IP或hostname/ods_data/mark/D01-1-bj/2021-09-01/
方式二:用distcp迁移
hadoop distcp hdfs://源IP/ods_data/mark/T00/2021-09-09/ hdfs://目标IP/ods_data/mark/T00/2021-09-09/
参考中文官方文档: http://hadoop.apache.org/docs/r1.0.4/cn/distcp.html#%E6%A6%82%E8%BF%B0
上面我用两个方法都很慢,受网络传输限制,可以考虑先把文件get 导本地,Gzip压缩后再传输导目标服务器,解压,用Hadoop fs -put 命令放到活动方式上
hive迁移步骤
前提景要:公司新增开发环境,要从生成环境的Hive往开发环境导几张表
我因为之前hdfs迁移很方便,就直接建表迁移数据文件了
参考文章: https://www.cnblogs.com/hark0623/p/12248889.html
这个文章中的shell我试过了,我的hive查询出来是带–||++这种格式的【如下图】,所有执行的时候回报错,没有时间折腾,要导的表不多就放弃了
参考语句:
在hive建表,可以直接用链接文章里的
-- hive默认是其他格式存储,我需要的是TEXTFILE格式
CREATE TABLE IF NOT EXISTS TABLENAME
(
org_name_cn string
,dict_value string
,prefix string
,shr_prefix string
,industy_one string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE;
ES迁移
使用elasticdump工具迁移
参考博客: https://www.cnblogs.com/hxlasky/articles/10103639.html
参考代码:
#拷贝analyzer如分词
/root/lxw/elasticdump/bin/elasticdump --input=http://源IP:29200/report_ds_2 --output=http://目标IP:29200/report_ds_2 --type=analyzer
#拷贝映射
/root/lxw/elasticdump/bin/elasticdump --input=http://源IP:29200/report_ds_2 --output=http://目标IP:29200/report_ds_2 --type=mapping
#拷贝数据
/root/lxw/elasticdump/bin/elasticdump --input=http://源IP:29200/report_ds_2 --output=http://目标IP:29200/report_ds_2 --type=data