| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> Hadoop | 集群配置(一)使用Shell脚本解决完全分布式集群节点之间的文件传输问题 | scp命令 | rsync命令 -> 正文阅读 |
|
[大数据]Hadoop | 集群配置(一)使用Shell脚本解决完全分布式集群节点之间的文件传输问题 | scp命令 | rsync命令 |
参考资料一、前言在Hadoop完全分布式集群环境下,里面的各个节点都是通过 SSH免密登陆 连接的,比如现有三台集群节点,分别是 hadoop101、hadoop102、hadoo103。 hadoop101节点可以通过 ssh命令连接到hadoop102,即:
那么,除了远程登陆以外,还有其他的作用吗? 当然有的,比如远程传输文件: 如果要将hadoop101节点的hadoop配置文件传输到hadoop102,那么可以尝试:
但是如果每次都这样使用scp命令去传输,会比较浪费时间,因为这两个集群节点的hadoop目录都是相同的,只是配置文件的内容不同,接下来将根据参考的资料进行描述,如何使用一些命令来简化集群之间的文件传输。 二、rsync 远程同步工具rsync 主要用于 基本语法
选项参数的说明: 三、使用 shell 编写分发脚本需求:循环复制文件到所有节点的相同目录下
具体实现:
脚本内容:(参考视频资料)
创建脚本后需要对其赋予可执行权限:
接下来笔者结合视频讲解还有自己的理解对这个脚本进行解读 在分发文件时有两种情况,第一种分发一个具体文件,第二种分发整个文件夹,由此产生了几个问题:
首先脚本的定位就是分发到所有的集群节点,这一点可以确认,所以就需for循环遍历所有的节点, 其次,为防止接收文件的位置目录不存在,需在接收文件的节点里创建这个文件的目录,同时获取文件的目录,并且要获取文件的具体名称,将这二者区分开则可以解决接收文件节点不存在的问题。 一次性分发多个文件,使用shell脚本的#@ 以个体的形式获取所有的输入参数,然后使用 for in 进行循环遍历即可。 如果对 shell 脚本不够熟悉,可以参考这两篇文章,里面有写参考的资料,查看参考资料会更加清晰明了: 笔者认为上面的分发脚本,比较难理解的就是这一部分:
笔者最疑惑的就是,
其中比较关键的信息:
总之就是理解为找到真实的地址吧 除此之外还用到了
dirname命令的作用就是取文件相对于当前的位置目录,比如:
执行结果就是 而 接下来的第二行
basename同样是一种字符串处理的操作,作用是将路径的文件名提取出来,比如:
返回的结果是字符串形式的: 通过以上两行就获取到了拷贝文件的目录位置和文件的名称,接下来就是先创建好目录,防止目录不存在的情况,
四、总结hadoop集群节点的脚本分发主要是通过ssh免密码登陆、rsync工具,rsync只拷贝有差异的文件,这样可以提高效率,另外还需要熟悉一下shell脚本的for循环遍历,以及条件判断等知识点,大概思路就是先循环遍历所有的集群节点,然后在循环里通过 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/1 16:33:38- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |