Ref: 导出HDInsight数据到MySQL(Azure)

在大数据计算中,经常会有一个场景:在Hadoop分布式存储DFS和关系型数据库(MySQL、Oracle、SQL Server)间导入(导出)数据。由于Azure HDInsight是基于公有云的托管式Hadoop,用户在执行数据转移时,与云上Hadoop相连的关系型数据库往往不是本地的数据库引擎,取而代之的是公有云提供的关系型数据库服务,如SQL Database和MySQL on Azure。针对如何使用HDInsight中的工具Sqoop导入(导出)数据到SQL Database,Azure官方文档给出了参考教程,本文具体实践如何使用Sqoop(HDInsight)导出数据到MySQL on Azure的场景。 关于HDInsight:https://azure.microsoft.com/en-us/documentation/articles/hdinsight-high-availability/,本实践中将会提交任务到HDInsight集群,集群中的Head Node分配任务到Worker Node,Worker Node具体实施数据的读取、处理和转移。   关于MySQL on Azure:http://www.windowsazure.cn/home/features/mysql/ 关于Sqoop: https://sqoop.apache.org/docs/1.4.4/SqoopUserGuide.html 关于HDInsight和Azure Storage:https://azure.microsoft.com/en-us/documentation/articles/hdinsight-hadoop-use-blob-storage/,HDInsight中的数据以冗余的形式存储在Azure Storage中,HDInsight节点可以通过分布式存储路径(WASB)来读写目标数据。同时,用户也可以直接访问Azure Storage对应容器中的HDInsight数据文件。   注:本实践通过Azure PowerShell来实现,主要包括: 创建MySQL数据表,用于接收Sqoop导出的数据。 上传数据样本文件到HDInsight的存储(Azure Storage) 提交数据导出任务(Sqoop Job)到HDInsight集群 跟踪Sqoop任务执行情况并检查输出结果。   第一步:准备MySQL数据表 #MySQL variables = “mysqlservices-sha.chinacloudapp.cn” $MySQLLogin = “login1@jianwmysql”  #注意格式: 登录用户@MySQL服务器名 $MySQLPassword = “password” $MySQLExportedDBName = “testdb01” $tableName = “jtable3”   $confirmation= Read-Host…


Updated: 在Windows Azure平台上运行PHP应用

参考:http://blogs.msdn.com/b/cciccat/archive/2015/08/19/windows-azure-php.aspx   PHP技术在互联网应用中非常流行,被广泛使用在网站应用、报表管理、脚本任务等场景。Windows Azure作为企业级公有云平台,不仅仅能无缝托管传统的微软开发技术(.Net),对于PHP、Java等业内通用的语言和技术也提供了极好的支持。本文就如何在Windows Azure平台上运行PHP应用总结出一些最佳实践和参考步骤。   一、 选择合适的Windows Azure服务来运行PHP应用 Windows Azure提供不同层次的公有云服务,主要包括IaaS(基础设施即服务:以虚拟机、虚拟网络为代表),PaaS(平台即服务:以网站应用、云服务、数据库为代表)和SaaS(软件即服务:以Office 365,Azure活动目录为代表),其中可以用作托管PHP应用的主要有三类服务: –  虚拟机:用户在Azure中创建虚拟机,自行部署PHP环境并发布PHP应用,实践过程和在本地发布PHP服务一致。 –  网站应用(Web App):Azure后端存在大量已实现好PHP环境的服务器,用户只需将PHP应用代码通过Git、FTP等工具上传到目标服务器即可。 –  云服务(Cloud Service):Azure平台根据用户的设置,实时创建和定制化(一个或多个)虚拟机,自动安装用户指定的PHP环境并加载用户的PHP应用代码,实现PHP网站服务或者后台处理应用。 关于这三种方案的不同点和相同点,可以参见:https://azure.microsoft.com/en-us/documentation/articles/choose-web-site-cloud-service-vm/,总结下来,最突出的特点是: 方案类型 适用场景 优点 缺点 虚拟机 支持LAMP(另外两种场景下网站服务器都是IIS/Windows);PHP应用依赖于手动安装的组件或应用。 用户完全控制,和本地实践一样。   手动部署,效率较低。 网站应用 快速部署,用户不需要更改服务器机器环境,较少自定义配置PHP网站服务器(拓展),默认的PHP环境包(如PHP5.4)可以满足应用需求。 即时部署、迁移、更新,用户不关注服务器环境设置和后台维护。 用户不能访问后台服务器。 需要很多配置工作来使用自定义PHP运行环境或者深度修改后台网站服务器。   云服务 用户需要定制化的服务器环境或运行初始化任务。 平衡部署效率和服务器定制化;支持访问后台服务器;支持同时托管多个网站或应用。 部署效率不及网站应用,服务器可定制化程度不及虚拟机。   这三种方案的形象对比如下图:   二、 在Windows Azure平台上运行PHP应用   1. 本地开发PHP应用 这一部分同传统的PHP应用开发完全一致,若迁移本地已有的PHP应用到Azure,可以跳过这一部分内容。 l   安装PHP运行环境(Apache + PHP +…


Ref: 快速创建、启动Azure虚拟机(群)

在使用Azure Virtual Machine过程中,用户常常会遇到以下需求: l  在同一个托管服务(Cloud Service)下,快速创建多个虚拟机。 l  快速启动同一个托管服务下多个已有的虚拟机。 由于这些虚拟机从属于同一个托管服务,共用托管服务所对应的网络配置和负载映射等,因此在同时创建或者同时启动多个虚拟机的操作中,用户容易遇到以下问题:   产生这个问题的原因是:在第一台虚拟机启动初期,Azure后端尚在分配共用资源(如局域网IP)给第一台虚拟机,需要对托管服务独占式访问操作,第二台虚拟机需要在第一台虚拟机成功获取共有资源之后才能开始启动过程。   对于快速创建或启动同一托管服务下的多个虚拟机,本博文介绍一些常见的实施方法和优化步骤。 查看全文: http://blogs.msdn.com/b/cciccat/archive/2015/06/02/quick-start-multi-vm-in-single-cloud-service.aspx  


Windows Azure — 静态资源访问性能优化

在开发网站等可公共访问的服务时,客户端的体验至关重要,Azure网站(PaaS Web Role或者Azure Websites)同样如此。通常在Azure开发过程中,对于网站服务所有的静态资源(如图片、css、js等),推荐的做法是: 将静态文件存储在Azure Storage中,如http://zcdnstorage.blob.core.windows.net/112041147350697/iis-screenshot.JPG 开启CDN服务,指向目标Azure Storage,如http://az39977.vo.msecnd.net 指向 http://zcdnstorage.blob.core.windows.net 在网页中使用基于CDN的资源地址,如http://az39977.vo.msecnd.net/112041147350697/iis-screenshot.JPG   除此之外,对于部分存储中网站服务器中的静态资源,可以通过设置网站配置web.config来指定客户端浏览器缓存该静态内容。 <staticContent>         <clientCache setEtag=”true” cacheControlMode=”UseMaxAge” cacheControlMaxAge=”01:00:00″ /> </staticContent>   尽管如此,在上述实现之后,仍然可能发现一些客户端在访问目标网站时存在一些性能问题,如下是通过Chrome浏览器抓取的网络包:   可以发现:访问同一个网页时,本地可以缓存的内容都是来自于网站的,而来自于CDN的内容都没有本地缓存。   进一步抓取Fiddler网络包,可以看到,访问来自网站的图片时,返回信息里面包括了目标内容在本地缓存的设定,这和网站配置中的设定是一致的。 # Result Protocol Host URL Body Caching Content-Type Process Comments Custom 8 304 HTTP ×××.cloudapp.net /image/A1_logo-03.jpg 0 max-age=3600   chrome:3660       HTTP/1.1 304 Not Modified Cache-Control: max-age=3600…


2 known issues in Windows Azure Diagnostics

As you know, Windows Azure Diagnostics enables you to collect diagnostic data from an application running in Windows Azure. You can use diagnostic data for debugging and troubleshooting, measuring performance, monitoring resource usage, traffic analysis and capacity planning, and auditing. After the diagnostic data is collected it can be transferred to a Windows Azure storage…


One reference architecture in PaaS cloud solution.

It is from projects to demonstrate cloud energy and relieve big headaches in traditional solutions, the architecture can be realized smartly with public cloud while keep connected with local network, and the reference may help in Windows Azure, Amazon Web Service and more cloud platforms. Highlights to demonstrate:  Apply Microsoft cloud to grant traditional solution capability to process sudden…


Expose SSL service to multi domains from the same cloud service

When designing and deploying web services to Azure with Azure cloud service, it is very common to apply SSL to secure web access and protect the data transfer, regarding how to enable SSL in cloud service and make custom domain work instead of default cloudapp.net, here are some good tutorials:        1. http://azure.microsoft.com/en-us/documentation/articles/cloud-services-configure-ssl-certificate/        2….


Restrict Remote Access to Cloud VMs

Recently we are working with a project intending to restrict the RDP access of Azure role (worker role/ web role) instance to some specific IP address (a special thanks to Ugo Meex). The tricky thing we should be careful is there is a port mapping for RDP access between public port (3889) and internal port…


Azure Auto Scaling — 设计强伸缩性的云方案

云计算解决方案中,最大的一个特色就是强伸缩性。如果托管服务的工作流量骤增、骤减或者只需服役一段时间,Microsoft Azure可以提供自动化伸缩(Auto Scaling)的功能,Auto Scaling可以依据开发者定义的扩容(缩容)规则来监视运行在云端的托管服务,一旦托管服务的运行达到规则生效条件,Microsoft Azure即启动自动化扩容(缩容)动作,完成扩容(缩容),使其在保证在线上服务的高质量时,使用的云资源最少。 本博文以Azure Cloud Service为例,就常用的基于Auto Scaling的设计和实施进行小结和分析,供Azure开发(架构)者参考。主要包含以下几个部分: 1. 使用Azure管理主页(portal)进行Auto Scaling设计和实现。 2. 高级使用Auto Scaling。 3. Auto Scaling性能调优及关键参数。   使用Azure管理主页实现Auto Scaling 此方法非常简便,无需任何代码或编程操作,开发者登录Microsoft Azure管理门户https://manage.windowsazure.com,选择目标托管服务之后,在Scale页,开发者可以设置Auto Scaling。在默认情况下,Auto Scaling是关闭的(“SCALE BY METRIC”项是“NONE”),但开发者可以手动修改“INSTANCE COUNT”项,临时增加或者减少角色实例的数量。 若开发者选择使用CPU或者Queue Storage来实现Auto Scaling,可以将Scale By Metric置为CPU或者Queue,然后配置具体的Scaling细节,如下参考配置: 更多关于此页面中Scaling设置的参数可以参考配置旁边的?中的提示信息,也可以参考以下文章和实践手册:http://azure.microsoft.com/en-us/documentation/articles/cloud-services-how-to-scale/    高级使用Auto Scaling 采用了上述方法实施Auto Scaling设计以后,开发者往往会发现这样一个问题,当外部流量很大,导致Cloud Service中的每个虚机内CPU使用率高于80%时,Scaling Up(自动化扩容)大约1小时以后才发生,这与预期的效果可能存在差异。对于此问题,需要详细了解一下Auto Scaling工作的机制和主要要点。   主要要点: 1. Role状态正常即指Role中的每一个虚机都正常工作 2. 默认情况下,CPU统计值来自于之前45分钟内该Role下所有虚机的CPU平均。 3. Azure平台中,虚机内部的性能指标,传输到Scaling模块有一定的时差(约15分钟) 鉴于此,可以预期:若0:00分设置基于CPU的Scaling方案,然后迅速将所有的虚机CPU使用率消耗到90%,需要持续将近45+15=60分钟才会有Scaling Up事件发生。 深入了解这个问题,还需要仔细看一下Auto Scaling工作所依赖的配置。使用上述方法在portal上实施Auto Scaling后开发者可以在management…


Windows Azure数据存储与比较

对于绝大多数解决方案而言,数据都是至关重要的一部分,云计算中同样如此。在云计算里面,绝大多数传统存储的建议都可以直接拿来用,如数据冗余、数据加密等。但是云计算中的数据与传统的数据有所不同,主要体现在三个方面。 (1)数据可能存储在本地,也可能存储在云端 对于存储在本地的数据,如果云端服务需要连接,则可以通过建立不同的渠道来实现数据访问或者同步,如图所示Windows Azure中的数据同步技术。 „ 网络与网络互联:IaaS中的Virtual Network实现本地网络和云端网络的无缝整合,云端数据和本地数据都将成为局域网内部的数据,通过传统的局域网通信方式即可实现数据访问和管理。 „ 计算机间互联:IaaS中的Point-to-Site实现单台计算机与云端计算机的安全连接,支持基于IPv4的通信。 „ 应用程序互联:Service Bus实现应用程序间的互联,数据可以通过Service Bus暴露或传递于不同平台上的应用程序之间。 „ 数据同步:基于互联网和软件产品本身的数据同步,如SQL Server和SQL Azure的同步、本地Active Directory和云端Windows Azure Active Directory的同步。 (2)数据访问主要依赖于Internet,但数据访问和安全性要求极高 访问云端的数据或者通过建立云端连接来共享数据均需要保证数据安全性,Microsoft Azure中的数据服务大多数支持SSL通信加密,且提供多种不同安全级别的验证支持,对于SQL Azure和托管服务,开发者都可以自定义访问IP的“白名单”,实现更高级别的安全性保障。归纳起来,Microsoft Azure中的数据服务主要基于以下几个特性来实现数据安全: „ SSL加密通信。 „ 使用用户名、密钥管理数据。 „ 使用SAS签名授权方式控制访问权限。 „ 基于ACS或者WAAD的登录授权。 „ IP白名单、黑名单。 证书加密数据访问密钥等关键信息 (3)数据访问客户端运行于世界各地,访问速度很重要 云计算的数据可以存放在许多地方,而且WindowsAzure数据存储也是非常多样化的。为了实现高性能的数据服务,开发者可以选用最佳的数据存储/缓存来实践解决方案,同时对于公开的云端静态数据(如文件、视频等),选用较近的数据中心,并开启CDN加快访问速度。 选择正确的数据类型时,应充分考虑项目需求和数据上下游的交互压力,除了常用的文件存储和缓存技术之外,对于队列存储和表存储,开发者应仔细分析Queue Storage和Service Bus Queue、Table Storage和SQL Azure的对比,选择最佳的数据类型来实践。 如下表所示是Queue Storage和Service Bus Queue的对比。 服务特性 Queue Storage Service Bus Queue…