hdfs同步流程
2023-02-13 11:09:47 0 举报
1
作者其他创作
大纲/内容
是
(获取dfs文件版本)【dfs的zs用户】从dfs下载.versions文件,覆盖写入本地.versions文件(本地.versions文件的所有者权限无需改为当前linux本地用户),读取文件 FileUtils.readFileToString(),jsonStr判空后解析为mapDfs JSONObject.parseObject()
否
上传完成
其他节点同A
打开/刷新页面
取消调用后续接口
读取本地.versions文件 FileUtils.readFileToString(),jsonStr判空后解析为mapLocalOld JSONObject.parseObject()
环境检查确认完成
【前端判断】返回码 ret == 0
(首次上传dfs)【dfs的idpservice用户】fs.mkdirs()fs.setOwner()fs.setPermission()fs.createNewFile()fs.setOwner()
【前端判断】本次登录的节点是否同上一次isPrevJupyter == true
【详细对比mapDfs、mapLocal,下载结果文件及.versions文件,并修改本地访问权限】(无conflict方案)0.Maps.difference().areEqual(),直接rerurn1.同:不下载 .entriesInCommon()2.异:覆盖下载 .entriesDiffering()3.多:覆盖下载(检查本地父目录是否存在,无父目录需手动创建) .entriesOnlyOnLeft()4.少:本地端删除 .entriedOnlyOnRight()5..versions文件:覆盖下载6.本地notebooks目录下所有文件的所有者权限改为当前linux本地用户,.versions文件的所有者权限改回为本地root用户 Runtime.getRuntime().exec(\"chown -R xx\")
下载接口(同步阻塞),提示:”数据同步服务运行中,请稍候,为避免数据丢失,请勿刷新页面”
环境检查确认接口(同步阻塞,短时),无提示
(本地)/home/zs/home/zs/.versions本地目录、文件是否存在(本地.versions文件的所有者权限无需改为当前linux本地用户)
jupyterA节点
(dfs)/user/zs/user/zs/notebooks/user/zs/notebooks/.versions/user/zs/temp?dfs家目录、目录、文件是否存在
负载均衡选出zs的当前节点为jupyterA节点 /choose_path返回JupyterInfo对象,包含:login_code = zs;isPrevJupyter(null记为true)
mapLocal转为json对象 JSON.toJSONString(),覆盖写入.versions文件 FileUtils.write()(本地.versions文件的所有者权限无需改为当前linux本地用户)
对比mapLocal与mapLocalOld是否相同Maps.difference().areEqual()
(首次登录jupyterA节点)【root用户】new File().mkdirs()Runtime.getRuntime().exec(\"chown xx\")new File().createNewFile()
(本地)linux用户存在则跳过,不存在则新增Runtime.getRuntime().exec(\"id zs || useradd zs\")
(获取本地文件版本)【root用户】递归遍历本地notebooks目录 Files.walk(),获取所有文件(排除.versions文件)的绝对路径,处理成相对路径;获取对应时间戳 Files.getLastModifiedTime().toMillis();两者存入mapLocal(无.versions文件)
IDPAdmin节点
【详细对比mapLocal、mapDfs,上传结果文件及.versions文件】0.Maps.difference().areEqual(),直接rerurn1.同:不上传 .entriesInCommon()2.异:覆盖上传 .entriesDiffering()3.多:覆盖上传(检查dfs父目录是否存在,无父目录需手动创建) .entriesOnlyOnLeft()4.少:dfs端删除 .entriedOnlyOnRight()5..versions文件:覆盖上传
用户点击“数据备份至HDFS”按钮调用接口:1.环境检查2.上传
下载完成
上传(备份)接口(与用户编辑进程异步不阻塞)font class=\"eye-protector-processed\" style=\
jupyterB节点
收藏
0 条评论
下一页