使用Juicesync实现对腾讯云CHDFS存储的数据迁移

这篇具有很好参考价值的文章主要介绍了使用Juicesync实现对腾讯云CHDFS存储的数据迁移。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

近年来,云计算越来越流行,企业从自身利益出发,或是不愿意被单一云服务商锁定,或是业务和数据冗余,或是出于成本优化考虑,会尝试将部分或者全部业务从线下机房迁移到云或者从一个云平台迁移到另一个云平台。

本期跟大家分享我在使用Juicesync工具实现对腾讯云CHDFS存储的数据迁移的实验过程及思路。


一、Juicesync准备

  • Juicesync介绍

Juicesync是一个用来拷贝任意云以及地域对象存储数据的工具,它同样支持本地文件,SFTP,HDFS等系统。

这个工具的代码和 juicefs sync 代码相同,Juicesync代码基本引用 juicefs sync部分的代码。

官网:https://juicefs.com/

GitHub:https://github.com/juicedata/juicesync

这个工具不依赖于Juicefs文件系统,可以进行单独使用,并且可以用作于跨云,跨平台,跨地域进行对象数据的迁移复制等场景。

此工具可以支持以下存储:

使用Juicesync实现对腾讯云CHDFS存储的数据迁移
本次我们的目的就是尝试使用Juicesync工具,进行对腾讯云CHDFS存储的数据迁移。

  • 安装Juicesync

· 环境:Linux x86_64 centos7.6

Step1:下载地址:

https://github.com/juicedata/juicesync/releases

在地址中选择对应的系统版本,使用命令下载压缩包 ⬇

wget:https://github.com/juicedata/juicesync/releases/download/v1.0.2/juicesync_1.0.2_Linux_x86_64.tar.gz

Step2:解压:

tar -zxvf juicesync_1.0.0_Linux_x86_64.tar.gz

Step3:配置

mv juicesync /usr/local/bin

使用Juicesync实现对腾讯云CHDFS存储的数据迁移


二、Hadoop准备

由于在实践过程中,我们需要在 Hadoop 的环境中hdf数据来实现,所以先讲一讲 Haddop系统(本次主要不对细节做介绍,主要介绍整体结构以及服务)。

  • Hadoop 介绍

Haddop系统本身并不是一个单一的系统,而是由3个系统共同组成:HDFS(分布式文件系统),YARN(分布式资源调度系统),MapReduce(分布式计算系统)。

而这3个系统又分别由不同的服务组成:HDFS(分布式文件系统),YARN(分布式资源调度系统),MapReduce(分布式计算系统);

· Hadoop HDFS 分布式文件系统

NameNode:管理元数据(fsimage) ,文件属性,节点属性,文件在哪些节点

DataNode:存储数据,文件块,block 128M 心跳(状态,资源信息)

SecondaryNameNode :合并元数据信息,fsimage—>NameNode

· Hadoop MapReduce 分布式计算系统

JobTracker:作业的管理和调度、资源分配

TaskTracker:作业的具体执行,发送心跳机制JobTracker汇报

MapTask :Mapper.map() 执行用户自定的map函数

ReduceTask:Reduce.reduce() 执行用户自定义的reduce函数

· Hadoop Yarn 分布式资源管理系统

ResourceManager:资源调度,管理集群中所有的物理机(内存、计算资源)

NodeManager:当前物理机上的管理者,用来创建具体执行任务进程。

  • 安装 Hadoop

由于最终目的是对CHDFS 数据迁移,所以为了适配CHDFS,这里选择在腾讯云的 CVM 上进行安装。

因为 CHDFS 只能支持同VPC网络内,通过同地域访问CHDFS。

使用Juicesync实现对腾讯云CHDFS存储的数据迁移

Step1: 准备

Java环境:
使用Juicesync实现对腾讯云CHDFS存储的数据迁移
Step2:下载hadoop压缩包

地址:
https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.8.5/hadoop-2.8.5.tar.gz

wget https://archive.apache.org/dist/hadoop/common/hadoop-2.8.5/hadoop-2.8.5.tar.gz

Step3:解压

mv hadoop-2.8.5.tar.gz /data/
cd /datatar -zxvf
hadoop-2.8.5.tar.gz
使用Juicesync实现对腾讯云CHDFS存储的数据迁移

Step4:修改hadoop配置

修改Hadoop安装目录下 etc/haddop 下的 haddop-env.sh

指定 java_home 到具体目录。
使用Juicesync实现对腾讯云CHDFS存储的数据迁移
修改Hadoop安装目录下的 etc/hadoop 下的 core-site.xml

<configuration>
    <!-- 指定HDFS老大(namenode)的通信地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://服务器的真实ip:9002</value>
    </property>
    <!-- 指定hadoop运行时产生文件的存储路径 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/data/hadoop/tmp</value>
    </property>
</configuration>

使用Juicesync实现对腾讯云CHDFS存储的数据迁移
修改Hadoop安装目录下 etc/hadoop 下的 hdfs-site.xml 内容

<configuration>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>/data/hadoop/hadoop/hdfs/nn</value>
        </property>
        <property>
                <name>fs.checkpoint.dir</name>
                <value>/data/hadoop/hdfs/snn</value>
        </property>
        <property>
                <name>fs.checkpoint.edits.dir</name>
                <value>/data/hadoop/hdfs/snn</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>/data/hadoop/hdfs/dn</value>
        </property>
         <property>
            <name>dfs.name.dir</name>
            <value>/data/hadoop/name</value>
        </property>
        <property>
            <name>dfs.data.dir</name>
            <value>/data/hadoop/node</value>
        </property>
        <property>
            <name>dfs.replication</name>
            <value>1</value>
        </property>
        <property>
            <name>dfs.http.address</name>
            <value>服务器的真实ip:9000</value>
        </property>
        <property>
             <name>ipc.maximum.data.length</name>
             <value>134217728</value>
        </property>
</configuration>

使用Juicesync实现对腾讯云CHDFS存储的数据迁移
使用Juicesync实现对腾讯云CHDFS存储的数据迁移

修改Hadoop安装目录下 etc/hadoop 下的 yarn-site.xml 内容


<configuration>
<!-- Site specific YARN configuration properties -->
<property>
    <name>yarn.nodemanager.vmem-check-enabled</name>
    <value>false</value>
</property>
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
<property>
    <name>yarn.application.classpath</name>
    <value>
        /data/hadoop-2.8.5/etc/*,
        /data/hadoop-2.8.5/etc/hadoop/*,
        /data/hadoop-2.8.5/lib/*,
        /data/hadoop-2.8.5/share/hadoop/common/*,
        /data/hadoop-2.8.5/share/hadoop/common/lib/*,
        /data/hadoop-2.8.5/share/hadoop/mapreduce/*,
        /data/hadoop-2.8.5/share/hadoop/mapreduce/lib/*,
        /data/hadoop-2.8.5/share/hadoop/hdfs/*,
        /data/hadoop-2.8.5/share/hadoop/hdfs/lib/*,
        /data/hadoop-2.8.5/share/hadoop/yarn/*,
        /data/hadoop-2.8.5/share/hadoop/yarn/lib/*
    </value>
</property>
 </configuration>

使用Juicesync实现对腾讯云CHDFS存储的数据迁移
Step4:配置免密登录

1)到 root 目录下:cd /root

2——执行生成密钥命令:ssh-keygen -t rsa

3)然后三个回车

4)复制公钥追加到第一台节点的公钥文件中:

ssh-copy-id -i /root/.ssh/id_rsa.pub root@master01

5)选择 yes

6)输入登录第一台节点的密码(操作完成该节点公钥复制到第一台节点中)

Step5:配置环境变量

使用Juicesync实现对腾讯云CHDFS存储的数据迁移

Step6:初始化节点

执行Hadoop目录下的bin/hdfs

./bin/hdfs namenode -format

Step7:安装

执行Hadoop安装目录下的sbin执行start-all.sh

.sbin/start-all.sh

使用jps验证是否安装成功。

使用Juicesync实现对腾讯云CHDFS存储的数据迁移

执行Haddop命令验证

使用Juicesync实现对腾讯云CHDFS存储的数据迁移


三、迁移实验

云HDFS(Cloud HDFS,简称:CHDFS)是腾讯云一种提供标准HDFS访问协议、卓越性能、分层命名空间的分布式文件系统。

本次实践的目的就是尝试使用Juicesync工具实现对腾讯云CHDFS存储的数据迁移。

  • 实验过程

使用 Juicesync 尝试对接 CHDFS:

使用Juicesync实现对腾讯云CHDFS存储的数据迁移
使用Juicesync实现对腾讯云CHDFS存储的数据迁移
我们发现,并不像预想的一样,可以直接对接。

这里的ofs串是腾讯云CHDFS的挂载点,并不能直接作为hdfs串来使用,因为Juicesync工具不能识别这个串。

但是如果将ofs换为hdfs,也不能使用。因为后边的域名Juicesync无法解析。

那么尝试手动解析域名,然后再尝试,可以发现程序直接发生了panic。

使用Juicesync实现对腾讯云CHDFS存储的数据迁移
通过查看Juicesync源码发现,Juicesync这里连接HDFS是通过colinmarc/hdfs包实现的。

使用Juicesync实现对腾讯云CHDFS存储的数据迁移

猜测有可能是HDFS包使用的时候,有默认配置,导致的无法连接或者报错。这里编写go程序来使用HDFS包。

使用Juicesync实现对腾讯云CHDFS存储的数据迁移

连接本地HDFS

这里尝试连接本地的HDFS服务,并获取 test/text.txt 的内容。

使用Juicesync实现对腾讯云CHDFS存储的数据迁移

然后,将连接地址改为CHDFS挂载点解析后的IP。

使用Juicesync实现对腾讯云CHDFS存储的数据迁移

现在连接的时候,可以连接成功,但是仍然panic。

通过查看HDFS包的代码,可以发现HDFS包连接HDFS服务的方式,是通过RPC的方式来连接Hadoop HDFS 的Namenode的。
使用Juicesync实现对腾讯云CHDFS存储的数据迁移
使用Juicesync实现对腾讯云CHDFS存储的数据迁移

通过文献查询以及查看Hadoop的源码,可以了解到Hadoop的命令行与HDFS命令进行调用也是通过与Namenode通过RPC的方式。

Hadoop 中是在 Hadoop 项目的 hadoop-common 中src/main/java/org/apache/haddop 中的 fs 中的FsShell.java 中的 main 函数作为 hadoop fs 命令的入口。

使用Juicesync实现对腾讯云CHDFS存储的数据迁移

使用Juicesync实现对腾讯云CHDFS存储的数据迁移
这里先调用ToolRunner.run;

使用Juicesync实现对腾讯云CHDFS存储的数据迁移

再调用到tool.run,即FsShell.run。

使用Juicesync实现对腾讯云CHDFS存储的数据迁移
那么,同样是通过RPC的方式,为什么一个可以,另一个不可以?

这里推测是CHDFS的问题。

还有一种可能就是命令行的RPC调用层级高于HDFS,即命令行调用了RPC的时候,在Namenode内部,仍然执行了在挂载CHDFS的JAR包逻辑,而HDFS包则没有执行这部分逻辑。


四、实现思路

通过上边的推断,实现 Juicesync 调用 CHDFS 的思路就是查看 Hadoop 的 FsShell.java 部分的代码。

以此来查看命令行是通过哪个RPC接口来进行调用的,并将对应的proto文件拷贝到HDFS包内,然后通过 protobuf 命令来生成go文件,从而来调用与FsShell.java部分相同的RPC接口来实现仿照命令行的RPC调用,最终来实现对CHDFS的操作。

以上就是本期关于使用Juicesync工具实现对腾讯云CHDFS存储的数据迁移全部思考实现的过程啦~如果你更好的思路,欢迎跟我们留言分享。

说明:文章由神州数码武汉云基地团队实践整理输出,转载请注明出处。文章来源地址https://www.toymoban.com/news/detail-414089.html

到了这里,关于使用Juicesync实现对腾讯云CHDFS存储的数据迁移的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 腾讯云对象存储功能的使用

    首先我们登录腾讯云搜索对象存储或者cos都可以 接下来新用户应该有免费额度,现在应该有活动一块钱50G/1年 到达这个界面 我们创建存储桶 这里不需要设置,看个人需求 然后,下一步创建即可 创建好之后   我们看它SDK文档或者API都可以(推荐SDK)  这里都有  我们以pyt

    2024年02月13日
    浏览(40)
  • “数据湖存储”冠军杯足球赛开幕,腾讯云存储出征!

    “数据湖存储”冠军杯是数据湖领域内的世界级赛事,随着云上“数据湖存储”产品理念的逐步普及,今年的比赛也获得了国内外众多球迷的关注。腾讯云以COS、GooseFS、GooseFSx、元数据加速器、COS加速器等球员组成的球队一路披荆斩棘,成为最闪耀的一颗星。 值得一提的是,

    2023年04月23日
    浏览(40)
  • 使用腾讯云对象存储搭建图床

    平常在学习一些东西或者研究一些东西的时候会整理一下然后发到博客网站上,然后编辑时候一般使用的都是markdown格式,然后图片的存储有时候就很闹心,开始用的公共图床,但是没几天不是图片失效了就是图床网站倒闭了,然后现在很多网站都加限制防外链的。就想着自

    2024年02月08日
    浏览(41)
  • 使用DTS实现TiDB到GaiaDB数据迁移

    1 概览 本文主要介绍通过 DTS 数据迁移功能,结合消息服务 for Kafka 与 TiDB 数据库的 Pump、Drainer 组件,完成从TiDB迁移至百度智能云云原生数据库 GaiaDB。 消息服务 for Kafka:详细介绍参见:消息服务 for Kafka 产品介绍 百度智能云云原生数据库GaiaDB:详细介绍参见:云原生数据库

    2024年01月23日
    浏览(45)
  • XSAN数据恢复-存储空间架构迁移时误格式化存储系统的XSAN数据恢复案例

    XSAN数据恢复环境: 昆腾存储,MAC OS操作系统,存放视频类数据(MXF、MOV等格式文件)。 XSAN故障检测: 将存储空间从XSAN架构迁移到STORNEXT架构后,存储空间中数据全部丢失。  故障存储中一共有9个数据卷:1个META信息卷+8个DATA信息卷。北亚企安数据恢复工程师分析META信息卷

    2024年02月05日
    浏览(48)
  • 腾讯云对象存储联合DataBend云数仓打通数据湖和数据仓库

    随着数字化进程不断深入,数据呈大规模、多样性的爆发式增长。为满足更多样、更复杂的业务数据处理分析的诉求,湖仓一体应运而生。在Gartner发布的《Hype Cycle for Data Management 2021》中,湖仓一体(Lake house)首次被纳入到技术成熟度曲线中。 伴随多场景的成功落地, 腾讯

    2024年02月13日
    浏览(36)
  • 使用 Feature Flags 与可观测工具实现数据库灰度迁移

    很多企业会遇到数据库升级、或数据库迁移的情况,尤其是在自建数据库服务向云数据库服务、自建机房向云机房、旧数据库向新数据库迁移等场景。 然而,我们需要在整个移植过程中保证其稳定性、避免数据遗失、服务宕机等情况,最常见的移植方法之一就是 数据库双写

    2024年02月12日
    浏览(42)
  • 如何使用 .Net Core 实现数据库迁移 (Database Migration)

    当我们在编写基于数据库的应用程序时,随着需求的增加和改变,我们需要升级我们的数据库,变更数据库表的字段,当我们的系统的不同版本被部署到了不同的客户那里,在需要给客户升级时,我们如何实现数据库模式 (schema) 的自动升级呢? 传统的管理办法是针对每个数

    2024年02月05日
    浏览(55)
  • 使用七牛云、阿里云、腾讯云的对象存储上传文件

     说明:存在部分步骤省略的情况,请根据具体文档进行操作  下载相关sdk 表单提交到七牛云 表单提交到阿里云  表单提交到阿里云(sts) 说明:需要修改acl权限,不然无法上传文件 表单提交到腾讯云 表单提交到腾讯云(sts)  参考:  上传策略_使用指南_对象存储 - 七牛开发者

    2024年02月14日
    浏览(51)
  • 腾讯云服务器不同账号迁移(不同云迁移腾讯云参考)

    因为服务器要到期了,加上新用户买服务器会有优惠,决定叫朋友买一台腾讯云,于是遇到了迁移的问题,以下操作针对平民党的不同账号,不同区域间的服务器迁移,本文章是基于腾讯云两个账号两台轻量级服务器间的镜像迁移,可以完美copy旧服务器到新服务器,实现便捷

    2024年02月09日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包