1.提出问题

在上篇博文中,提到了为什么要配置ssh免密码登录,说是Hadoop控制脚本依赖SSH来执行针对整个集群的操作,那么Hadoop中控制脚本都是什么东西呢?具体是如何通过SSH来针对整个集群的操作?网上完全分布模式下Hadoop的搭建很多,可是看完后,真的了解吗?为什么要配置Hadoop下conf目录下的masters文件和slaves文件,masters文件里面主要记录的是什么东西,slaves文件中又记录的是什么东西,masters文件和slaves文件都有什么作用?好,我看到过一篇配置文件是这样的,namenode、辅助namenode节点在一个主机上,jobtracker节点在另一台主机上!当时他是这么配置的,将namenode(辅助namenode)和jobtracker主机的ip都加到了masters文件中,这样配下来虽然不会报错,可是,并没有理解masters的作用!!

2.记录一下几个知识点

<1>Hadoop中的控制脚本到底有哪些

<2>查看一些主要的控制脚本,看看都是什么作用

<3>为什么要配置ssh免密码登录

<4>Hadoop中conf目录下的masters文件和slaves文件该写什么,有什么作用?

3.Hadoop中的控制脚本

配置过Hadoop的人都知道,不管是伪分布式,还是完全分布式,最后一步都是start-all.sh,没错,这个命令就属于控制脚本。

我们可以从Hadoop的bin目录下面查看Hadoop中的控制脚本,如下图所示,start-all.sh、start-dfs.sh等。

4.Hadoop一些重要的脚本

我们可以在命令行下通过cat指令来查看脚本文件,看看都有什么作用:
     <1>start-all.sh脚本

这个控制脚本毋庸置疑,安装过Hadoop的都知道,安装完最后一步,就是start-all.sh

分析,可以得到,这个里面主要又包含了三个控制脚本:

(1)hadoop-config.sh

(2)start-dfs.sh

(3)start-mapred.sh

这三个控制脚本也属于Hadoop的控制脚本,在3.Hadoop中的控制脚本可以看到,所以,start-all.sh其

实是让上面那三个脚本运行,再来看看上面那三个脚本

<2>start-dfs.sh脚本

我们再来通过指令cat来看看start-dfs.sh的内容,看看它有什么作用

可以看到,这个控制脚本,也调用了别的控制脚本,分析后面的内容:

(1)hadoop-daemon.sh --start namenode  根据内容,知道这个是开启namenode守护进程

(2)hadoop-daemons.sh --start datanode  根据内容,知道这个是开启datanode守护进程

(3)hadoop-daemons.sh --start secondarynamenode 根据内容,知道这个是开启辅助namenode守

护进程

所以,start-dfs.sh的作用就是调用控制脚本hadoop-daemon.sh和hadoop-daemons.sh!那么再来看

看这两个脚本是干什么的

<3>start-daemon.sh脚本

同上面一样,我们用cat查看这个脚本,一堆脚本程序,大致的意思就是:主要是生成namenode 的日

志文件,然后将具体的操作请求转发给 org.apache.hadoop.hdfs.server.namenode.NameNode 这个

类。

<4>start-daemons.sh脚本

用cat查看这个脚本

启动datenode时,调用slaves.sh 同时将本地的hadoop_home传递过去,所以说slaves和master的

hadoop路径要一致了

启动辅助namenode时将具体的请求转发给

org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode这个类

OK,再看看salves.sh做了什么

<5>slaves.sh脚本

(1)读取slaves文件里ip配置

(2)ssh每个slave机器

(3)到Hadoop_HOME目录下

(4)执行hadoop-daemon.sh脚本

(5)传递的启动参数为 start datenode

(6)使用conf文件为slave机器HADOOP_HOME下的

再看看slaves机器上的执行情况,其实是把请求转交给了

org.apache.hadoop.hdfs.server.datanode.DataNode这个类来处理了。

<6>start-mapred.sh脚本

(1)hadoop-config.sh                //mapreduce的配置相关

(2)hadoop-daemn.sh              //start jobtracker

(3)hadoop-daemons.sh          //start tasktracker

再看对mapred的处理,其实是把请求转给一下两个类。

org.apache.hadoop.mapred.JobTracker     //master机器上

org.apache.hadoop.mapred.TaskTracker   //slaves机器上
5.为什么ssh要免密码登录

通过上面对控制脚本的分析,我们大致知道了,当在执行start-all.sh或者start-dfs.sh脚本的时候,最终都会调用slaves.sh控制脚本,这个脚本根据slaves文件中的ip地址,通过ssh远

程登陆到datenode,并启动 datenode守护进程,如果每次都需要手动输入密码,数千台计算机,很不可能,所以,我们要实现ssh免密码登录

6.Hadoop中conf目录下面的masters和slaves文件

在配置Hadoop分布式文件系统的时候,会让你配置masters和slaves这两个文件,那么这两个文件都有什么作用,里面都记录什么?

masters文件主要记录运行辅助namenode的所有机器。

slaves文件主要记录了运行datanode和tasktracker的所有机器。

有些人把masters文件,当作是记录所有masters主节点的ip,这么的话,jobtracker,namenode、辅助namenode上面都会启动辅助namenode守护进程,这并不是用户的初衷

Hadoop中的控制脚本的更多相关文章

  1. 深度分析如何在Hadoop中控制Map的数量

    深度分析如何在Hadoop中控制Map的数量 guibin.beijing@gmail.com 很多文档中描述,Mapper的数量在默认情况下不可直接控制干预,因为Mapper的数量由输入的大小和个数 ...

  2. 深度分析如何在Hadoop中控制Map的数量(摘抄)

    很多文档中描述,Mapper的数量在默认情况下不可直接控制干预,因为Mapper的数量由输入的大小和个数决定.在默认情况下,最终input占据了多少block,就应该启动多少个Mapper.如果输入的 ...

  3. 第二十三篇:在SOUI中使用LUA脚本开发界面

    像写网页一样做客户端界面可能是很多客户端开发的理想. 做好一个可以实现和用户交互的动态网页应该包含两个部分:使用html做网页的布局,使用脚本如vbscript,javascript做用户交互的逻辑. ...

  4. Unity 3D 一个简单的角色控制脚本

    之所以写这个脚本,是因为我想起了我还是新手的时候,那时为了一个角色控制脚本百度了半天还是一无所获,因为看不懂啊,都写的太高级了 希望这个脚本能够帮助那些 像曾经的我一样迷失于代码中的新手们能够清晰的理 ...

  5. linux c程序中获取shell脚本输出的实现方法

    linux c程序中获取shell脚本输出的实现方法 1. 前言Unix界有一句名言:“一行shell脚本胜过万行C程序”,虽然这句话有些夸张,但不可否认的是,借助脚本确实能够极大的简化一些编程工作. ...

  6. Hadoop 中疑问解析

    Hadoop 中疑问解析 FAQ问题剖析 一.HDFS 文件备份与数据安全性分析1 HDFS 原理分析1.1 Hdfs master/slave模型 hdfs采用的是master/slave模型,一个 ...

  7. 浅谈hadoop中mapreduce的文件分发

    近期在做数据分析的时候.须要在mapreduce中调用c语言写的接口.此时就须要把动态链接库so文件分发到hadoop的各个节点上,原来想自己来做这个分发,大概过程就是把so文件放在hdfs上面,然后 ...

  8. Zookeeper 在Hadoop中的应用

    Zookeeper 简单介绍 Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目.它主要是用来解决分布式应用中常常遇到的一些数据管理问题,如:统一命名服务.状态同步服务.集 ...

  9. Unity3D第三人称摄像机控制脚本

    好久没有敲Blog该.感谢您的留言.注意.私人信件和其他支持,但我似乎没有办法继续自己曾经写了一篇博客系列,因为我在网上找到有关unity3D太少的内容,U3D相关的文章!.. 第三人称视角 第三人称 ...

随机推荐

  1. 【学习笔记】Manacher

    扔板子跑路 代码 POJ3974 #include <cstdio> #include <cstring> #include <algorithm> using n ...

  2. html2pdf 中文支持问题

    系统用的是HTML2PDF V4.0.3 版本 百度后 http://blog.sina.com.cn/s/blog_6b0ce0310101fdv6.html 发现中文支持不好 还是有乱码问题 解决 ...

  3. Java死锁以及命令检测

    Java每个对象都有一把锁,当前进程使用对象锁1,没有释放该锁,又想要去获取另一把对象锁2,而对象锁2被另外一个线程持有,没有释放,这就很容易出现死锁 1.死锁实例 public class Dead ...

  4. ASP.NET MVC5+EF6+EasyUI 后台管理系统(1)-前言与目录(转)

    开发工具:VS2015(2012以上)+SQL2008R2以上数据库 您可以有偿获取一份最新源码联系QQ:729994997 价格 666RMB 升级后界面效果如下: 日程管理   http://ww ...

  5. CocoStudio资源区导入Plist/PSD文件

    这两种文件在使用中和普通文件稍有不同,下作简单介绍.如有不适的地方欢迎批评指正. 首先简单说一下Plist文件,Plist文件通常用于储存用户设置,也可以用于存储捆绑的信息,该功能在旧式的Mac OS ...

  6. Vue基础知识之常用属性和事件修饰符(二)

    Vue中的常用选项 1.计算属性 computed为可以计算的属性,由get方法和set方法组成,默认调用的是get方法.里面的 计算属性简单来说,就是根据数据推算出来的值,当给这个值赋值时可以影响其 ...

  7. 深入浅出 Java Concurrency (9): 锁机制 part 4 锁释放与条件变量 (Lock.unlock And Condition)

    本小节介绍锁释放Lock.unlock(). Release/TryRelease unlock操作实际上就调用了AQS的release操作,释放持有的锁. public final boolean ...

  8. SVN命令解析以及问题解决(update...)

    SVN常用指令 1.Repo-browser(浏览版本库) 通过“浏览版本库”可以直接查看服务器上指定目录下的所有目录结构(需要有相关权限),包括特定版本的作者,提交时间等,并且在浏览版本库里面链接了 ...

  9. linux中find工具

    find 由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下.即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只要你具有相应的权限. ...

  10. PropertyGrid 重难点总结

    PropertyGrid的界面组成与不同部分的名称如下图所示. 本博文不算是自己写作的,只是将PropertyGrid中的几项十分有用的功能的应用方面的文字进行一下总结,希望以后大家对Property ...