### 南邮大数据存储与管理实验二: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进行数据处理的方法。这对于提高学生的实际操作能力和解决实际问题的能力具有重要意义。
1