如何解读Java架构师深入浅出的大数据体系原理?程序员必看!!!
Java架构师最近几天在思考,如果用一个简单的例子来说明下大数据中涉及到一些方面或者内容。经过反复拿捏,感觉下面的例子对于未接触过大数据的人来说,比较容易接受和理解。
我们这里已数字排序作为说明。
我有10个整数,把他们全部放进内存,然后条用api的排序接口,很快就会得出结果。
我有1G的数据,这个时候,如果机器不是那么破的化,也可以全部把他们放到内存中进行排序,也可以得出结果。
我有10G的数据,勉强可以多往电脑中插几个8G的内存条,也许勉强可以。
如果现在我有100G的数据整数,怎么弄?这个时候显然增加内存条是不可能解决的。而且,这区区100G的数据还算不算大数据。按照现在电影的体积,也就100多部。
这个时候,1台机器显然装不下这么多东西,怎么半?就是再多找几台机器。
机器增多了意味着什么?这个时候就需要懂分布式计算,而如果连分布式都不懂,那么,大数据你肯定不清楚。
如果现在100G的数据,现在有10台机器,那么,
【1】这100G的整数如果分配?
【2】这10台机器之间如何通讯?这个时候,你需要懂网络编程
【3】假设每台机器上的数据都已经排好序,如何多快好省的把各自排序的结果merge在一起?
【4】如何设计有效的merge逻辑减少10台机器之间的网络IO。
【5】如果这10台机器中,万一在排序时突然down了,怎么办?具体但不限于:在机器down之前,有相应其他机器发给他的请求吗,它自身的任务完成了多少?在down的时候,其正在跟其他机器传输数据怎么办?
【6】谁去监听这10台机器的健康或者是其他机器怎么知道某台机器down了?如果是连接超时,怎么知道是网络阻塞还是目标机真的挂了?
【7】如果某台机器真的down了,无法恢复,或者集群中有一台主机被临时抽走怎么办?如果把那台机器上的数据分给其他9台?
如果数据不是100G,而是1TB,1PB 等等,那么这么大数据,那么大集群,同一时间挂掉的机器数量可能会很多,
【1】如果这些机器做存储,怎么保证数据不丢失?
【2】如果这个集群做离线计算,怎么涉及调度程序提高每台机器的资源利用率,减少集群内的网络IO和尽可能提高每台机器的响应速度。
【3】如果集群是可扩展的,最好架构能支持只要简单地增加机器数目就能扩充集群计算和存储能力,这个架构怎么设计?
综上,相关问题的解决会涉及到大数据中的种种概念,如:mapreduce,hadoop,hive,spark等。
专注于Java架构师技术分享,撩我免费送Java全套架构师晋级资料
(Java架构师交流企*-*Q*-*鹅*-*裙*-*:445*-**-*820*-**-*908)
网友评论