一、实验目的
1. 了解熟悉linux命令。
2. 学习hadoop的安装和配置。
3. 学习编写基础的MR代码。
二、实验内容
1. 建立hadoop 完全分布式模式。
2. 上传数据并且对数据进行查询。
3. 通过安装Hadoop了解Hadoop的原理
### Hadoop搭建及MR编程-实验报告
#### 一、实验目的
1. **了解熟悉Linux命令**:在本实验中,参与者需掌握基本的Linux命令操作,为后续Hadoop环境的搭建奠定基础。
2. **学习Hadoop的安装与配置**:包括Hadoop软件的下载、解压、配置等过程,确保能够成功搭建Hadoop集群。
3. **学习编写基础的MapReduce代码**:通过编写简单的MapReduce程序,理解MapReduce的工作原理及其在大数据处理中的应用。
#### 二、实验内容
1. **建立Hadoop完全分布式模式**:通过配置多台服务器节点(包括Master和Slave),构建一个完整的Hadoop集群,实现数据的分布式存储和处理。
2. **上传数据并对数据进行查询**:向HDFS中上传数据文件,并利用Hadoop提供的工具对数据进行基本的查询操作。
3. **了解Hadoop的原理**:通过对Hadoop集群的安装与配置过程的学习,深入理解Hadoop的工作机制,特别是MapReduce框架的基本原理。
#### 三、实验原理
**MapReduce**是Hadoop的核心组件之一,它提供了高效的数据处理方法。具体而言:
- **Map阶段**:将输入数据分割成若干个小块,并通过自定义的Map函数进行处理,将每个数据块转换为键值对的形式。
- **Reduce阶段**:对Map阶段产生的中间结果进行汇总,通过自定义的Reduce函数进一步处理这些键值对,最终得到所需的结果。
#### 四、实验设备
1. **VM CentOS 5.5三台**:作为Hadoop集群的节点,分别设置为主节点(Master)和从节点(Slave)。
2. **PC机一台**:用于管理Hadoop集群和编写测试代码。
#### 五、实验步骤
1. **准备工作**:
- 配置各节点的IP地址:
- Master: 192.168.78.130 (node1)
- Slave1: 192.168.78.131 (node2)
- Slave2: 192.168.78.132 (node3)
- 配置SSH免密码登录,以便于远程管理各节点。
- 安装JDK和Hadoop 2.6版本。
2. **配置Hadoop**:
- **配置core-site.xml**:设置默认的文件系统路径。
- **配置mapred-site.xml**:配置JobTracker的服务地址。
- **配置hdfs-site.xml**:设定数据块的副本数量以及NameNode和DataNode的存储目录。
- 修改masters和slaves文件,指定Master和Slave节点的IP地址。
3. **分发格式化**:将配置好的Hadoop分发至两个Slave节点。
4. **启动Hadoop**:使用`start-all.sh`脚本启动Hadoop服务,并通过`jps`命令检查服务是否正常运行。
5. **编写MapReduce程序**:编写一个简单的程序来统计文本文件中特定关键词(如“美食”)的出现次数。主要步骤包括:
- Map函数:读取输入数据,将每行文本转换为键值对形式。
- Reduce函数:对键值对进行汇总,输出最终结果。
- 打包成JAR文件。
6. **上传数据文件到Hadoop**:使用`hadoop fs -mkdir`和`hadoop fs -put`命令创建文件夹并上传数据文件。
7. **运行MapReduce程序**:使用`hadoop jar`命令运行编写的MapReduce程序,处理数据文件,并将结果输出到指定位置。
#### 六、实验结果
1. **查看导出文件名**:使用`hadoop fs -ls /output/`命令列出输出文件夹下的所有文件。
2. **查看导出文件内容**:使用`hadoop fs -cat /output/part-r-00000`命令查看输出文件的具体内容。
3. **统计特定关键词出现次数**:通过`hadoop fs -cat part-00000 | grep '美食' | wc -l`命令统计含有关键词“美食”的记录数。
#### 七、结果分析
根据实验结果,微博用户发布的微博中带有“美食”字样的记录数共有11199条。
#### 八、收获、体会及建议
- **收获**:通过本实验,加深了对Linux命令的理解和应用能力;掌握了Hadoop的安装配置流程;学会了如何编写和运行简单的MapReduce程序。
- **体会**:实践中遇到问题时,及时查阅文档和资料非常重要;团队合作在项目实施过程中也起着关键作用。
- **建议**:未来可以尝试更复杂的MapReduce案例,进一步提升编程技巧和解决实际问题的能力。同时,加强理论学习,理解Hadoop背后的算法设计原理,有助于更好地应对大数据处理中的各种挑战。