在HDInsight中从Hadoop的兼容BLOB存储查询大数据的分析
在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来訪问。
比如:
HDFS://<namenodehost>/<路径>
此外,HDInsight提供訪问存储在斑点存储数据的能力。
语法訪问的Blob存储是:
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脚本:
$subscriptionName = "<SubscriptionName>" # Azure subscription name
$storageAccountName = "<AzureStorageAccountName>" # The storage account that you will create
$containerName="<BlobContainerToBeCreated>" # The Blob container name that you will create # Connect to your Azure account and selec the current subscription
Add-AzureAccount # The connection will expire in a few hours.
Select-AzureSubscription $subscriptionName #only required if you have multiple subscriptions # Create a storage context object
$storageAccountkey = get-azurestoragekey $storageAccountName | %{$_.Primary}
$destContext = New-AzureStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageAccountKey # Create a Blob storage container
New-AzureStorageContainer -Name $containerName -Context $destContext
在BLOB存储的文件地址
对于BLOB存储訪问文件的URI方案是:
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文件能够被称为使用下列操作之中的一个:
wasb://mycontainer@myaccount.blob.core.windows.net/example/jars/hadoop-mapreduce-examples.jar
wasb:///example/jars/hadoop-mapreduce-examples.jar
/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:
Get-Command *blob*
PowerShell的例子上传文件
PowerShell的样品下载文件
以下以脚本下载一个块BLOB到当前文件夹。
在执行脚本之前,将文件夹更改到您具有写入权限的文件夹。
$storageAccountName = "<AzureStorageAccountName>" # The storage account used for the default file system specified at provision.
$containerName = "<BlobStorageContainerName>" # The default file system container has the same name as the cluster.
$blob = "example/data/sample.log" # The name of the blob to be downloaded. # Use Add-AzureAccount if you haven't connected to your Azure subscription
#Add-AzureAccount # The connection is good for 12 hours # Use these two commands if you have multiple subscriptions
#$subscriptionName = "<SubscriptionName>"
#Select-AzureSubscription $subscriptionName Write-Host "Create a context object ... " -ForegroundColor Green
$storageAccountKey = Get-AzureStorageKey $storageAccountName | %{ $_.Primary }
$storageContext = New-AzureStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageAccountKey Write-Host "Download the blob ..." -ForegroundColor Green
Get-AzureStorageBlobContent -Container $ContainerName -Blob $blob -Context $storageContext -Force Write-Host "List the downloaded file ..." -ForegroundColor Green
cat "./$blob"
PowerShell的例子。用于删除一个文件
以下的脚本说明怎样删除一个文件。 $ storageAccountName=“”#用于在提供指定的默认文件系统的存储帐户。
$容器名称=“”#默认的文件系统容器具有同样的名称作为
集群。 $ BLOB=“为例/数据/ sample.log”#BLOB的名字被下载。
# Use Add-AzureAccount if you haven't connected to your Azure subscription
#Add-AzureAccount # The connection is good for 12 hours # Use these two commands if you have multiple subscriptions
#$subscriptionName = "<SubscriptionName>"
#Select-AzureSubscription $subscriptionName Write-Host "Create a context object ... " -ForegroundColor Green
$storageAccountKey = Get-AzureStorageKey $storageAccountName | %{ $_.Primary }
$storageContext = New-AzureStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageAccountKey Write-Host "Delete the blob ..." -ForegroundColor Green
Remove-AzureStorageBlob -Container $containerName -Context $storageContext -blob $blob
PowerShell的例子文件夹中的文件列表
以下的脚本显示了怎样在一个“文件夹”列表中的文件。
接下来的演示例子显示了怎样使用Invoke-Hivecmdlet来执行DFS ls命令列出文件夹。
$storageAccountName = "<AzureStorageAccountName>" # The storage account used for the default file system specified at provision.
$containerName = "<BlobStorageContainerName>" # The default file system container has the same name as the cluster.
$blobPrefix = "example/data/" # Use Add-AzureAccount if you haven't connected to your Azure subscription
#Add-AzureAccount # The connection is good for 12 hours # Use these two commands if you have multiple subscriptions
#$subscriptionName = "<SubscriptionName>"
#Select-AzureSubscription $subscriptionName Write-Host "Create a context object ... " -ForegroundColor Green
$storageAccountKey = Get-AzureStorageKey $storageAccountName | %{ $_.Primary }
$storageContext = New-AzureStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageAccountKey Write-Host "List the files in $blobPrefix ..."
Get-AzureStorageBlob -Container $containerName -Context $storageContext -prefix $blobPrefix
PowerShell的例子用于訪问没有定义的存储帐户
此演示例子显示了怎样列出从没有在规定的过程定义的存储帐户的文件夹。 $ CLUSTERNAME=“”
$undefinedStorageAccount = "<UnboundedStorageAccountUnderTheSameSubscription>"
$undefinedContainer = "<UnboundedBlobContainerAssociatedWithTheStorageAccount>" $undefinedStorageKey = Get-AzureStorageKey $undefinedStorageAccount | %{ $_.Primary } Use-AzureHDInsightCluster $clusterName $defines = @{}
$defines.Add("fs.azure.account.key.$undefinedStorageAccount.blob.core.windows.net", $undefinedStorageKey) 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存储查询大数据的分析的更多相关文章
- 在HDInsight中的Hadoop介绍
在HDInsight中的Hadoop介绍 概览 Azure的HDInsight是,部署和规定的Apache™Hadoop®集群在云中,提供用于管理,分析和大数据报告软件框架中的服务. 大数据 数据被描 ...
- Hadoop专业解决方案-第1章 大数据和Hadoop生态圈
一.前言: 非常感谢Hadoop专业解决方案群:313702010,兄弟们的大力支持,在此说一声辛苦了,经过两周的努力,已经有啦初步的成果,目前第1章 大数据和Hadoop生态圈小组已经翻译完成,在此 ...
- Hadoop学习总结(1)——大数据以及Hadoop相关概念介绍
一.大数据的基本概念 1.1.什么是大数据 大数据指的就是要处理的数据是TB级别以上的数据.大数据是以TB级别起步的.在计算机当中,存放到硬盘上面的文件都会占用一定的存储空间,例如: 文件占用的存储空 ...
- 环境搭建 Hadoop+Hive(orcfile格式)+Presto实现大数据存储查询一
一.前言 Hadoop简介 Hadoop就是一个实现了Google云计算系统的开源系统,包括并行计算模型Map/Reduce,分布式文件系统HDFS,以及分布式数据库Hbase,同时Hadoop的相关 ...
- 第二篇:智能电网(Smart Grid)中的数据工程与大数据案例分析
前言 上篇文章中讲到,在智能电网的控制与管理侧中,数据的分析和挖掘.可视化等工作属于核心环节.除此之外,二次侧中需要对数据进行采集,数据共享平台的搭建显然也涉及到数据的管理.那么在智能电网领域中,数据 ...
- hadoop(一)之初识大数据与Hadoop
前言 从今天起,我将一步一步的分享大数据相关的知识,其实很多程序员感觉大数据很难学,其实并不是你想象的这样,只要自己想学,还有什么难得呢? 学习Hadoop有一个8020原则,80%都是在不断的配置配 ...
- 量化派基于Hadoop、Spark、Storm的大数据风控架构--转
原文地址:http://www.csdn.net/article/2015-10-06/2825849 量化派是一家金融大数据公司,为金融机构提供数据服务和技术支持,也通过旗下产品“信用钱包”帮助个人 ...
- innodb中一颗B+树能存储多少条数据
如图,为B+树组织数据的方式: 实际存储时当然不会每个节点只存3条数据. 以InnoDB引擎为例,简单计算一下一颗B+树可以存放多少行数据. B+树特点:只有叶子节点存储数据,而非叶子节点存放的是用来 ...
- 把项目中的那些恶心的无处存储的大块数据都丢到FastDFS之快速搭建
在我们开发项目的时候,经常会遇到大块数据的问题(2M-100M),比如说保存报表中1w个人的ID号,他就像一个肿瘤一样,存储在服务器哪里都 觉得恶心,放在redis,mongodb中吧,一下子 ...
随机推荐
- Duplicate fragment name ERROR Jetty Maven Plugin
http://stackoverflow.com/questions/5802096/duplicate-fragment-name-error-jetty-maven-plugin 4down vo ...
- 11-2 numpy/pandas/matplotlib模块
目录 numpy模块 一维数组 二维数组 列表list和numpy的区别 获取多维数组的行和列 多维数组的索引 高级功能 多维数组的合并 通过函数方法创建多维数组 矩阵的运算 求最大值最小值 nump ...
- linux下查找字符串的命令
1. set命令可以显示出当前shell下所有全局参量定义及其值; 2. 查找并删除当前目录下小文件: find . -type f -size -10k -exec rm {} \; 说明: w ...
- 简单的学生选课系统——基于Servlet+Ajax
以前挖的坑,早晚要往里掉.基础太薄弱,要恶补.在此程序前,我还对Servlet没有一个清晰的概念:一周时间写好此程序之后,对Servlet的理解清晰许多. 这周一直在恶补Spring,今天正好完成了S ...
- centos6 rpm安装mysql(5.5版本)包括 error : Failed dependencies:libaio的解决办法.
1.先在/opt目录下放了两个rpm包 2.先看系统中是否有其他版本的mysql的rpm包 rpm -qa | grep -i mysql 命令结果如下图: 如果没有此步跳过,否则执行一下命令将其删除 ...
- Java中的日期、时间操作
每次在处理日期时间的时候都要打开chrome查找一番,索性自己找一下满意的记录下来. 一.时间格式 // hh表示12小时制: HH表示24小时制 SimpleDateFormat format1 = ...
- Python的DEBUG LOG
一直在嵌入式行业,熟悉嵌入式的朋友都很了解嵌入式设备上DEBUG的麻烦,特别是一些缺乏断电工具和没有UI界面的设备.久而久之,开发一个新东西,首先就是要先搞定DEBUG手段.最近写了几个测试的pyth ...
- python之字符串处理 2014-4-5
#字符串 p62 13:20pm-15:20 上一章讲的所有的序列化操作对于字符串同样适用 不过字符串不可变 所以无法使用分片赋值 1.字符串格式化 >>> format=" ...
- mvc 下 使用kindeditor 配置信息
先去下载: http://code.google.com/p/kindeditor/downloads/list引用: LitJSON.dll文件<script src="~/kind ...
- mysqldump快速导数据
MySQL导出的SQL语句在导入时有可能会非常非常慢,经历过导入仅45万条记录,竟用了近3个小时.在导出时合理使用几个参数,可以大大加快导入的速度. -e 使用包括几个VALUES列表的多行INSER ...