(提前声明:文章由作者:张耀峰 结合自己生产中的使用经验整理,最终形成简单易懂的文章,转载请注明)
(文章参考:Elasticsearch权威指南,Spark快速大数据分析文档,Elasticsearch官方文档,实际项目中的应用场景)
(帮到到您请点点关注,文章持续更新中!)
Git主页 https://github.com/Mydreamandreality
前景:因为公司数据以每日xxxGB的数据增长,故根据实际需求开始研究大数据存储与分析,清洗挖掘的相关技术,最后敲定了Hadoop+Hbase+Elasticsearch+spark等系列技术栈,现进入研究测试阶段
1
- 关于Hadoop数据集群方案的个人愚见:
- 首先如果需要用hadoop进行大数据分析,那么你们的数据量一定是常规技术无法承载的
- 否则就没有必要为了Hadoop而Hadoop,大数据的解决方案有很多,hadoop只是比较热门的一种
- 其次就是你们目前面临困境,比如是需要实时处理还是需要离线分析
- 在选择前一定要先对选型的技术进行应用场景调研,生态圈,开源,文档,
- 最后进行压测和速度测试,以及后续开发,运维的成本计算
- 否则你拿MapReduce对数据进行实时计算,拿Elasticsearch做大量离线分析,
日增长10TB数据,最后部署三个节点,发现每天各种宕机,节点异常,队列阻塞....那就有点难受了
->>>>>>>>>>>>>>>>>>>>>
- 集群预规划:
- 如果根据实际需求,就是最大的硬件成本投入,理论上讲,一个hadoop集群中
- [NameNode,SeconddaryNameNode,masterNmaeNode]需要单独分配节点,所以至少需要三台服务器支撑
- NameNode调动协调整体集群进行工作,在yarn之上有一个resourceManager比较吃资源,
所以先要保证NameNode节点的配置
- secondaryNameNode和DataNode节点的存储配置要保持大致相同,有一台是用做备份的节点
->>>>>>>>>>>>>>>>>>>>>>>>
- 接下来就是硬件上的选择:CPU,内存,硬盘 ,这个当然是越高越好..........
- 很荣幸我们友商有一份demo案例,友商给出的配置是单机双节点最低配置32G,8核
- 数据集群节点之间交换数据频繁,千兆网卡,交换机配置占比较高
- 如果存在单机单节点Elasticsearch,32G内存,4核CPU是最低配置,否则Elasticsearch会频繁宕机,
- 在友商环境已经做过实验
->>>>>>>>>>>>>>>>>>>>>>>>
- 接下来就是集群服务器节点数量规划
- 我现在假设 已存在10TB数据,预计每日增长10G+,我们先保证一年内的集群正常工作,数据保留
- 比较合理的计算方案为:(10G*365+10TB)*3*2=81TB *3是备份的需求*2是节点系统运算空间
- 如果每台节点的存储空间为10TB,81/10=9台用于存储计算的节点,可能有其他紧急情况容灾服务器
- 总结果:10台集群节点
- 当然最终还是需要进行实际测试,一定数据量的情况下在X台服务器上的运行计算时间,
- 根据实际的需求和指标再进行一个评定
此文章是在初期学习时部署Hadoop的个人文档记录,仅供参考,人不能一口吃成胖子,先从单机部署再到伪分布式最后的完全分布式,我都会总结成文档的形式,分享出来,有任何的问题可以留言讨论
java环境变量,在/etc/profile/文件追加
export JAVA_HOME="jdk安装路径"
export PATH=$JAVA_HOME/bin:$PATH
hadoop环境变量同上
测试结果:
首先 :
测试过程中发现的问题:hadoop hdfs写入数据较慢,暂时不确定是否因为虚拟机配置不足
系统配置:内存2GB,4核处理器,40G硬盘
19/02/28 10:48:38
INFO mapred。LocalJobRunner:减少任务执行器完成。
19/02/28 10:48:38 INFO mapreduce。任务:映射100%减少100%
19/02/28 10:48:38 INFO mapreduce。Job: Job job_local219547754_0001成功完成19/02/28 10:48:38 INFO mapreduce。
工作:计数器:33
文件系统计数器
文件:读取的字节数=541330
文件:写入的字节数=1042176
文件:读取操作数=0
文件:大读操作数=0
文件:写入操作数=0
使用映射-规约模式框架
地图输入记录= 19
地图输出记录= 18
地图输出字节= 149
映射输出实体化字节=80
输入字节= 95
结合输入记录= 18
结合输出记录= 7
减少输入组= 7
减少洗牌字节= 80
减少输入记录= 7
减少输出记录= 7
合并后的地图输出= 1
GC时间消耗(ms)=147
CPU时间(ms)=0
物理内存(字节)快照=0
虚拟内存(字节)快照=0
提交的堆使用总量(字节)=292028416BAD_ID = 0连接= 0IO_ERROR = 0WRONG_LENGTH = 0WRONG_MAP = 0WRONG_REDUCE = 0
文件输入格式计数器字节读= 98
文件输出格式计数器字节写= 58
执行日志:
14:47:44 启动任务
INFO mapred.LocalJobRunner: Starting task: attempt_local1584410053_0001_m_000000_0
14:50:20 任务结束
INFO mapreduce.Job: Counters: 33
此操作涵盖数据写入,统计,输出
最终的测试结果:
task | 启动时间 | 结束时间 | 是否成功 | 总耗时 | 总数据量 | 节点数量 | 系统配置 |
---|---|---|---|---|---|---|---|
wordcount | 10:07:03 | 10:07:03 | Y | 500毫秒 | 10条 | 1 | 内存2GB,4核处理器40G硬盘 |
task | 启动时间 | 结束时间 | 是否成功 | 总耗时 | 总数据量 | 节点数量 | 系统配置 |
---|---|---|---|---|---|---|---|
wordcount | 10:07:03 | 10:07:24 | Y | 1000毫秒 | 66666条 | 1 | 内存2GB,4核处理器40G硬盘 |
task | 启动时间 | 结束时间 | 是否成功 | 总耗时 | 总数据量 | 节点数量 | 系统配置 |
---|---|---|---|---|---|---|---|
wordcount | 10:07:12 | 10:07:37 | Y | 25秒 | 3000000条 | 1 | 内存2GB,4核处理器40G硬盘 |
有问题留言一起交流,
后续我会继续测试一下伪分布式和完全分布式的性能,进行一个对比