### 南邮大数据存储与管理实验二:MongoDB的安装与应用 #### 一、实验背景及目标 在当前的大数据时代背景下,高效且稳定的数据存储解决方案变得尤为重要。MongoDB作为一种非关系型数据库,以其高性能、高灵活性以及易扩展的特点,在大数据处理领域占据了一席之地。本次实验旨在通过南京邮电大学的学生实践项目——《南邮大数据存储与管理实验二》,详细介绍如何安装和配置MongoDB,并构建一个包含多节点集群的系统。此外,还将利用Python技术开发一个针对学生就业形势的在线分析系统。 #### 二、实验目的 1. **搭建MongoDB集群**:构建一个包含两个分片节点副本集、一个配置节点副本集及两个路由节点的MongoDB集群。 2. **编写Shell脚本**:编写用于部署和管理该集群的Shell脚本。 3. **开发Python应用**:使用Python开发一个可以收集并分析学生就业数据的应用程序。 #### 三、实验环境 - **硬件**: 微型计算机,操作系统为Ubuntu 16.04。 - **软件**: - Linux操作系统。 - PyCharm作为Python开发工具。 - MongoDB数据库管理系统。 - Navicat Premium 16用于数据库管理。 #### 四、实验步骤详解 ##### 1. 安装MongoDB - **下载并解压MongoDB**: - 下载地址:[MongoDB官网](https://www.mongodb.com/download-center/community) - 解压命令:`sudo tar -zxvf mongodb-linux-x86_64-ubuntu1804-6.0.14.tgz` - **重命名解压后的文件夹**:`sudo mv mongodb-linux-x86_64-ubuntu1804-6.0.14 mongodb` - **创建必要的目录**: - 数据目录:`sudo mkdir -p /etc/mongodb/data` - 日志目录:`sudo mkdir -p /etc/mongodb/log` - 配置文件目录:`sudo mkdir -p /etc/mongodb/conf` - **创建MongoDB配置文件**: - 创建空白配置文件:`sudo touch /etc/mongodb/conf/mongodb.conf` - 编辑配置文件:`sudo vim /etc/mongodb/conf/mongodb.conf` - **配置文件内容**(示例): ```plaintext storage: dbPath: /etc/mongodb/data/db net: bindIp: 127.0.0.1 port: 27017 systemLog: destination: file logAppend: true path: /etc/mongodb/log/mongodb.log ``` - **启动MongoDB服务**:`mongod -f /opt/mongodb/conf/mongodb.conf` - **登录MongoDB客户端**:`mongo` - **切换到admin数据库**:`use admin` - **关闭MongoDB服务**:`db.shutdownServer()` ##### 2. 搭建MongoDB集群 - **创建两套副本集**:分别为`shard1`和`shard2`,每套副本集包括三个成员节点。 - **启动副本集**:为每个副本集分别创建配置文件,并使用以下命令启动: - `mongod -f /opt/mongodb/conf/shard1/mongodb.conf` - `mongod -f /opt/mongodb/conf/shard2/mongodb.conf` - **创建配置副本集**:同样包括三个成员节点。 - **启动配置副本集**:使用如下命令启动: - `mongod -f /opt/mongodb/conf/shard3/mongodb.conf` - **初始化副本集**:进入其中一个副本集实例并初始化它: - `mongo --port 27018` - `rs.initiate()` - **添加副本节点**:继续添加其他副本节点并退出: - `rs.add("192.168.211.133:27019")` - `rs.addArb("192.168.211.133:27020")` - `exit` - **初始化配置节点的副本集**:重复上述步骤初始化配置副本集。 - **创建路由节点**:使用`mongos`来创建路由节点,并编辑配置文件。 - **启动mongos**:`mongos -f /opt/mongodb/conf/mongos.conf` - **连接到mongos**:`mongo --port 27017` - **添加分片副本集**:使用以下命令将分片副本集添加到集群中: - `sh.addShard("myshardrs01/lain-virtual-machine:27018,192.168.211.133:27019,192.168.211.133:27020")` - `sh.addShard("myshardrs02/lain-virtual-machine:27021,192.168.211.133:27022,192.168.211.133:27023")` ##### 3. 开发Python应用程序 - **需求分析**:根据题目要求,需要开发一个可以收集和分析学生就业数据的应用程序,数据主要包括全国在校学生总数、毕业生总数、专业情况、招聘单位情况、招聘岗位情况等。 - **设计思路**: - 使用Python进行数据抓取和清洗。 - 利用MongoDB存储清洗后的数据。 - 开发数据分析模块,实现就业趋势分析等功能。 - **技术栈**: - Python库:requests、BeautifulSoup、Pandas等。 - MongoDB操作:使用PyMongo库。 - **具体步骤**: - **数据获取**:编写爬虫程序抓取网络上的数据。 - **数据清洗**:利用Pandas等库进行数据清洗和格式化。 - **数据存储**:将清洗后的数据存入MongoDB数据库。 - **数据分析**:编写Python脚本对存储的数据进行统计分析,如生成图表展示就业趋势等。 通过以上步骤,学生能够深入了解MongoDB的安装、配置及应用,同时掌握使用Python进行数据处理的方法。这对于提高学生的实际操作能力和解决实际问题的能力具有重要意义。
2025-04-15 14:33:57 6.11MB mongodb
1
内容概要:把图形的填充转换为扫描线从上往下扫描填充,这时我们只需要判断每一条扫描线与图形的交点,而我们可以根据扫描线的连贯性,对交点进行排序,第1个点与第2个点之间,第3个点与第4个点之间..... 依照此原理可以对图形进行扫描线算法扫描转换多边形,其中在判断上述交点时,还会出现扫描线与边重合、扫描线与边的交点为顶点等现象。 目的: 1理解多边形填充的目的 2掌握多边形的各种填充算法 3动态链表的排序算法
2024-08-19 14:35:11 87.55MB
1
编译原理 递归向下 词法分析器 Java实现 编译原理实验二
1
包括实验题目,代码及运行结果 实验2 银行家算法(2学时) 一、实验目的 理解银行家算法,掌握进程安全性检查的方法及资源分配的方法。 二、实验内容 编写程序实现银行家算法,并验证程序的正确性。 三、实验要求 编制模拟银行家算法的程序,并以下面给出的例子验证所编写的程序的正确性。 例子:某系统有A、B、C、D 4类资源共5个进程(P0、P1、P2、P3、P4)共享,各进程对资源的需求和分配情况如下表所示。 进程 已占资源 最大需求数 A B C D A B C D P0 0 0 1 2 0 0 1 2 P1 1 0 0 0 1 7 5 0 P2 1 3 5 4 2 3 5 6 P3 0 6 3 2 0 6 5 2 P4 0 0 1 4 0 6 5 6 现在系统中A、B、C、D 4类资源分别还剩1、5、2、0个,请按银行家算法回答下列问题: (1)现在系统是否处于安全状态? (2)如果现在进程P1提出需求(0、4、2、0)个资源的请求,系统能否满足它的请求?
2023-12-21 14:55:57 54KB code
1
合工大计算机与信息学院操作系统实验报告, 实验 二、五、六、七、八、九
2023-11-23 17:33:55 7.07MB 操作系统
1
1、阅读LED数码显示器件基本常识及使用注意事项。 2、复习有关译码器和分配器的原理。 3、画出各实验所需的实验线路及记录表格。 4、查阅74LS138、CD4511逻辑功能及引脚排列图。 1、通过自拟实验方案、自选仪器设备,掌握中规模集成译码器的逻辑功能的测量方法及使用。 2、熟悉数码管的使用。 译码器是一个多输入、多输出的组合逻辑电路。它的作用是把给定的代码进行“翻译”,变成相应的状态,使输出通道中相应的一路有信号输出。译码器在数字系统中有广泛的用途,不仅用于代码的转换、终端的数字显示,还用于数据分配,存贮器寻址和组合控制信号等。不同的功能可选用不同种类的译码器。 LED数码管是目前最常用的数字显示器, 一个LED数码管可用来显示一位0~9十进制数和一个小数点。LED数码管要显示BCD码所表示的十进制数字就需要有一个专门的译码器,该译码器不但要完成译码功能,还要有相当的驱动能力。 1、数字电路实验箱 2、双踪示波器 3、数字万用表 4、74LS138、CC4511、共阴极数码管BS202、电阻510Ω×7
2023-11-13 14:46:55 3.35MB 数电实验
1
1.熟练掌握step( )函数和impulse( )函数的使用方法,研究线性系统在单位阶跃、单位脉冲及单位斜坡函数作用下的响应。 2.通过响应曲线观测特征参量 和 对二阶系统性能的影响。 3.熟练掌握系统的稳定性的判断方法。
2023-10-18 19:02:46 185KB 自动控制
1
实验二 预测分析算法设计与实现,大家可以看看,如果有需要
2023-05-23 23:42:15 54KB 编译原理
1
武汉理工大学软件测试实验二 结构性测试 掌握结构性测试技术,并能应用结构性测试技术设计测试用例; 实验内容 (1) 修改实验一完成的程序,使之只包含结构化程序设计构造; (2) 画出程序图,并计算圈复杂度; (3) 采用基路径方法,设计测试用例,要求写出每个测试用例的执行路径(用语句编号表示),根据设计的测试用例对程序进行测试; (4) 采用定义/使用测试方法,列出程序中每个变量的定义-使用路径,并指明此路径是否是变量的定义清除路径。
2023-05-23 18:49:29 593KB 软件测试
1
南京邮电大学算法分析设计实验二(动态规划法)实验报告
2023-05-17 20:54:33 198KB 算法 动态规划
1