在HDInsight中从Hadoop的兼容BLOB存储查询大数据的分析

低成本的Blob存储是一个强大的。通用的Hadoop兼容Azure存储解决方式无缝集成HDInsight。通过Hadoop分布式文件系统(HDFS)接口,完整的组件集合在HDInsight能够

在Blob存储数据的直接操作。在本教程中,学习怎样建立一个容器的Blob存储,然后在里面处理的数据。

在BLOB存储中存储的数据能够用于计算的HDInsight集群被安全地删除,而不会丢失用户数据。

注意:

该ASV://语法中不支持HDInsight群集3.0版。不会在以后的版本号支持。这意味着,提交到HDInsight群集版本号3.0明白使用不论什么作业“ASV://”语法将失败。应该使用wasb:

//语法。此外。作业提交了与现有metastore包含使用ASV明白提及资源创建的不论什么HDInsight群集版本号3.0://语法将失败。这些metastores将须要使用wasb又一次创建://处

理资源。

[WACOM.NOTE] HDInsight眼下仅仅支持块的blob。

[WACOM.NOTE]最HDFS命令,如ls,copyFromLocal,MKDIR。等等,仍然正常工作。

仅仅特定于本机的HDFS执行(其被称为DFS)的命令,如fschk和dfsadmin将显示在Azure的Blob存储不同的行为。

有关供应的HDInsight群集的信息,请參阅開始使用HDInsight提供HDInsight集群

在这篇文章中文件夹:

•HDInsight存储架构
•对AzureBlob存储优势
•准备一个容器BLOB存储
•在BLOB存储地址的文件
•使用PowerShell訪问BLOB
•下一步

HDInsight存储架构

下图提供了HDInsight存储架构的抽象视图:

HDInsight提供訪问本地连接到计算节点上的分布式文件系统。该文件系统能够使用全然限定的URI来訪问。

比如:

  1. HDFS//<namenodehost>/<路径>

此外,HDInsight提供訪问存储在斑点存储数据的能力。

语法訪问的Blob存储是:

  1. wasb[S]://<容器名称>@<帐户>.blob.core.windows.net/<路径>

Hadoop的支持默认文件系统的概念。默认的文件系统意味着一个默认的计划性和权威性;它也能够被用于解决相对路径。在HDInsight提供过程中。Azure存储账户,并从该

帐户特定的Blob存储容器被指定为默认的文件系统。

除了这个存储账号,您能够在提供过程中加入的是同一个Azure订阅或不同的Azure订阅额外的存储帐户。有关加入额外的存储帐户的说明,请參阅提供HDInsight集群。
在连接到集群存储帐户的容器:因为帐户名和密钥存储在核心site.xml中,你能够全然訪问这些容器的blob。
在未连接到集群存储帐户公众容器或公共blob:你有仅仅读权限在容器中的blob。

注意:

>公共容器。您能够得到在该容器中全部可用的blob的列表,并获得容器的元数据。公共BLOB让你仅仅有当你知道确切的URL訪问的blob。欲了解很多其它信息,请參阅限制对容器

和的blob。

•私人容器未连接到集群存储账户:除非你当你提交WebHCat作业定义存储帐户,您不能訪问在容器中的的blob。

还有就是在文章后面解释。

在提供过程定义的存储帐户及其密钥存储在%HADOOP_HOME%/ conf文件夹/芯-site.xml中。 HDInsight的默认行为是使用中的核心site.xml文件里定义的存储帐户。

这是不

建议编辑的芯 -  site.xml文件。因为群集headnode(主)能够又一次映像或迁移在不论什么时间,不论什么更改这些文件都将丢失。

多WebHCat工作,包含蜂巢。MapReduce的,Hadoop的流媒体和猪,能够随身携带的存储账户,并与他们的元数据描写叙述(它眼下的猪能够与存储帐户。但没有元数据)。在使

用本文中的PowerShell部分訪问BLOB ,有这样的特征的一个演示例子。欲了解很多其它信息。请參阅使用HDInsight群集具有备用存储帐户和Metastores。

BLOB存储容器存储数据的键/值对,而且没有文件夹层次结构。

然而在“/”字符能够键名称中使用。使其看起来好像一个文件存储在文件夹结构中。

比如,一个blob的键能够是输

入/ log1.txt。没有实际的输入文件夹中存在,但因为“/”字符的键名的存在,它有一个文件路径的外观。

对Azure的BLOB存储的优点

不具有隐含的性能成本计算和存储共同定位的是由计算集群中被紧密配置到Azure中的数据中心,当中所述高速网络使得它很有效的訪问的计算节点内存储帐户资源的方

式减轻里面的Blob存储中的数据。

有与存储在存储的Blob取代HDFS中的数据相关联的几个优点:

•数据重用和共享:在HDFS的数据所在的计算机集群中。

仅能够訪问计算群集的应用程序能够使用HDFS的API使用的数据。

在BLOB存储的数据能够通过HDFS API或通过Blob存

储的REST API来訪问。因此,一组应用程序(包含其它HDInsight簇)和工具较大能够用来产生和消耗的数据。
•数据归档:在Blob存储中存储的数据能够用于计算的HDInsight集群被安全地删除。而不会丢失用户数据。
•数据存储成本:存储在DFS的数据为长期比存储在Blob存储数据更昂贵。因为计算集群的成本比一个BLOB存储容器的成本较高。另外,因为该数据不必又一次载入为每个计

算集群的产生,要保存的数据载入成本。
•弹性向外扩展:在HDFS提供了一个向外扩展的文件系统。规模是由节点的数量来确定,你准备为你的集群。更改比例能够成为一个更复杂的过程不是依赖于你自己主动获得

BLOB存储的弹性扩展能力。
•地理复制:您的Blob存储容器。能够通过在Azure门户地缘复制。尽管这给你的地理恢复和数据冗余。故障切换到地理复制的位置会严重影响你的表现,并可能产生额外的

费用。因此,我们的建议是选择地域复制明智且仅当数据的价值是值得的额外费用。

某些MapReduce工作和包可能产生的中间结果,你真的不希望存储在BLOB存储容器。在这样的情况下,你仍然能够选择将数据存储在本地HDFS。

其实,HDInsight使用DFS几

这些中间结果Hive工作等过程。

准备一个容器BLOB存储

要使用的blob,首先要创建一个Azure存储账户。作为当中的一部分,您指定Azure中数据中心,将存储创建使用此帐户的对象。

集群和存储帐户必须驻留在同一个数据中心

(Hivemetastore SQL数据库和Oozie的metastore SQL数据库也必须位于同一个数据中心)。不管是生活,你创建的每个斑点是属于一些容器中的存储帐户。

这样的容器能够

是HDInsight之外创建的现有一滴储存容器中。或它能够是一个HDInsight群集所创建的容器。

创建使用管理门户的Blob容器HDInsight

当供应来自Azure管理门户的HDInsight群集时,有两种选择:高速创建和自己定义创建。高速创建选项须要预先创建的Azure存储账户。有关说明,请參阅怎样创建一个存储

帐户。

使用高速创建选项,你能够选择一个现有的存储帐户。提供过程将创建一个新的容器具有同样名称的HDInsight群集名称。假设具有同样名称的容器已经存在, - 将被使用

比如,myHDIcluster-1。此容器被用作默认文件系统。


使用自己定义创建,你的默认存储帐户下列选项之中的一个:
•利用现有的存储
•创建新的存储
•从还有一个订阅使用存储。

您还能够创建自己的的Blob容器或使用现有的选项。


创建使用Azure中PowerShell的一个容器。

Azure中的PowerShell能够用来创建的Blob容器。

以下是一个演示例子PowerShell脚本:

  1. $subscriptionName = "<SubscriptionName>" # Azure subscription name
  2. $storageAccountName = "<AzureStorageAccountName>" # The storage account that you will create
  3. $containerName="<BlobContainerToBeCreated>" # The Blob container name that you will create
  4.  
  5. # Connect to your Azure account and selec the current subscription
  6. Add-AzureAccount # The connection will expire in a few hours.
  7. Select-AzureSubscription $subscriptionName #only required if you have multiple subscriptions
  8.  
  9. # Create a storage context object
  10. $storageAccountkey = get-azurestoragekey $storageAccountName | %{$_.Primary}
  11. $destContext = New-AzureStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageAccountKey
  12.  
  13. # Create a Blob storage container
  14. New-AzureStorageContainer -Name $containerName -Context $destContext

在BLOB存储的文件地址

对于BLOB存储訪问文件的URI方案是:

  1. wasb[S]://<BlobStorageContainerName>@ <StorageAccountName>.blob.core.windows.net/<路径>

注意:

语法寻址存储模拟器(上HDInsight模拟器中执行)的文件是wasb://<容器名称>@storageemulator。

URI方案提供了未加密的訪问与wasb:前缀,并用SSL加密wasbs訪问。

我们建议使用wasbs尽可能訪问数据。生活在同一Azure中数据中心内部,即使。

在<BlobStorageContainerName>标识的Blob存储容器的名称。在<StorageAccountName>标识Azure存储帐户名称。一个全然合格的域名称(FQDN)是必需的。

假设没有<BlobStorageContainerName>和<StorageAccountName>已指定,则默认的文件系统使用。

对于默认的文件系统上的文件,你能够使用相对路径或绝对路径。

比如,

附带HDInsight集群Hadoop的MapReduce的examples.jar文件能够被称为使用下列操作之中的一个:

  1. wasb://mycontainer@myaccount.blob.core.windows.net/example/jars/hadoop-mapreduce-examples.jar
  2. wasb:///example/jars/hadoop-mapreduce-examples.jar
  3. /example/jars/hadoop-mapreduce-examples.jar

注意

文件名称是在HDInsight群集版本号1.6和2.1 Hadoop的examples.jar。

在<path>是文件或文件夹的HDFS路径名。

因为BLOB存储容器仅仅是一个key-value存储,没有真正的分级文件系统。 A“/”里面的一个blob键被解释为一个文件夹分隔符。

比如,为

的hadoop-mapreduce的-examples.jar团块名称是:
比如:jars/hadoop-mapreduce-examples.jar

使用Azure中的PowerShell訪问BLOB

请參阅安装并在安装和工作站上配置Azure中 PowerShell中配置Azure中 PowerShell的信息。您能够使用Azure中PowerShell控制台窗体或PowerShell_ISE执行的

PowerShell cmdlets。

使用以下命令列出的blob相关的cmdlet:

  1. Get-Command *blob*

PowerShell的例子上传文件

上传数据到HDInsight。

PowerShell的样品下载文件
以下以脚本下载一个块BLOB到当前文件夹。

在执行脚本之前,将文件夹更改到您具有写入权限的文件夹。

  1. $storageAccountName = "<AzureStorageAccountName>" # The storage account used for the default file system specified at provision.
  2. $containerName = "<BlobStorageContainerName>" # The default file system container has the same name as the cluster.
  3. $blob = "example/data/sample.log" # The name of the blob to be downloaded.
  4.  
  5. # Use Add-AzureAccount if you haven't connected to your Azure subscription
  6. #Add-AzureAccount # The connection is good for 12 hours
  7.  
  8. # Use these two commands if you have multiple subscriptions
  9. #$subscriptionName = "<SubscriptionName>"
  10. #Select-AzureSubscription $subscriptionName
  11.  
  12. Write-Host "Create a context object ... " -ForegroundColor Green
  13. $storageAccountKey = Get-AzureStorageKey $storageAccountName | %{ $_.Primary }
  14. $storageContext = New-AzureStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageAccountKey
  15.  
  16. Write-Host "Download the blob ..." -ForegroundColor Green
  17. Get-AzureStorageBlobContent -Container $ContainerName -Blob $blob -Context $storageContext -Force
  18.  
  19. Write-Host "List the downloaded file ..." -ForegroundColor Green
  20. cat "./$blob"

PowerShell的例子。用于删除一个文件
以下的脚本说明怎样删除一个文件。 $ storageAccountName=“”#用于在提供指定的默认文件系统的存储帐户。

$容器名称=“”#默认的文件系统容器具有同样的名称作为

集群。 $ BLOB=“为例/数据/ sample.log”#BLOB的名字被下载。

  1. # Use Add-AzureAccount if you haven't connected to your Azure subscription
  2. #Add-AzureAccount # The connection is good for 12 hours
  3.  
  4. # Use these two commands if you have multiple subscriptions
  5. #$subscriptionName = "<SubscriptionName>"
  6. #Select-AzureSubscription $subscriptionName
  7.  
  8. Write-Host "Create a context object ... " -ForegroundColor Green
  9. $storageAccountKey = Get-AzureStorageKey $storageAccountName | %{ $_.Primary }
  10. $storageContext = New-AzureStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageAccountKey
  11.  
  12. Write-Host "Delete the blob ..." -ForegroundColor Green
  13. Remove-AzureStorageBlob -Container $containerName -Context $storageContext -blob $blob

PowerShell的例子文件夹中的文件列表
以下的脚本显示了怎样在一个“文件夹”列表中的文件。

接下来的演示例子显示了怎样使用Invoke-Hivecmdlet来执行DFS ls命令列出文件夹。

  1. $storageAccountName = "<AzureStorageAccountName>" # The storage account used for the default file system specified at provision.
  2. $containerName = "<BlobStorageContainerName>" # The default file system container has the same name as the cluster.
  3. $blobPrefix = "example/data/"
  4.  
  5. # Use Add-AzureAccount if you haven't connected to your Azure subscription
  6. #Add-AzureAccount # The connection is good for 12 hours
  7.  
  8. # Use these two commands if you have multiple subscriptions
  9. #$subscriptionName = "<SubscriptionName>"
  10. #Select-AzureSubscription $subscriptionName
  11.  
  12. Write-Host "Create a context object ... " -ForegroundColor Green
  13. $storageAccountKey = Get-AzureStorageKey $storageAccountName | %{ $_.Primary }
  14. $storageContext = New-AzureStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageAccountKey
  15.  
  16. Write-Host "List the files in $blobPrefix ..."
  17. Get-AzureStorageBlob -Container $containerName -Context $storageContext -prefix $blobPrefix

PowerShell的例子用于訪问没有定义的存储帐户
此演示例子显示了怎样列出从没有在规定的过程定义的存储帐户的文件夹。 $ CLUSTERNAME=“”

  1. $undefinedStorageAccount = "<UnboundedStorageAccountUnderTheSameSubscription>"
  2. $undefinedContainer = "<UnboundedBlobContainerAssociatedWithTheStorageAccount>"
  3.  
  4. $undefinedStorageKey = Get-AzureStorageKey $undefinedStorageAccount | %{ $_.Primary }
  5.  
  6. Use-AzureHDInsightCluster $clusterName
  7.  
  8. $defines = @{}
  9. $defines.Add("fs.azure.account.key.$undefinedStorageAccount.blob.core.windows.net", $undefinedStorageKey)
  10.  
  11. Invoke-Hive -Defines $defines -Query "dfs -ls wasb://$undefinedContainer@$undefinedStorageAccount.blob.core.windows.net/;"

接下来的步骤

在本文中。您了解了怎样使用与HDInsight的Blob存储和BLOB存储是HDInsight的一个基本组成部分。这使您能够构建可扩展的。长期归档的数据採集解决方式,Azure中

Blob存储和使用HDInsight解锁存储的数据内的信息。

要了解很多其它信息,请參阅以下文章:
開始使用Azure中HDInsight入门
上传数据到HDInsight
使用Hive与HDInsight
使用Pig用HDInsight

本文翻译自Microsoft Azure官网:http://azure.microsoft.com/en-us/documentation/articles/hdinsight-use-blob-storage/

在HDInsight中从Hadoop的兼容BLOB存储查询大数据的分析的更多相关文章

  1. 在HDInsight中的Hadoop介绍

    在HDInsight中的Hadoop介绍 概览 Azure的HDInsight是,部署和规定的Apache™Hadoop®集群在云中,提供用于管理,分析和大数据报告软件框架中的服务. 大数据 数据被描 ...

  2. Hadoop专业解决方案-第1章 大数据和Hadoop生态圈

    一.前言: 非常感谢Hadoop专业解决方案群:313702010,兄弟们的大力支持,在此说一声辛苦了,经过两周的努力,已经有啦初步的成果,目前第1章 大数据和Hadoop生态圈小组已经翻译完成,在此 ...

  3. Hadoop学习总结(1)——大数据以及Hadoop相关概念介绍

    一.大数据的基本概念 1.1.什么是大数据 大数据指的就是要处理的数据是TB级别以上的数据.大数据是以TB级别起步的.在计算机当中,存放到硬盘上面的文件都会占用一定的存储空间,例如: 文件占用的存储空 ...

  4. 环境搭建 Hadoop+Hive(orcfile格式)+Presto实现大数据存储查询一

    一.前言 Hadoop简介 Hadoop就是一个实现了Google云计算系统的开源系统,包括并行计算模型Map/Reduce,分布式文件系统HDFS,以及分布式数据库Hbase,同时Hadoop的相关 ...

  5. 第二篇:智能电网(Smart Grid)中的数据工程与大数据案例分析

    前言 上篇文章中讲到,在智能电网的控制与管理侧中,数据的分析和挖掘.可视化等工作属于核心环节.除此之外,二次侧中需要对数据进行采集,数据共享平台的搭建显然也涉及到数据的管理.那么在智能电网领域中,数据 ...

  6. hadoop(一)之初识大数据与Hadoop

    前言 从今天起,我将一步一步的分享大数据相关的知识,其实很多程序员感觉大数据很难学,其实并不是你想象的这样,只要自己想学,还有什么难得呢? 学习Hadoop有一个8020原则,80%都是在不断的配置配 ...

  7. 量化派基于Hadoop、Spark、Storm的大数据风控架构--转

    原文地址:http://www.csdn.net/article/2015-10-06/2825849 量化派是一家金融大数据公司,为金融机构提供数据服务和技术支持,也通过旗下产品“信用钱包”帮助个人 ...

  8. innodb中一颗B+树能存储多少条数据

    如图,为B+树组织数据的方式: 实际存储时当然不会每个节点只存3条数据. 以InnoDB引擎为例,简单计算一下一颗B+树可以存放多少行数据. B+树特点:只有叶子节点存储数据,而非叶子节点存放的是用来 ...

  9. 把项目中的那些恶心的无处存储的大块数据都丢到FastDFS之快速搭建

        在我们开发项目的时候,经常会遇到大块数据的问题(2M-100M),比如说保存报表中1w个人的ID号,他就像一个肿瘤一样,存储在服务器哪里都 觉得恶心,放在redis,mongodb中吧,一下子 ...

随机推荐

  1. CAD参数绘制填充(com接口)

    填充是CAD图纸中不可或缺的对象,在机械设计行业,常常需要将零部件剖开,以表现其内部的细节,而这些被剖开的截面会用填充来表示:在工程设计行业,一些特殊的材料或地形,也会用填充来表示. C#中实现代码说 ...

  2. 【计算机网络】2.6 P2P应用

    第二章第六节 P2P应用 在本节内容开始前,我们要先来对P2P架构有一个宏观的认知: P2P:(Peer to Peer 对等结构)   以对等方式进行通信,并不区分客户端和服务端,而是平等关系进行通 ...

  3. redis中基本命令

    记录一下redis中的基本命令.redis中有redis-cli工具客户端,使用这个客户端来发送一些命令 一.redis-cli的使用  1.redis-cli使用之发送命令 2.redis-cli使 ...

  4. extjs中Store和grid的刷新问题

    问题1:Store.load() 和Store.setproxy()区别 问题2:修改后的Grid 更新: Store.reload() 问题3,store删除后刷新会出问题 Store移除一行:St ...

  5. qrcode.js扫码邀请

    //js引用部分<script src="../qrcode.js" type="text/javascript"></script> ...

  6. Chrome插件:微信公众号自动登录(chrome.extension)

    manifest.json: { "manifest_version": 2, "name": "WX.AutoLogin", " ...

  7. js 右键菜单

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  8. 记一次被面试的final问题

    ---- 前言 今天面试被问到了,我们都知道final修饰的东西是不可变的,那么是值不可变还是其地址不可变?一脸懵逼,回来查阅一番,总结一下 --- final与数据 在日常行为下,一般数据指的都是基 ...

  9. html css笔记 -度一

    """浏览器 shell 内核外表 内心 IE tridentFirefox Geckogoogle chrome webkit/blinksafari webkitop ...

  10. PAT 1059. C语言竞赛

    PAT 1059. C语言竞赛 C语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛.既然竞赛主旨是为了好玩,颁奖规则也就制定得很滑稽: 冠军将赢得一份"神秘大奖"(比如很巨大的一本 ...