在大学教育信息化进程中,多媒体教学资源的管理长期存在三个痛点:海量非结构化数据存储困难、教学资源检索效率低下、系统扩展性不足。这个基于Hadoop的SpringBoot系统正是为解决这些问题而生,我在某高校实际部署时,仅用3个月就将原本分散在12个院系的8TB教学视频、课件、习题集实现了统一管理,查询响应速度提升17倍。
系统采用经典的三层架构:
特别之处在于设计了双写入机制:结构化数据(如课程信息)同时写入MySQL和HBase,通过Binlog实现实时同步。实测显示,这种设计使系统在日均10万次查询压力下仍保持300ms内的响应速度。
| 组件 | 版本 | 选用理由 | 性能指标 |
|---|---|---|---|
| HDFS | 3.3.4 | 支持EC编码节省40%存储空间 | 吞吐量1.2GB/s |
| HBase | 2.4.14 | 适合教学资源的随机读写 | 单节点QPS 5000+ |
| Spark | 3.2.1 | 用于离线分析观看行为 | 100GB数据5分钟处理 |
| ZooKeeper | 3.7.1 | 保障HBase集群稳定性 | 选举耗时<200ms |
实际部署建议:教学视频采用REPLICATION=3的存储策略,课件类小文件建议合并为SequenceFile存储
创新性地结合了HBase的精确查询与Solr的全文检索:
java复制// 混合查询示例
public List<Resource> search(String keyword) {
// 先用Solr查元数据
SolrDocumentList docs = solrClient.query(buildSolrQuery(keyword));
// 再用HBase获取完整二进制
return docs.stream()
.map(doc -> hbaseTemplate.get(
"resources",
(String)doc.get("id"),
new ResourceRowMapper()))
.collect(Collectors.toList());
}
基于FFmpeg和Spark构建的处理流程:
实测处理1小时1080P视频仅需8分钟(5节点集群)
我们开发了定时合并作业,每周日凌晨2点执行:
bash复制hadoop jar mergejob.jar \
-Dmapreduce.job.queuename=low \
-input /edu/resources/temp \
-output /edu/resources/merged_${date} \
-codec com.hadoop.compression.lzo.LzoCodec
优化后:
关键参数调整:
xml复制<property>
<name>hbase.regionserver.handler.count</name>
<value>60</value> <!-- 默认30 -->
</property>
<property>
<name>hbase.hstore.blockingStoreFiles</name>
<value>30</value> <!-- 默认10 -->
</property>
配合预先建分区策略,使95%的查询落在本地节点。
现象:某天上午10点突然出现视频播放超时
排查过程:
通过GC日志发现Full GC频繁:
code复制[Full GC 5483ms, interval 12min]
使用MAT分析heap dump:
java复制@Configuration
public class MyBatisConfig {
@Bean
public ConfigurationCustomizer configurationCustomizer() {
return configuration -> {
configuration.setCacheEnabled(true);
configuration.setLocalCacheScope(LocalCacheScope.STATEMENT);
};
}
}
| 角色 | 数量 | CPU | 内存 | 磁盘 | 网络 |
|---|---|---|---|---|---|
| Master | 2 | 16核 | 64G | 2x1TB SSD RAID1 | 10Gbps |
| RegionServer | 5 | 32核 | 128G | 12x4TB HDD JBOD | 25Gbps |
| DataNode | 8 | 16核 | 32G | 10x8TB HDD JBOD | 10Gbps |
必须监控的5个关键指标:
建议使用Prometheus+Grafana配置看板,采样间隔设为15秒。
现有系统基础上,我们正在试验三个增强功能:
特别是在视频内容分析方面,尝试用OpenCV实现:
这些功能可使系统从单纯的管理工具升级为教学分析平台。