大数据系统开发实践项目——安装完全分布式Hadoop集群并利用MapReduce实现倒排索引(北理工大三小学期)

本文介绍了如何在完全分布式Hadoop集群上安装Hadoop、Zookeeper和HBase,并利用MapReduce算法实现倒排索引。通过详细步骤展示了从数据准备、环境配置到代码实现的全过程,最后将倒排索引结果存储到HBase中。实验总结强调了环境搭建、代码编写和结果验证的重要性。
摘要由CSDN通过智能技术生成

后端开发团队负责具体的技术实现,包括爬虫模块、索引构建、查询处理、结果排序等后端任务。通过协同工作,确保后端系统的高效运行和数据处理。

4.前端开发工程师(2人)

前端开发团队负责设计和开发用户界面,与后端对接以实现完整系统。通过用户友好的界面提供良好的搜索体验,并确保前后端的协同工作流畅。

5.测试工程师(2人)

测试团队负责进行系统测试和性能测试,确保系统的稳定性和可靠性。通过全面的测试,提供反馈和建议,帮助优化系统的性能和功能。

六、质量测试和非功能性保证

1.质量保证

质量保证主要通过质量测试来实现。

(1)单元测试

在搜索引擎开发过程中,每个模块,如爬虫、索引构建、查询处理、排序等,将被分解成小的单元进行测试。例如,对于爬虫模块,可以编写单元测试来验证它是否能够正确获取网页内容并存储到HDFS中。对于查询处理模块,可以编写单元测试来验证它是否能够正确解析用户查询并检索倒排索引。

(2)集成测试

通过集成测试,确保各个模块能够协同工作。例如,可以测试整个流程,从爬取网页到构建索引再到用户查询,确保整个搜索引擎系统在集成时能够正常运行。

(3)系统测试

系统测试将验证整个搜索引擎系统的功能、性能、安全性等方面。通过模拟用户实际使用情景,测试系统的响应时间、吞吐量、并发性等指标,以确保系统能够在各种条件下稳定运行。

2.非功能性保证

非功能性保证主要通过非功能性测试来实现。

(1)性能测试

通过性能测试,评估搜索引擎在处理大规模数据和高并发请求时的性能。例如,在构建索引和查询处理阶段,可以测量其响应时间和吞吐量,确保系统在用户需求增加时依然保持高效。

(2)安全性测试

搜索引擎系统可能涉及到用户敏感信息和大量数据,因此安全性测试至关重要。通过模拟网络攻击、数据泄露等场景,验证系统对潜在威胁的抵御能力。

(3)用户体验测试

用户体验测试通过调查和分析用户行为,评估搜索结果的准确性、搜索速度以及用户界面的友好性。通过用户体验测试,确保用户能够获得令人满意的搜索体验。

通过以上质量测试和非功能性保证,搜索引擎系统可以提供高质量的服务,确保其功能稳定、性能卓越、安全可靠、用户体验优秀。这有助于满足用户期望,同时保障系统在面对未来挑战时能够持续高效运行。

③文档倒排索引的实验报告

(下面进入正片)

一、实验要求

运用MapReduce算法计算、构建一个倒排索引,并将倒排索引存储在HBase中。将下载后的数据按照文件的大小或句子数量(例如10000个句子)构成一个文件,形成一个文件集合。

二、实验环境

虚拟机版本:VMware Workstation 17 Pro

Hadoop版本:Hadoop-3.1.3

Zookeeper版本:Zookeeper-3.5.7

HBase版本:hbase-2.4.11

Java版本:oracl jdk-8u212-linux-x64

Linux版本:CentOS-7.5-x86_64-DVD-1804

三、数据准备

观察到实验提供的数据集sentences.txt解压后包含约940万条语句,所占内存约为1.43GB,内存较大,直接运行倒排索引可能会出现问题,故先进行分割处理。

采用Python代码对txt文件进行分割,每1万条语句组成一个新的文件,并按照顺序依次命名为file1.txt、file2.txt、……、file970.txt。执行分割的代码如下:

import os

# 指定输入文件和输出目录
input_file_path = r'D:\hadoop_example\sentences.txt'  # 你的输入txt文件路径
output_directory = r'D:\hadoop_example\files'  # 指定的输出目录路径

# 打开原始txt文件
with open(input_file_path, 'r', encoding='utf-8') as input_file:
    lines = input_file.readlines()
# 计算总行数和文件数
total_lines = len(lines)
num_files = (total_lines + 9999) // 10000
# 分割文件
for i in range(num_files):
    start = i * 10000
    end = min((i + 1) * 10000, total_lines)
    output_filename = os.path.join(output_directory, f'file{i + 1}.txt')

    # 写入分割后的内容到新文件
    with open(output_filename, 'w', encoding='utf-8') as output_file:
        output_file.writelines(lines[start:end])

分割后各文件的情况如下图所示:

四、环境的安装与配置

以下内容请搭配尚硅谷Hadoop教学视频使用,讲得非常细致全面,~~小学期救我狗命,~~搭建完全分布式Hadoop集群请务必一步步跟着操作!!!
尚硅谷大数据Hadoop教程,hadoop3.x搭建到集群调优,百万播放

1.虚拟机的安装与配置

为实现代码的运行在分布式环境下进行,本实践项目利用三台虚拟机模拟三台主机节点:hadoop102、hadoop103、hadoop104,并进行以下操作:

(1)关闭对应的防火墙;

(2)创建用户名与密码;

(3)修改每台虚拟机对应的IP与主机名;

(4)搭建虚拟机网络环境并修改windows的主机映射文件(hosts文件);

2.JDK与Hadoop的安装

以主机节点hadoop102为例,我们需要在其上配置JDK与Hadoop,具体步骤如下:

(1)卸载虚拟机自带的JDK;

(2)利用Xshell将hadoop-3.1.3与jdk-8u212-linux-x64的安装包传至hadoop102的指定文件夹下(/opt/software),并解压安装到指定文件夹(/opt/module);

(3)配置JDK与Hadoop的环境变量,即创建/etc/profile.d/my_env.sh文件;

此时我们只完成了hadoop102上JDK与Hadoop的配置,为实现完全分布式环境下运行,我们也需要对hadoop103、hadoo104进行配置。下面是详细步骤:

(1)在hadoop102上利用scp安全拷贝将hadoop102上的JDK拷贝到hadoop103与hadoop104上:

scp -r /opt/module/jdk1.8.0_212 用户名@hadoop103:/opt/module
scp -r /opt/module/jdk1.8.0_212 用户名@hadoop104:/opt/module

(2)在hadoop102上利用scp安全拷贝将hadoop102上的Hadoop拷贝到hadoop103与hadoop104上:

scp -r /op
  • 11
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值