如何手动启动Hadoop
2009-11-20 11:06
From地址为:http://hi.baidu.com/woodyzhou/blog/item/3cab4139cfa7072497ddd8c1.html
Hadoop Cluster的启动可以说十分简单,最简单的一种方法就是运行$HADOOP_HOME/bin/start-all.sh,我也相信绝大多数的人都是这么启动的。但是这个脚本里面到底做了些什么呢?让我们来抽丝剥茧的看一看:
注:不失一般性,我们这里以dfs的启动为例子,mapred的启动道理是一样的。
Dfs
的启动脚本实际上是$HADOOP_HOME/bin/start-dfs.sh,start-all.sh也正是通过调用这个脚本来达到启动整个
HDFS的目的。start-dfs.sh会按顺序启动namenode,
datanode(s)和secondnamenode,我在这里将一一说明:
1. 启动NameNode
【start- dfs.sh】:对于start-dfs.sh来说启动NameNode仅仅就是调用hadoop-daemon.sh [...]
start namenode
[...]。([]内为省略的参数。)start表示启动namenode,同理stop表示关闭namenode。namenode告诉hadoop-
daemon.sh他将启动的是那种类型的节点。
【hadoop-daemon.sh】:hadoop-daemon.sh的工作相对
start-dfs.sh复杂一点。他虽然接受两个参数,但实际关心的仅仅只是start/stop这一个。他会更具start或stop采取不同的措
施。我们此处仅关心start的过程。在hadoop- daemon.sh发现动作参数是start以后,它会调用hadoop [...]
namenode [...]同时把该脚本的output内容导向一个日志文件(位于$HADOOP_HOME/logs下的文件就是这么来的)。
【hadoop】:hadoop 脚本是真正办事情的人,就是它启动了namenode。实际上所有的Hadoop的做事的节
点:namenode,datanode,secondnamenode,jobtracker,tasttracker都是hadoop脚本启动的——
这是后话。hadoop脚本会根据namenode决定相应的java main
class(org.apache.hadoop.hdfs.server.namenode.NameNode)然后初始化classpath,最后调
用java命令启动namenode。
【最终的java命令】:
java -Xmx1000m
-Dhadoop.log.dir=[$HADOOP_HOME]/logs -Dhadoop.home.dir=[$HADOOP_HOME]
-classpath
[$HADOOP_HOME/conf+$HADOOP_HOME/hadoop-*-core.jar+$HADOOP_HOME/lib下的所有
jar] org.apache.hadoop.hdfs.server.namenode.NameNode
2.启动DataNode(s)
【start- dfs.sh】:start-dfs.sh启动datanode的时候调用的是hadoop-daemons.sh [...]
start datanode
[...]。被调用的脚本名字变成的复数,奇迹上它做的事情也是hadoop-daemon.sh的n次(n由datanode的个数决定)。
【hadoop-daemons.sh】:这个脚本只是把请求传递给slaves.sh,当然同时传递一组命令,这组命令的具体用途在slaves.sh中说明。
【slaves.sh】:slaves.sh脚本会根据
$HADOOP_HOME/conf/slaves的文件的内容,通过ssh向每个slave发送
hadoop-daemons.sh传入的命令。命令很简单:1.cd到
$HADOOP_HOME;2.调用
hadoop-daemon.sh start datanode,现在一切又都和启动namenode的时候相同了。
【hadoop-daemon.sh】:调用hadoop [...] datanode [...]
【hadoop】:找到java main class(org.apache.hadoop.hdfs.server.datanode.DataNode)运行java命令
【最终的java命令】:
java -Xmx1000m
-Dhadoop.log.dir=[$HADOOP_HOME]/logs -Dhadoop.home.dir=[$HADOOP_HOME]
-classpath
[$HADOOP_HOME/conf+$HADOOP_HOME/hadoop-*-core.jar+$HADOOP_HOME/lib下的所有
jar]
org.apache.hadoop.hdfs.server.datanode.DataNode
3.启动SecondNameNode
SecondNameNode没有任何复杂的,类似于启动DataNodes,区别就是脚本将根据
$HADOOP_HOME/conf/masters文件内的地址启动SecondNameNode。
【最终的java命令】:
java -Xmx1000m
-Dhadoop.log.dir=[$HADOOP_HOME]/logs -Dhadoop.home.dir=[$HADOOP_HOME]
-classpath
[$HADOOP_HOME/conf+$HADOOP_HOME/hadoop-*-core.jar+$HADOOP_HOME/lib下的所有
jar]
org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode
到这里整个start-dfs.sh就分析完了。可以看出最终脚本都是执行了一个java命令,起动了一个java程序。实际上,你完全可以自己到各个节点上手工敲入上面的java命令启动所有节点。最终的结果都是一样的。
其
实这篇文档在大多数人看来也是毫无意义的,脚本能做到的事情为什么要手工做呢?的确如此,绝大多数情况下这么做绝对是多余的。我到现在也没遇到过“真的
”需要我这么做的情况。为什么“真的”要打上引号呢?因为我曾经企图将Hadoop移植到SUN的Project
Caroline上,而后者却是一个只能执行java命令的云环境。所以我才会有上述需求。虽然最后失败了!(其实HDFS的移植算是成功的,但是由于mapred部分必须需要调用系统脚本,所以不得不放弃)
分享到:
相关推荐
- **启动NameNode**:启动Hadoop集群的NameNode服务。 ```bash [root@namenode hadoop-2.7.3]# sbin/hadoop-daemon.sh start namenode ``` - **启动DataNode**:启动Hadoop集群的DataNode服务。 ```bash ...
8. **启动和验证**:最后,启动Hadoop服务,并进行一些基本操作,如创建HDFS目录、上传文件、运行MapReduce任务,以确保一切正常运行。 手动编译64位Hadoop本地库的好处在于,你可以根据服务器的具体需求定制Hadoop...
5. 在项目中引用Hadoop的相关库,这可以通过Maven或Gradle构建工具实现,或者手动添加Hadoop的JAR文件。 最后,记得在每次修改配置或添加新文件后,重启Eclipse或Hadoop服务以应用更改。通过以上步骤,你应该能够在...
Hadoop作为大数据处理的核心组件,包括HDFS(Hadoop Distributed File System)和MapReduce等模块,构建一个Hadoop集群通常涉及多台服务器的配置、软件安装、服务启动和集群配置。通过Ansible,我们可以简化这个过程...
7. 启动Hadoop服务:通过start-dfs.sh和start-yarn.sh命令启动Hadoop的各个组件。 8. 设置SSH免密登录:为了集群间通信,脚本可能会包含一个步骤来配置所有节点间的SSH无密码登录。 9. 验证安装:最后,脚本可能会...
7. **启动Hadoop**:通过`start-dfs.sh`和`start-yarn.sh`命令启动Hadoop服务。 8. **检查集群状态**:使用`jps`命令查看各节点上的进程,或者通过Web UI(如ResourceManager的8088端口,NameNode的50070端口)监控...
7. 启动Hadoop:运行bin目录下的start-dfs.cmd和start-yarn.cmd启动Hadoop服务。 8. 测试运行:通过hadoop fs -ls等命令检查Hadoop是否正常运行。 这个压缩包提供的解决方案对于在Windows环境下快速部署和测试...
- **项目创建**:插件允许用户创建Hadoop MapReduce或YARN项目,提供了模板来快速启动新项目。 - **编辑器支持**:提供针对Hadoop配置文件(如job.xml和mapred-site.xml)的特殊编辑器,带有代码提示和语法高亮。 ...
它提供了一系列命令行工具,用于执行Hadoop生态系统中的各种操作,如设置HDFS(Hadoop Distributed File System)的访问权限、管理Hadoop守护进程的启动和停止、配置Hadoop环境变量等。winutils.exe是Hadoop在...
这些修改过的文件使得用户可以跳过手动配置的复杂步骤,直接在Windows上启动Hadoop集群。 安装和配置过程大致包括以下步骤: 1. 安装Cygwin或Git Bash,并添加到系统环境变量。 2. 解压Hadoop 2.7.1的Windows版本...
完成这些步骤后,便可以启动Hadoop集群并开始处理大数据任务。 总之,Apache Hadoop 是一个强大的大数据处理工具,通过HDFS和MapReduce提供可靠的分布式计算能力。理解其架构和搭建过程是掌握大数据技术的关键,而...
最后,启动Hadoop的各个服务,包括DataNode、NameNode、SecondaryNameNode、ResourceManager和NodeManager。在Master节点上,可以使用`start-dfs.sh`和`start-yarn.sh`命令启动Hadoop集群。 8. **验证安装** 验证...
- 在Eclipse中配置Hadoop安装目录,选择“Window > Preferences > Hadoop Map/Reduce”,手动输入或选择Hadoop的安装目录。 - 切换到“Map/Reduce”界面模式,便于进行Hadoop程序的开发。 #### 五、建立与Hadoop...
"winutil.exe"是另一个关键组件,它是Hadoop在Windows下的本地实用程序,用于执行一些系统级别的操作,如启动Hadoop服务或者管理HDFS文件系统。 Hadoop 2.8版本引入了YARN(Yet Another Resource Negotiator),这...
4. **HDFS初始化**:使用`hdfs namenode -format`命令格式化NameNode,这是首次启动Hadoop集群的必要步骤。 5. **启动服务**:启动DataNode、NameNode和ResourceManager等服务,可以使用`start-dfs.cmd`和`start-...
可以通过包管理器(如yum或apt-get)或者手动下载安装的方式来完成JDK的安装。 **命令示例**(以CentOS为例): ```bash sudo yum install java-1.8.0-openjdk-devel -y ``` ##### 2.2 SSH免密登录设置 1. **生成...
此外,还需要启动Hadoop的相关服务,如namenode、datanode等,然后使用Spark的Local模式或者Hadoop的Mini Cluster模式运行Spark作业。 总之,Hadoop Common是Spark开发中必不可少的依赖,它提供与HDFS交互的接口和...
完成所有安装和配置后,启动Hadoop相关服务,包括NameNode、DataNode、ResourceManager、NodeManager等。使用Hadoop命令进行基本的测试,如`hdfs dfs -put`上传文件,`hdfs dfs -ls`列出目录,确保HDFS正常工作。 #...
#### 五、启动Hadoop集群 - 在NameNode上运行`start-dfs.sh`和`start-yarn.sh`命令来启动HDFS和YARN服务。 - 使用`jps`命令验证Hadoop服务是否正常启动。 #### 六、总结 本文详细介绍了如何在CentOS 7环境下部署...