Ubuntu系统 (我用到版本号是140.4)
ubuntu系统是一个以桌面应用为主的Linux操作系统,Ubuntu基于Debian发行版和GNOME桌面环境。Ubuntu的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由*软件构建而成的操作系统,它可免费使用,并带有社团及专业的支持应。
作为Hadoop大数据开发测试环境, 建议大家不要在windows上安装CgyWin来学习或研究, 直接用Vmware+ubuntu来学习。
下载 www.vmware.com这里下载vmware, www.ubuntu.com这里下载ubuntu。
Hadoop介绍(我用到版本号是1.2.1)
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
MapReduce编程思想
MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",和它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。
Hadoop能做什么?
很多人或许没接触过大量数据的开发,例如一个网站日访问量达几千万以上, 网站服务器会产生大量的各种日志, 某天上班老板问我想要统计一下什么区域的人访问网站最多, 具体数据大概是多少? 我曾经在一个Hadoop群里提问过, 很多人说我写个程序就能实现, 有人说我自己写一个分布式的系统来专门计算。 能自己写一个出来当然能证明你的能力, 但某一天老板又问我想知道什么年龄段的人访问最多, 难道又写一个分布式的系统来计算? 这是浪费人力物力的事情。 而且就算写得很完美, 也没经过市场用户的考查, 存在不确定性。 hadoop就完全可以帮你实现各方面的问题, 自己只需要编写一些特定的java业务流程代码就可以, 稳定又可以不断的随着业务与数据的增大而扩大。hadoop常用在数据统计方面, 例如在几十G文件中统计某一个单词出现几次, 在无数个数字当中查找最大的值,通过你的程序收集的日志统计出各方营销的数据,帮助你实现市场定位与推广方向。