前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用Hadoop处理大数据

使用Hadoop处理大数据

作者头像
轻吻晴雯
发布2018-05-14 14:52:00
1.1K0
发布2018-05-14 14:52:00
举报
文章被收录于专栏:杂文共赏

大数据现在意味着大利润。世界正在不断积累大量的原始数据,如文本,MP3或Jpeg图片文件,可以通过分析这些数据得到利益。Apache Hadoop是处理大数据的开源软件。本文将介绍如何安装Hadoop并使用它。

大数据正在整个科技领域掀起浪潮。每个人都知道数据日益增多。旧技术无法存储和检索庞大的数据集。随着手机,闭路电视(CCTVs)和社交网络的用户快速增长,所积累的数据量呈指数增长。但这些数据有什么用?对此的回答是:像谷歌,亚马逊和eBay这样的公司会记录用户的操作,以便通过分析用户的动态从而针对性地向客户投放广告和产品。根据一些统计数据,纽约证券交易所每天产生大约1 TB的交易数据。Facebook托管约100亿张照片,占用1 PB存储空间。我们要处理的数据是PB级的——是普通文件的1012倍。处理如此多非结构化数据对旧技术来说是困难的。

图1:节点
图1:节点
图2:Cloudera-VM(虚拟机)
图2:Cloudera-VM(虚拟机)

用数据量的规模(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)并存储在一组节点中(不一定在同一台机器上)。这些文件可能超过单个机器硬盘的大小。单台机器被称为数据节点。

图3:配置文件
图3:配置文件
图4:WordCount示例程序
图4:WordCount示例程序

现在,让我们在单台机器上安装和运行程序。条件是:

首先下载虚拟机​​并将其安装在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

图5:SumReducer(求和例子)
图5:SumReducer(求和例子)

现在,需要更改一些配置文件才能执行Hadoop。

具体细节如下:

1.在hadoop-env.sh中添加:

代码语言:html
复制
export JAVA_HOME = / usr / lib / jvm / jdk / <java 的版本>

2.在core-site.xml中,添加以下内容:

代码语言:html
复制
<property> <name>fs.default.name</name> 
<value>hdfs://localhost:9000</value></property>

3.在yarn-site.xml中, 添加以下命令:

代码语言:html
复制
<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,然后添加以下内容:

代码语言:html
复制
<property> <name>mapreduce.framework.name</name> <value>yarn</value></property>

5.在hdfs-site.xml中,在配置选项卡之间添加以下内容:

代码语言:html
复制
<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文件。追加以下行,保存并退出。

代码语言:html
复制
#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
图6:WordMapper
图6:WordMapper
图7:OutputBrowser
图7:OutputBrowser

最后,让我们生成name节点和data节点目录,需要在终端中输入命令。

代码语言:text
复制
hdfs namenode –format

启动Hadoop和Yarn服务,请键入:

代码语言:text
复制
start-dfs.sh and start-yarn.sh

现在整个配置完成并且Hadoop已启动并正在运行。我们将在Eclipse中编写Java程序,查找文件中的单词出现的次数并通过Hadoop执行它。这三个Java文件是(图4,5,6):

  • WordCount.java
  • SumReducer.java
  • WordMapper.java

现在创建JAR并将其移至Ubuntu端。在终端上,使用以下命令执行jar文件:

代码语言:text
复制
hadoop jar new.jar WordCount example.txt Word_Count_sum

example.txt是输入文件(它的词数需要统计)。最终的输出将显示Word_count_sum文件夹中,如图7所示。最后,单词计数示例显示一个单词在文件中重复的次数。这只是一个小例子,用于演示在大数据上使用Hadoop的方法。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档