启动 HDFS 并运行 MapReduce 程序
时间: 2024-10-18 18:15:39 浏览: 32
启动Hadoop分布式文件系统(HDFS)和运行MapReduce程序通常涉及到以下几个步骤:
1. **启动HDFS守护进程**:
- 在命令行中,首先切换到Hadoop的bin目录:
```bash
cd $HADOOP_HOME/bin
```
- 启动NameNode(主节点),如果集群有多个副本,则还需启动DataNode(从节点):
```
hdfs namenode -format # 初始化NameNode(首次运行)
start-dfs.sh # 启动所有守护进程(包括namenode, datanodes等)
```
2. **检查集群状态**:
使用`jps`命令确认守护进程是否已经启动,如`journalnode`、`datanode`、`secondarynamenode`等。
3. **上传文件到HDFS**:
```
hadoop fs -put local_file_name hdfs://localhost:9000/path/in/hdfs
```
这里`localhost:9000`是默认的HDFS Web UI访问端口。
4. **编写MapReduce程序**:
使用Java或Python(通过Pig或Hive)创建MapReduce作业。例如,简单的Java MR程序示例:
```java
import org.apache.hadoop.mapreduce.Job;
Job job = Job.getInstance(conf);
job.setJarByClass(MyMapper.class);
job.setMapperClass(MyMapper.class);
job.setReducerClass(MyReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
System.exit(job.waitForCompletion(true) ? 0 : 1);
```
5. **提交Job到Hadoop**:
```bash
hadoop jar mymr.jar MyDriver input_path output_path
```
这里`mymr.jar`是包含了MapReduce程序的jar包,`input_path`是输入数据所在的HDFS路径,`output_path`是期望输出结果的位置。
6. **监控Job进度**:
可以通过Web UI(http://localhost:50070/)查看Job的状态。
注意:实际操作过程中可能需要根据你的集群实际情况(单机模式、伪分布模式还是全分布式模式)及Hadoop版本进行相应的调整。
阅读全文