关于数据存储的思考
前言
目前数据中台采用hdfs作为数据存储系统,主要存储是结构化数据,作为hive以及hbase的存储依赖。随着需求的变化,现在不仅仅要存储结构化数据还要存储非结构化数据,视频,音频,图片等。
思考
hdfs作为大数据集群的存储系统,是否适合这些非结构数据呢?
分析
使用hdfs
优点:不用再去使用另外一套存储系统,直接使用现有的hdfs,可以直接使用spark、yarn、mapreduce等大数据集群自带的计算和资源。
缺点:随着非结构化数据量的增大(尤其是大量小图片),hdfs的namenode的压力比较大,可能会有存储频繁扩容的问题,运维压力巨大。
使用S3对象存储
优点:天然的支持这些视频、图片、音频的非结构存储;良好的拓展性、拓展集群运维成本较低;具有较好的数据管理功能,元数据,版本管理,数据分类和标记;使用s3对象存储可以存算分离。
缺点:对于现有的存储架构的兼容问题,是否需要分为两套存储系统分来管理,
确定方案
说到这里了,那肯定是开始搞了啊,要不然也不会思考这么多。
使用对象存储+hdfs进行混合存储,hdfs存储结构化文件,主要为数仓、数据治理提供存储能力;对象存储存储非结构化文件,视频、小文件图片等,可以为算法做存储介质。
分类
存算分离的发展是必然的,随着数据爆发式增长,存储就是必然要面对的问题。hadoop的框架是hdfs+mapreduce+yarn一站式解决方案,这种方案即是优点又成为了它的缺点,当我们数据量增加时,我们仅仅增加磁盘是不够的,因为数据计算中的数据本地性是很重要的,也就是说增加存储资源的同时必须增加计算资源。
使用对象存储后,我们非结构数据一般是视频、图片、文档等数据;这类数据一般可能用于算法的分析,s3本身只负责存储,计算他不关心
现代数据
Hadoop 专为机器数据构建,其中“非结构化数据”是指大型(GiB 到 TiB 大小)日志文件。 当用作真正非结构化数据的通用存储平台时,小对象(KB 到 MB)的流行极大地损害了 Hadoop HDFS,因为名称节点从未设计为以这种方式扩展。
性能
Hadoop 因其提供大数据性能的能力而声名鹊起。 在过去十年的大部分时间里,它们是企业级分析的基准。 不再。 MinIO 已在多个基准测试中证明它比 Hadoop 快得多。 这意味着在 Spark、Presto、Flink 和其他现代分析工作负载上有更好的性能。
实施方案
说明:此次教程针对于cdh 6.3.2
首先找到hadoop自带的对象存储依赖包,查看其是否已经引用到hadoop中:
然后再hadoop的框架的依赖包下查看是否有连接,如果没有自行创建连接:
在hadoop中添加对象存储的配置:
重启hadoop集群即可看到我们配置的对象存储路径下的文件了:
bin/hdfs dfs -mkdir s3a://datastore/test
bin/hdfs dfs -ls s3a://datastore/