为什么要用hadoop

本文探讨了使用Hadoop MapReduce并行处理大量日志数据的方法,以解决传统方式下数据处理时间过长的问题。文章分析了现有系统的瓶颈,并提出了采用多节点并行处理策略,同时考虑了数据一致性及查询效率的改进方案。

        以前公司的数据日志是每天从生产数据库导出到数据服务器,再通过一个python脚本分析这些日志并存入mysql当中,这种方式在数据量小的情况下还没什么事,数据量一大,所需时间是几何增长。有段时间每天光apache log解压之后就有几十个G,虽然通过很多手段比如减少查询,减少单条数据插入,使用LOAD将数据导入数据库,但所需时间还是要很久。为了减少每天log分析的时间以及数据的稳定性,决定搭建一个hadoop系统,使用hadoop map/reduce来并行的处理log。

       具我分析,目前数据分析系统的主要瓶颈在于数据文件分析,数据的提取以及数据库的查询操作,而不在于数据的插入操作,我们知道mysql load100万条数据也就只要几十秒种,如果能使用多台机器并行的数据分析,提取操作,势必能减少总时间。但需要注意的是,数据的查询和少量的更新仍需要想办法减少或去除,在并行的处理过程中,这些操作不仅会导致程序执行变慢还会产生数据一致性问题。

      为保证程序执行过程中一些全局变量的一致,考虑用membase存放这些变量,为了方便调试和保留生产环境中产生的log,考虑用logy或redis来收集log,具体哪个还没想好,logy与python logging结合的很好,代码简单,比较好查看,但调试时比较不容易使用,因为需要用到浏览器, redis很稳定,消息不容易丢失(毕竟写的人牛啊),但不太好查看,python redis client也没研究过,不知道好不好用,但用redis调试起来应该会比较方便,写个shell脚本就可以了。

       目前想法是每个hadoop task处理一个用户或一个ip的数据,但每个task要不要去连mysql还没考虑好,毕竟每个task都连mysql的话load操作就变成了insert操作,如果不连,就只能通过hive最后一起导入mysql,又增加了系统的复杂度。

       还有一个现在没考虑好的问题是hadoop key value的取值问题,感觉这个跟数据分析部门的工作相关性非常大,如果作的好,兄弟部门的人就直接可以使用hive来作数据分析了,mysql只用来为报表系统提供数据就可以了。

Hadoop从业者为什么需要Spark?答案是Hadoop已死,Spark称霸。 而Hadoop的死亡过程在2012年已经开始: 1,由于Hadoop自身架构的导致了在离线数据存储分析意外的一切领域都力不从心,理论已经证明MapReduce模型可以模拟一切分布式计算,但是效率成为其死穴,而Spark基于RDD的计算图可以轻松、完整地表达MapReduce模型,并且能极为容易的处理实时流计算、机器学习、图计算、误差查询等; 2,2012年以来Hadoop本身架构臃肿并未得到本质性的改善,很多修改升级也就只是补丁式的修修补补,现在Hadoop这个云计算大数据前期做出卓越贡献的平台正在继续的死亡; 4,原先支持Hadoop的四大商业机构纷纷宣布支持Spark; 5,Mahout前一阶段表示从现在起他们将不再接受任何形式的以MapReduce形式实现的算法,另外一方面,Mahout宣布新的算法基于Spark; 6,Cloudera的机器学习框架Oryx的执行引擎也将由Hadoop的MapReduce替换成Spark; Spark是继Hadoop之后,成为替代Hadoop的下一代云计算大数据核心技术,目前SPARK已经构建了自己的整个大数据处理生态系统,如流处理、图技术、机器学习、NoSQL查询等方面都有自己的技术,并且是Apache顶级Project,可以预计的是2014年下半年到2015年在社区和商业应用上会有爆发式的增长。 国外一些大型互联网公司已经部署了Spark。甚至连Hadoop的早期主要贡献者Yahoo现在也在多个项目中部署使用Spark;国内的淘宝、优酷土豆、网易、Baidu、腾讯等已经使用Spark技术用于自己的商业生产系统中,国内外的应用开始越来越广泛。Spark正在逐渐走向成熟,并在这个领域扮演更加重要的角色。 现在很多原来使用深度使用Hadoop的公司都在纷纷转向Spark,国内的淘宝是典型的案例,我们在这里就不做介绍。在此,我们以使用世界上使用Hadoop最典型的公司Yahoo!为例,大家可以看一下其数据处理的架构图: 而使用Spark后的架构如下: 大家可以看出,现阶段的Yahoo!是使用Hadoop和Spark并存的架构,而随着时间的推进和Spark本身流处理、图技术、机器学习、NoSQL查询的出色特性,最终Yahoo!可能会完成Spark全面取代Hadoop,而这也代表了所有做云计算大数据公司的趋势。 最后,不得不提的是Spark的“One stack to rule them all”的特性,Spark的特点之一就是用一个技术堆栈解决云计算大数据中流处理、图技术、机器学习、交互式查询、误差查询等所有的问题,此时我们只需要一个技术团队通过Spark就可以搞定一切问题,而如果基于Hadoop就需要分别构建实时流处理团队、数据统计分析团队、数据挖掘团队等,而且这些团队之间无论是代码还是经验都不可相互借鉴,会形成巨大的成本,而使用Spark就不存在这个问题; 再说一点,Hadoop现在人才已经非常多了,想在该技术领域做到中国前100人之内是非常有难度的,而如果从事Spark则会更容易些,因为现在Spark人才不是稀少,而是太稀缺。 Hadoop从业者们,您需要Spark。
### 回答1: 在使用 Hadoop 的过程中,JDK 是必需的。这是因为 Hadoop 是用 Java 语言开发的,所以你需要安装 JDK 来编译和运行 Hadoop 程序。 另外,Hadoop 的其他组件(如 Hive、Pig 等)也是用 Java 开发的,所以也需要 JDK 来运行这些组件。 ### 回答2: 学习Hadoop要安装JDK,是因为Hadoop是一个基于Java开发的软件框架。JDK(Java Development Kit)是Java开发工具包的缩写,它包含了编译、调试和运行Java程序所需要的各种工具和资源。 首先,Hadoop的核心部分是由Java编写的,它在分布式计算环境中进行数据处理和存储。如果没有安装JDK,就无法运行Hadoop的Java代码。而且,JDK提供了Java编译器(javac)和Java虚拟机(JVM)等工具,这些工具是进行Java程序开发和运行的基础。 其次,Hadoop集群中的各个节点之间需要进行通信和协调。Hadoop使用Java的RMI(远程方法调用)来实现节点之间的通信,RMI依赖于JDK的Java远程调用机制。如果没有安装JDK,就无法使用RMI,节点之间的通信就无法实现。 此外,Hadoop还依赖于许多其他的Java库和工具,比如Apache ZooKeeper、Apache Avro和Apache Thrift等。这些库和工具同样需要通过JDK进行编译和运行。 总的来说,学习Hadoop需要安装JDK是因为Hadoop本身是基于Java开发的,它依赖于JDK提供的工具和资源进行编译、运行和通信。只有安装了JDK,才能正常地使用和学习Hadoop。 ### 回答3: 学习Hadoop要安装JDK是因为Hadoop是一个使用Java编写的开源框架。JDK(Java Development Kit)是Java开发环境的软件包,包含了一些必要的工具和库,用于开发和运行Java应用程序。 首先,Hadoop是基于Java编写的,这意味着在学习Hadoop时,需要使用Java语言来编写和理解Hadoop的相关代码。而JDK提供了Java编译器和运行时环境,可以将Java代码编译成可执行的字节码,并在Java虚拟机上运行。 其次,Hadoop利用了JDK中的一些核心类和库,例如Java的I/O类、并发库、网络库等,来实现其分布式计算的功能。通过安装JDK,可以让Hadoop能够正常运行,并使用JDK中提供的工具和类。 此外,安装JDK还可以享受到JDK所提供的其他优势,如跨平台性和丰富的开发工具。JDK支持在不同的操作系统上运行Java代码,可以在Windows、Linux、macOS等各种平台上进行Hadoop的学习和开发。而且,JDK还提供了许多强大的开发工具,如Java编译器(javac)、调试器(jdb)和性能分析工具(jprofiler),这些工具可以帮助开发人员更好地分析和调试Hadoop代码。 总而言之,学习Hadoop要安装JDK是因为Hadoop使用Java编写,需要使用Java语言来开发和执行Hadoop代码,而JDK提供了Java编译器和运行时环境,以及其他有用的开发工具,这样可以让学习和开发Hadoop的过程更加顺利和高效。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值