大数据现在意味着大利润。世界正在不断积累大量的原始数据,如文本,MP3或Jpeg图片文件,可以通过分析这些数据得到利益。Apache Hadoop是处理大数据的开源软件。本文将介绍如何安装Hadoop并使用它。
大数据正在整个科技领域掀起浪潮。每个人都知道数据日益增多。旧技术无法存储和检索庞大的数据集。随着手机,闭路电视(CCTVs)和社交网络的用户快速增长,所积累的数据量呈指数增长。但这些数据有什么用?对此的回答是:像谷歌,亚马逊和eBay这样的公司会记录用户的操作,以便通过分析用户的动态从而针对性地向客户投放广告和产品。根据一些统计数据,纽约证券交易所每天产生大约1 TB的交易数据。Facebook托管约100亿张照片,占用1 PB存储空间。我们要处理的数据是PB级的——是普通文件的1012倍。处理如此多非结构化数据对旧技术来说是困难的。
用数据量的规模(Volume)、数据产生的速度(Velocity)与数据格式的多样化(Variety)
——“3V”——来定义大数据。由于大量非文本数据的出现,数据的存储正以指数级增长。这样庞大的数据量正是大数据的表现(规模)。随着社交媒体用户数量的迅速增加,来自手机,日志文件和照相机产生数据的速度就是第二个V(Velocity)。最后,品种表示不同类型的数据。数据有不同的格式,如文本,MP3,音频,视频,二进制和日志。这些数据是高度非结构化的,难以存储在关系型数据库中。为了解决数据存储和快速检索的问题,数据科学家们加班加点地提出一种名为Hadoop的解决方案。它由Doug Cutting和Mike Cafarella在2005年创建。Cutting(雅虎职员)用他儿子的玩具大象命名了这个解决方案。
那么Hadoop是什么?Apache Hadoop 是用于开发在分布式计算环境中执行数据处理应用程序的框架。旨在从单个服务器提供存储和计算资源的方式扩展到数千台机器。Apache Hadoop的核心部分由存储部分(Hadoop分布式文件系统)及其数据处理部分(MapReduce)组成。Hadoop将文件分割成大块,并将它们分发到群集中的节点上。应该注意的是,Hadoop不是OLAP(在线分析处理),而是面向批处理(离线)的。
大数据面临的挑战是,数据是否应该存储在单台机器上。硬盘大小约为500GB,即使您添加外部硬盘,也不能存储PB级数据。即便你添加足够多的外部硬盘来存储这些数据,由于内存不足,你也不能打开或处理这些文件。处理分析这些数据可能要花费几个月的时间。所以Hadoop分布式文件系统(HDFS)在这里起到了作用。在HDFS中,数据分布在多台机器上,并保留副本(通常保留3份副本),即使在并行应用程序中也这样做,以确保数据的高可用性。
HDFS的优势在于它具有可扩展性,可以在任何时间添加任意数量的子系统。它在商品级的硬件上工作,因此与其他数据库相比更为廉价。HDFS主要为大文件而设计,它遵循一次写入、多次读取的设计原则。在HDFS中,单个文件被分成固定大小的块(通常每块为64MB)并存储在一组节点中(不一定在同一台机器上)。这些文件可能超过单个机器硬盘的大小。单台机器被称为数据节点。
现在,让我们在单台机器上安装和运行程序。条件是:
首先下载虚拟机并将其安装在Windows机器上—— 就像安装任何音乐播放器一样简单。不断点击下一步直到安装完成。安装完成后,解压Cloudera-Udacity-4.1,然后双击VM快速启动器; 点击“打开虚拟机” 并从包含vmx的文件夹中选择提取的镜像文件。安装需要一些时间。请记住将RAM设置为1GB,否则您的机器会很慢。安装成功后,启动虚拟机,您将看到如图2所示的屏幕。
现在,为了与机器交互,应建立SSH连接;,在终端中输入以下命令。首先安装客户端,然后安装服务器。SSH密钥将由此生成,并可与群集中的其他计算机共享从而连接在一起。
1. sudo dpkg -i openssh-client_1%3a5.3p1-3ubuntu7_i386.deb2.sudo dpkg -i openssh-server_1%3a5.3p1-3ubuntu7_i386.deb |
---|
现在,要在UNIX端安装Java,首先下载JDK:
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
以root账户创建目录,从上面下载的tar文件安装JDK,重新启动终端,并如图3那样在文件后追加/ etc / profile。
安装了VM和Java之后,让我们安装Hadoop。下载的tar文件可以使用命令解压缩
sudo tar vxzf hadoop-2.2.0.tar.gz C/usr/local
现在,需要更改一些配置文件才能执行Hadoop。
具体细节如下:
1.在hadoop-env.sh中添加:
export JAVA_HOME = / usr / lib / jvm / jdk / <java 的版本>
2.在core-site.xml中,添加以下内容:
<property> <name>fs.default.name</name>
<value>hdfs://localhost:9000</value></property>
3.在yarn-site.xml中, 添加以下命令:
<property> <name> yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value> </property><property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value></property>
4.在mapred-site.xml中,复制mapred-site.xml.template并将其重命名为mapred-site.xml,然后添加以下内容:
<property> <name>mapreduce.framework.name</name> <value>yarn</value></property>
5.在hdfs-site.xml中,在配置选项卡之间添加以下内容:
<property> <name>dfs.replication</name> <value>1</value></property>
<property> <name>dfs.namenode.name.dir</name>
<value>file:/home/hduser/mydata/hdfs/namenode</value></property>
<property> <name>dfs.datanode.data.dir</name>
<value>file:/home/hduser/mydata/hdfs/datanode</value></property>
6.最后,更新你的.bashrc文件。追加以下行,保存并退出。
#Hadoop variablesexport JAVA_HOME=/usr/lib/jvm/jdk/<你的java版本>export
HADOOP_INSTALL=/usr/local/hadoopexport
PATH=$PATH:$HADOOP_INSTALL/binexport
PATH=$PATH:$HADOOP_INSTALL/sbinexport
HADOOP_MAPRED_HOME=$HADOOP_INSTALLexport
HADOOP_COMMON_HOME=$HADOOP_INSTALLexport
HADOOP_HDFS_HOME=$HADOOP_INSTALLexport
YARN_HOME=$HADOOP_INSTALL
最后,让我们生成name节点和data节点目录,需要在终端中输入命令。
hdfs namenode format
启动Hadoop和Yarn服务,请键入:
start-dfs.sh and start-yarn.sh
现在整个配置完成并且Hadoop已启动并正在运行。我们将在Eclipse中编写Java程序,查找文件中的单词出现的次数并通过Hadoop执行它。这三个Java文件是(图4,5,6):
现在创建JAR并将其移至Ubuntu端。在终端上,使用以下命令执行jar文件:
hadoop jar new.jar WordCount example.txt Word_Count_sum
example.txt是输入文件(它的词数需要统计)。最终的输出将显示Word_count_sum文件夹中,如图7所示。最后,单词计数示例显示一个单词在文件中重复的次数。这只是一个小例子,用于演示在大数据上使用Hadoop的方法。