Linux下Hadoop伪分布式配置
这是本人在单机上的Cent-OS系统中配置Hadoop-0.19.1伪分布式时的总结文档,但该文档也适合其他版本的Linux系统和目前各版本的Hadoop(Hadoop-0.20之后的版本配置文件hadoop-site.xml被拆分成了三个core-site.xml,hdfs-site.xml和mapred-site.xml,这里会说明0.20后的版本中如何配置这三个文件) Linux下的Hadoop伪分布式配置是一种在一台机器上模拟Hadoop分布式环境的方法,它允许开发者在本地环境中测试和调试Hadoop应用程序,而无需实际的多节点集群。这种模式使用单个节点来模拟整个Hadoop集群,包括NameNode、DataNode、JobTracker和TaskTracker等组件,所有这些组件都在同一个JVM进程中运行。 ### SSH无密码验证配置 在Hadoop伪分布式环境中,由于所有进程都运行在同一台机器上,SSH无密码验证是必要的,以避免在不同进程间通信时需要手动输入密码。通过生成ssh密钥对,并将公钥添加到`~/.ssh/authorized_keys`文件中,可以实现SSH免密登录。 ### JDK安装和Java环境变量配置 Hadoop依赖Java运行环境,因此首先需要在Linux系统中安装JDK 1.6或更高版本。安装完成后,需要设置`JAVA_HOME`、`PATH`和`CLASSPATH`等环境变量,确保Hadoop可以找到并使用Java。 ### Hadoop配置 对于Hadoop-0.19.1,主要的配置文件是`hadoop-site.xml`。但在Hadoop-0.20及后续版本,配置文件被拆分为三个:`core-site.xml`(核心配置)、`hdfs-site.xml`(HDFS配置)和`mapred-site.xml`(MapReduce配置)。以下是一些关键配置项: - `fs.defaultFS`(在`core-site.xml`中):定义默认的文件系统,通常是`hdfs://localhost:9000`。 - `dfs.replication`(在`hdfs-site.xml`中):设置HDFS数据块的副本数,默认为3,但在伪分布式中通常设为1。 - `mapreduce.framework.name`(在`mapred-site.xml`中):指定作业调度器,对于YARN(自Hadoop 2.0起)应设置为`yarn`,但对于旧版本,可能是`local`或`classic`。 ### Hadoop集群启动 启动Hadoop伪分布式环境包括以下步骤: 1. 初始化NameNode:`hadoop namenode -format` 2. 启动DataNode:`hadoop datanode` 3. 启动Secondary NameNode(如果配置了):`hadoop secondarynamenode` 4. 启动ResourceManager(如果使用YARN):`yarn resourcemanager` 5. 启动NodeManager(如果使用YARN):`yarn nodemanager` 6. 启动JobHistory Server(可选):`mr-jobhistory-daemon.sh start historyserver` 7. 启动NameNode:`hadoop dfsadmin -safemode leave`(如果NameNode处于安全模式) 8. 启动DataNode ### Hadoop使用 #### 测试例子WordCount WordCount是Hadoop的示例程序,用于统计文本中的单词出现次数。在Hadoop伪分布式环境下,可以通过以下步骤运行WordCount: 1. 将输入数据(如文本文件)复制到HDFS:`hadoop fs -put localfile hdfs://localhost:9000/input` 2. 编译WordCount程序:`mvn package`(如果你使用Maven) 3. 运行WordCount:`hadoop jar target/hadoop-examples-*.jar wordcount hdfs://localhost:9000/input hdfs://localhost:9000/output` 4. 查看结果:`hadoop fs -cat hdfs://localhost:9000/output/*` #### 编写Hadoop应用程序 在Hadoop伪分布式模式下,开发者可以编写自己的MapReduce程序,进行编译和测试。程序通常包括Mapper、Reducer类,以及主类。使用`hadoop jar`命令提交任务到本地运行的JobTracker。 #### 提交多个作业到集群 在伪分布式环境中,可以连续提交多个作业,JobTracker会按照提交顺序处理。每个作业的输出可以作为下一个作业的输入,实现作业链。 以上内容涵盖了Hadoop在Linux伪分布式环境下的基本配置和使用方法。通过这种方式,开发者可以在本地环境中高效地开发和测试Hadoop应用,为部署到大型分布式集群做好准备。