[Hadoop系列]Hadoop的安装-1.本地模式

本文介绍了如何在 Ubuntu Linux 9.10 系统上安装 Hadoop 0.20.1 版本。安装过程包括配置 Java 环境、设置 SSH 通讯及安装 Cygwin(仅限 Windows)。文中详细说明了本地模式的安装步骤,并提供了测试运行效果的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  inkfish原创,请勿商业性质转载,转载请注明来源(http://blog.youkuaiyun.com/inkfish )。

  Hadoop是Apache基金会下的一个开源云计算平台项目。当前最新版本是hadoop 0.20.1。下面就hadoop 0.20.1为蓝本,介绍在Ubuntu Linux 9.10下安装hadoop的方法。(来源:http://blog.youkuaiyun.com/inkfish)

支持的平台:(来源:http://blog.youkuaiyun.com/inkfish)
  Linux,可作为开发和产品部署的平台;
  Windows,可作为开发平台。

事先需要的软件:(来源:http://blog.youkuaiyun.com/inkfish)
  1.JavaTM1.6.x,必须安装,建议选择Sun公司发行的Java版本;
  2.ssh必须安装,并保证sshd运行,hadoop将以ssh进行通讯;
  3.如果是windows,则需要装Cygwin,用以支持shell命令。

安装可用的模式:(来源:http://blog.youkuaiyun.com/inkfish)
  1.本地模式;
  2.伪分布模式;
  3.全分布模式。

本地模式安装步骤:(来源:http://blog.youkuaiyun.com/inkfish)
  1.将hadoop安装包解压缩到某目录下;
  2.修改conf/hadoop-env.sh文件,export JAVA_HOME= 那行设置正确的JAVA_HOME 位置,当然如果事先在操作系统已经set完JAVA_HOME ,可以忽略此步骤;


  本地模式安装完了,就这么简单!

 

测试一下运行效果:(来源:http://blog.youkuaiyun.com/inkfish)

  $ mkdir input
  $ cp conf/*.xml input
  $ bin/hadoop jar hadoop-*-examples.jar grep input output 'dfs[a-z.]+'
  $ cat output/*

这个示例程序是hadoop自带的,用于把conf下的xml文件拷贝到input目录下,并且找到并显示所有与最后一个参数的正则表达式相匹配的行,output是输出文件夹。

<think>好的,我现在需要帮助用户理解如何正确运行Hadoop MapReduce的示例程序,特别是grep任务。用户提到了路径配置、任务执行注意事项、输入输出路径设置、本地目录创建以及查看HDFS路径的方法。我需要结合之前的对话和提供的引用内容来给出详细的步骤和解释。 首先,回顾用户之前的问题,他们询问了几行Hadoop命令的含义和作用。现在用户想自己运行示例程序,所以需要一步步的指导。根据引用内容,特别是引用1和5,用户可能需要配置基本环境,创建输入目录,复制配置文件,然后执行jar包中的示例程序。 首先,我需要确认用户是否已经正确配置了Hadoop环境。引用1提到需要设置JAVA_HOME,并测试MapReduce程序。所以在运行示例之前,用户需要确保Hadoop的基本配置正确,尤其是JAVA_HOME的路径是否正确。这可能是一个潜在的注意事项,如果配置不正确,程序可能无法运行。 接下来,用户需要创建本地输入目录,并将配置文件复制到该目录下,作为测试数据。引用1和2都提到了创建input目录并复制xml文件的操作,例如mkdir input和cp命令。这部分需要注意路径是否正确,用户是否在正确的Hadoop解压目录下执行这些命令,否则可能会导致文件找不到的错误。 然后,执行hadoop jar命令运行grep示例。引用1、3、4、5都提到了使用hadoop jar命令来运行示例程序,但不同版本的Hadoop jar包名称可能不同,例如hadoop-mapreduce-examples-2.10.1.jar或hadoop-examples-3.2.1.jar。这里需要提醒用户根据自己安装Hadoop版本替换正确的jar包名称,否则会出现ClassNotFoundException,如之前的问题中提到的常见错误。 输入输出路径的设置也是关键。引用1中的示例使用的是本地路径,还是HDFS路径?根据之前的回答,当没有指定协议时,默认使用HDFS,但也可以通过file:///来指定本地路径。用户需要明确输入输出路径的位置,如果是HDFS,需要确保文件已经上传到HDFS中。例如,在引用5的WordCount案例中,输入路径是本地目录wcinput2,而输出是wcoutput2。但根据之前的回答,当使用hadoop jar命令时,默认可能访问HDFS,所以需要用户确认路径类型,或者显式指定协议。 此外,输出目录必须不存在,否则会报错,这一点在之前的回答中已经提到过,引用4中的例子也展示了这一点,所以用户需要记得在执行前删除已有的输出目录,或者指定一个新的目录。 查看HDFS路径的方法,用户可能需要使用hdfs dfs -ls /output这样的命令来检查结果。如果输出路径在HDFS中,用户需要使用HDFS命令来查看,而如果是本地路径,则直接使用ls。这里需要明确输出路径的位置,并指导用户如何根据路径类型进行查看。 另外,用户可能遇到的常见问题包括:ClassNotFoundException(jar包名称或类名错误)、输出目录已存在、输入路径错误等。需要提醒用户如何处理这些问题,比如检查jar包版本,删除已存在的输出目录,确认输入文件是否正确复制等。 还有,性能优化方面,比如调整分块大小或Reducer数量,但用户当前的问题可能更关注正确运行,所以这部分可能暂时不需要深入,除非用户提到性能问题。 最后,根据用户的需求,生成相关问题,比如如何查看示例程序列表,如何监控任务进度等,这些扩展问题可以帮助用户进一步学习。 总结步骤应该是: 1. 环境准备:确认Hadoop配置正确,尤其是JAVA_HOME。 2. 创建本地输入目录并复制测试数据。 3. 将输入数据上传到HDFS(如果需要)。 4. 执行hadoop jar命令,指定正确的jar包、主类、输入输出路径和参数。 5. 处理可能出现的错误,如输出目录存在。 6. 查看结果,使用hdfs命令或本地查看。 需要详细说明每个步骤的具体命令和注意事项,确保用户能够逐步执行并理解每个操作的作用。同时,引用之前的引用内容来支持步骤的正确性,比如引用1中的命令示例,引用5中的WordCount案例结构等。</think>### Hadoop MapReduce示例程序运行指南(以grep任务为例) --- #### 一、运行环境准备 1. **配置验证** - 确保`JAVA_HOME`正确指向JDK安装目录(`/etc/hadoop/hadoop-env.sh`中配置) ```bash export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 # 根据实际路径修改 ``` - 验证Hadoop本地模式配置: ```bash hadoop version # 应显示2.10.1或其他安装版本 ``` --- #### 二、输入数据准备 1. **本地目录操作** ```bash # 在Hadoop安装目录下操作(例如:/opt/hadoop-2.10.1) mkdir input # 创建本地输入目录 cp etc/hadoop/*.xml input/ # 复制配置文件作为测试数据[^1][^2] ``` 2. **HDFS路径管理(可选)** - **若需使用HDFS**: ```bash hdfs dfs -mkdir /input # 在HDFS创建输入目录 hdfs dfs -put input/*.xml /input # 上传本地文件到HDFS ``` --- #### 三、执行grep任务 1. **基础命令格式** ```bash hadoop jar \ $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar \ grep \ <输入路径> \ <输出路径> \ '<正则表达式>' ``` 2. **具体执行示例** - **本地文件模式**: ```bash hadoop jar hadoop-mapreduce-examples-2.10.1.jar grep \ file:///opt/hadoop-2.10.1/input \ # 显式指定本地路径协议 file:///opt/hadoop-2.10.1/output \ 'error|warning' # 同时匹配error和warning关键词 ``` - **HDFS模式**: ```bash hadoop jar hadoop-mapreduce-examples-2.10.1.jar grep \ /input \ # 默认使用HDFS路径(由core-site.xml定义) /output \ 'dfs[a-z.]+' # 匹配以dfs开头的单词[^1] ``` --- #### 四、关键注意事项 1. **路径协议说明** | 路径类型 | 协议前缀 | 示例 | |----------|----------|---------------------| | 本地文件 | `file://`| `file:///home/input`| | HDFS | `hdfs://`| `hdfs://namenode:8020/input`| - 未显式添加协议时,默认使用`core-site.xml`中`fs.defaultFS`配置的协议[^1] 2. **输出目录要求** - 输出路径必须不存在,否则会触发`FileAlreadyExistsException`[^4] - **强制覆盖输出目录**(生产环境慎用): ```bash hadoop jar ... -D mapreduce.output.fileoutputformat.outputdir.overwrite=true ``` --- #### 五、结果验证方法 1. **本地模式结果查看** ```bash cat output/* # 直接查看本地输出文件 ``` 2. **HDFS模式结果查看** ```bash hdfs dfs -ls /output # 查看输出目录结构 hdfs dfs -cat /output/part* # 查看具体结果文件 ``` --- #### 六、常见问题排查 | 错误现象 | 原因分析 | 解决方案 | |------------------------------------|---------------------------|-----------------------------------| | `ClassNotFoundException` | JAR包版本与类名不匹配 | 使用`hadoop jar xxx.jar`查看可用程序列表[^3] | | `No such file or directory` | 输入路径未正确创建 | 检查`mkdir`和`cp`操作是否在正确目录执行[^2] | | `Output directory already exists` | 输出目录已存在 | 手动删除旧目录:`hdfs dfs -rm -r /output` | --- ### 相关问题 1. 如何查看`hadoop-mapreduce-examples.jar`中包含的所有可用示例程序? 2. 在HDFS模式下运行MapReduce任务时,如何监控任务的实时进度? 3. 如何调整MapReduce任务的并行度(如Mapper/Reducer数量)? 4. Hadoop本地模式与集群模式运行MapReduce任务有何性能差异? --- [^1]: Hadoop基本配置及本地模式运行案例 [^2]: 输入目录创建与配置文件复制 [^3]: 示例程序包功能说明 [^4]: MapReduce任务输出目录安全机制 [^5]: WordCount案例执行与结果验证
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值