亚马逊AWS官方博客

如何使用AWS 命令行分段上传大文件

1.S3上传文件介绍 使用亚马逊云的朋友经常需要上传文件到S3存储,亚马逊S3提供了在单个操作中上传文件和分段上传文件两种方式。使用单个操作上传,每次可以上传最大5GB的文件。如果使用分段上传来上传文件,可以 上传最大大小为5TB的文件。 2.分段上传的概念及其优势 分段上传允许将一个文件分割成多个分段 ,您可以按任意顺序上传这些文件分段。如果任意分段传输失败,可以重新传输该分段且不会影响其他分段。当对象的所有段都上传后,S3 可以使用这些分段创建对象。一般而言,如果您的文件大小达到了 100 MB,您应该考虑使用分段上传,而不是在单个操作中上传文件。 分段上传的优势主要有以下几点: 提高吞吐量 如果需要上传的文件比较大,使用直接上传方式,效率很低。而使用亚马逊S3分段上传功能,通过并行上传分段以提高吞吐量,能充分利用当前的带宽,提高了上传效率。 从网络问题中快速恢复 如果使用分段上传,某个分段失败了,你只需要重新上传这个分段,将上传文件时由于网络错误所产生的影响降至最低。  突破S3单文件上传限制 当文件大于5GB,你只能将文件分片,然后分段上传。 3.S3分段上传的核心规范 S3分段上传的部分指标如下表所示: 4. S3分段上传的权限配置 使用S3分段上传需要适当的权限配置,相比于S3的单文件上传,S3在分段上传时需要部分额外的权限,最低的S3分段上传权限配置如下所示: {     “Version”: “2012-10-17”,     “Statement”: [         {             “Effect”: “Allow”,             “Action”: [                 “s3:AbortMultipartUpload”,                 “s3:GetObject”,                 “s3:ListBucketMultipartUploads”,                 “s3:ListMultipartUploadParts”,                 “s3:PutObject”             ],             “Resource”: [                 “*”             ] […]

Read More

为员工进行云培训时的11条箴言

Tell me and I forget. Teach me and I remember. Involve me and I learn.      – Benjamin Franklin (告诉我,我会忘记;演示给我,我会记住;但让我参与其中,我才能真正学会。      – 本杰明﹒富兰克林) 作为一个CCMO,培训你的员工就能使他们加快你的上云历程吗?每个组织的培训历程都是独一无二的,但我发现在这方面做得很好的一些组织中,它们是有一些共性的。从这些共性中我们可总结出11条箴言: 1.从基础的但有意义的事情开始。当你的团队完成一些业务相关的重要事情时,他们将很快意识到云技术的实际好处。我见过很多公司的项目进展慢于预期,因为他们过于注重细枝末节。你肯定不想把全部身家赌在前几个项目上,你将会想从几个能很好阐明业务好处的项目开始做起。其实有很多适合刚开始着手进行的项目,例如一个简单的网站、一个移动应用、一个可以便捷访问数据的API或者一个文件备份及灾难恢复的改进。如果你的员工培训基于实际的应用,那你的团队将能够更快地把他们所学的东西应用于更多项目。 2.利用Amazon Web Services Training(AWS Training)。AWS可提供良好的培训计划。这些计划已经帮助了上千家公司增强它们的云技能。AWS将每一个培训视为一次提升的机会,并且开发了不同的课程和一系列交付机制以便客户能定制培训计划来满足他们的具体需求。当我在Dow Jones时,我们使用现在称为AWS Technical Fundamentals的课程来培训我们团队的几乎每一个技术人员。除了让我们的员工具备新的能力之外,这个培训也消除了员工对一些项目开始时的未知的恐惧。 3.给团队时间去尝试。构建一种探索文化是这段旅途中的下一个最佳实践,这在激励你的员工去学习时尤其重要。创新来源于尝试,因为云消除了尝试新事物时的前期投入,所以没有什么能够阻止你的团队创造你行业中的新产品。给你的团队足够的自由空间来以全新的方式实现已有的项目。 4.设置目标来鼓励学习和实践。大部分公司为员工设定目标或KPI并将此与员工绩效挂钩。使用这些现有机制来巩固你的策略,并形成以后的行为。你可以设定相关培训课程的完成目标,多少预算被释放,或者通过利用适当的云架构如何改善你的卓越运营。这样做表明,领导很注重让每个人都有机会尝试和学习。 5.设置时间限制,跟上步伐。当你向实验文化转变时这一点尤其重要。每天结束时,以结果为导向。你可以通过为每个项目设定最后期限帮助你的团队成员平衡试验和他们的现有知识。有时候你的团队会因为这些约束而做出一些折衷,随着项目的进行,你需要制定一个如何应对这些折衷的机制。但是你的团队会在将来的项目中不断学习并提高能力。 6.定位并处理变革阻力。所有这些因素都旨在通过给予你的员工成功所需的工具来抑制他们对变革的抵触。但是即使有这些机会,你的组织中也可能会有对此持续抵触的人。观察并理解来自你的团队的担忧,以开放的心态对待有效的和无效的,迅速处理不必要的摩擦。这也是我下一个要谈的。 7.别害怕给人新的角色。以有意义的方式迁移到云不仅是技术变革更是文化变革。我发现给人一个担当新角色的机会将帮助他们克服对变革的抵抗。我倾向于首先观察公司的内部,因为习以为常的知识是一种昂贵的且不必要的损失。在我在Bloomberg任职的11年间,我担任了6个不同且差异很大的角色。有数不清的机会是我在那里呆了那么久的原因之一。想方设法给员工新的机会将让他们保持参与并帮助留住员工。 8.向你的员工展示他们应该如何融入伟大的构想。当你知道你的工作是如何融入组织的大局时,会很容易激发你对工作的热情。确保你考虑到了每个角色并且沟通过他对你的团队有多大意义。再次强调,我期待看到你的组织如何权衡部门和/或个人目标与大局的关系,并设法为每个人量身定做。 9.深入行业活动,看看别人在做什么。大多数人从别人的成功和失败中学到很多。至今我已经为大公司开发基于云的策略有五年时间了,现在我也惊异于我参加AWS re:Invent、 AWS Summits或其他技术竞赛所学到的知识。给你员工时间来让他们组织并带着新的想法回去。设想许多的、甚至有一些你根本不会去实施的想法,这是创造有教育意义的时刻并强化你策略的好方法。 10.向你的搭档学习。在AWS Partner Network中有数以万计的不同组织。他们中许多可能已经和你们是稳定的合作伙伴关系,但那可能也有值得你们学习的新的合作伙伴。我很惊异于看到很多大公司正转变成小的、年轻的、诞生于云的,像系统集成商Cloudreach、2nd Watch、Minjar,加速推进云策略并改变它们的IT文化。 11.在你的组织中制度化具有你特色的培训。当你推进云进程时,你会希望看到你的组织中的一些团队或个人想与他人分享他们所学到的。这将来自你卓越的云中心。我在Dow Jones时我们的DevOps团队定期举行DevOps日,在那里他们相互分享他们开发的云的实践、架构、管理模型等。跟我谈过的其他几家世界500强企业也已经建立了专门针对他们组织的类似的计划。   作者介绍 史蒂芬﹒奥本 史蒂芬·奥本 (Stephen Orban) 于 […]

Read More

协同合作伙伴 合力加速上云战略

“You can do what I cannot do. I can do what you cannot do. Together we can do great things.” -Mother Teresa (你能做我所不及的,我能做你所不及的。双方合力,我们可以做些伟大的事情。– 修女特蕾莎) 不同的组织采取不同的方法与第三方进行专业技术合作。有些组织偏向于构建自己的技术;而另一些则将部分或全部研发工作外包,并将他们的技术运营交给第三方。不论你的组织处于什么位置,几乎可以肯定的是你与少数硬件、工具及云服务提供商合作开发针对内部和外部客户的产品和服务。 我已经与数百名在过去几年中不断发展其组织技术战略的高管交谈过,许多人开始重新审视自己的合作方式,因为他们开始了解云计算如何能够帮助他们改变自己的业务。这篇文章探讨了一些我观察到的云技术是如何改变整个技术圈的以及关于吸引合作伙伴的话题。 关注快速增长的生态系统 云生态系统的快速增长不断的令我感到惊讶。最近四年我参加了AWS re:Invent,每次我都对比前一年更大的合作伙伴规模感到惊讶。从全局来看,从2012年到2015年,合作伙伴的展位数量增长了一倍多,全部走完去了解最新的工具和技术从原来需要一个小时增长到了一天时间。没有更好的领域更适合风投来投资这一市场了。 貌似在这种快速增长的生态系统中寻找适合你的合作伙伴很难,但有多个供应商争夺你的业务对你也会是有利的。你的AWS客户经理和我们的AWS合作伙伴目录可以帮助你缩小选择范围,AWS Marketplace能够帮助你在几秒内从广泛的供应商和类别中发现并部署解决方案。 改变你的文化 现如今看到大型组织变得乐意与资金缺乏的、 “不可靠”的小型组织合作,来创建面向企业的工具、专业服务和管理服务等,这种现象是令人鼓舞的。当我在十五年前开始代表我的组织购买技术时,我被告知只能与规模大的公司长期合作。现在我看到很多财富500强公司与那些比我四岁女儿还年轻的公司合作,帮助他们处理最繁杂的问题。在一些情况下,这样做会帮助企业改变它们的整个业务。 当许多技术主管带领它们的组织走向数字化和客户至上的方向时,他们意识到如果可以接受年轻的基于云的供应商的一些文化,他们将可以实现更加迅速地反应。当我在Dow Jones担任CIO时,我和AWS合作的主要动机是吸收一些亚马逊的文化。我想要的是使亚马逊具备能够快速定位顾客、迅速反应的工具。我也迫切想构建一个DevOps文化来鼓励尝试。许多年轻的供应商—2nd Watch, Cloudreach, Cloud Technology Partners, Minjar, New Relic, App Dynamics, Chef, Puppet, CloudEndure,也出于同样的原因在发掘新的业务。 这并不是说现存的大型工具和服务提供商不能快速利用这种转变的优势。在许多情况下,它更适合利用现有的关系来改造业务或文化。 在你关注的领域寻找可靠的合作伙伴 你应该始终致力于与你业务目标相一致的组织合作。如果你正想具有DevOps能力,并且希望你的团队学会怎样“运行他们所构建的”,例如,确保你的合作伙伴能够帮助你具有像他们所展示的那样的能力。这也是AWS开发了AWS认证计划的原因之一。我们希望确保你在我们的平台上能成功,这个计划会协助你找到能帮你在这些领域取得成功的合作伙伴,这些领域也是你的组织特别关注的。我们现在正在这个生态系统中的一些领域开发认证系统,如DevOps、移动、安全、数字媒体、市场和商务、大数据、存储、健康管理、生命科学、微软工作负载、SAP、Oracle等。 不论你的组织处于什么合作状态,我们都乐于帮助你找到合适的合作伙伴来实现你的目标。 作者介绍 史蒂芬·奥本 […]

Read More

畅谈CIO该如何合并业务和技术

“以始为终。” — 史蒂芬·柯维(Stephen R. Covey) 与以往相比,现在成功的技术管理人员必须帮助其负责执行的同事了解技术如何融入——或者,更好地促进——他们的业务。向组织阐明这样的思考,其实就是向你的执行同事阐明你有关于组织的业务目标的指令,以及你是这个执行团队的关键成员。 目前的商业格局正在被一些公司打破。因为创建和运营这些公司的管理人员不仅懂得如何让技术融入业务,而且定义了技术在他们整个行业中扮演的角色:酒店行业的AirBnb,叫车服务行业的Uber,智能家居行业的Nest Labs,存储领域的Dropbox就是几个相关的例子。这对传统行业跟上步伐造成了压力,同时也给IT管理人员提供了无处不在的机会。没有人能比那些整个职业生涯都在从事技术工作的人更适合来阐述如何使用技术来满足日益增长的市场需求。这对我们这些已经在大公司度过了大部分职业生涯的人尤其如此。我们讲企业术语,了解哪些约束是硬性的,哪些是弹性的,以及对于每个C级同行你必须做什么。让它们的技术主管在幕后工作的企业已经不可能成功了。 而且,因为云带走了很多传统上与企业IT相关联的未分化繁重负担,所以现在的IT管理人员可以投入更多的时间和资源来从事那些驱动业务和保持组织竞争力的活动。云正是这些颠覆性力量的关键因素。使用相同的要素不一定会带给你拓展业务的想法,但它会为开放竞争环境提供了更多的可能性。 对于那些希望带领自己的组织使用云的人们,我提供以下一些观点: 与你的同事换位思考(Empathize with your peers) 云不仅仅是一个技术转变。它更是每一个管理层人员应该关注的业务转变。你的职责是来考虑云会如何影响你的执行团队的职责或者考虑它可能会带来什么影响。 我不可能在一篇文章里覆盖所有类型的管理者,但是: 首席财务官(CFO)通常被较低的前期成本以及只支付你所使用的东西所吸引。我见过很多因为逐月变化的成本导致的不和谐,但我总是发现特别是当你从容量规划和维护活动的负担中解脱出来时,总的成本会是很低的。随着时间的增长,在产品研发(资产创造)过程中,能够每个月与管理者紧密合作、了解更多成本预期的环境、管理资源的使用、交错购买RI、考虑如何核算劳动力成本等,正在成为关注的焦点。 首席营销官(CMO)通常希望保持公司的品牌新颖,并对不断变化的市场情况做出反应。把品牌网站从每月更新一次变成一天更新几次会带来什么影响?一个可无限扩展的数据仓库将如何帮助CMO更好地了解他们的客户?如果几乎没有什么代价,他们会在一小部分用户身上做什么尝试? 人力资源副总裁(VPs of HR)想看到的是你能照顾好你的员工以及你如何招聘新的人才。充分利用AWS培训与认证(AWS Training and Certification),并随时让我们的专业知识培训成为你的培训课程的一部分。我将在后续有关这个话题的文章中探讨如何教育你的员工。而且只要愿意去学习,你的团队的任何人都可以帮助你去完成这种培训。此外,还能了解参与此培训的其他公司是如何招聘新员工及如何管理老员工的过渡。比如,如何让DevOps融入你的组织,以及“运行你所构建的(run-what-you-build)”意味着什么? CEO关注所有这些事情,以及如何让公司保持竞争力。用你从其他高管所学的东西来帮助塑造一个完整的视界,并用现代科技展示如何实现。如此一来,你将可以在同样的限制下做一些不可能完成的事情。 在Dow Jones,我设立了一个目标,每个月与几个管理者共餐。在这段时间里,我只听取他们的受挫经历。我用我所学的来调整我们的策略,并且确保我向他们反馈了他们的影响力是如何改变了我们的方向。这是一个简单的关于如何迎合他们需求、构建信任并获取支持的例子。这里的关键是不仅要聆听,还要根据你所学的来采取行动。 谋求帮助(Enlist help)           你不必单独做这件事。你可以考虑在培训中把你的客户经理当成你的导师。他们乐意与你以及你的管理团队一起工作,帮助塑造周围的信息及迁移到云的好处,使之与你的业务接轨。如果影响已经超出了客户经理的专业知识范围,他们将寻找到合适的人选,不管是AWS的内部或外部人员。我们乐意为你创造与有同样想法的人沟通的机会。而且这不只是在我们的活动中,而是在培训的任何时刻。在最近一次活动中我和其他公司有过几个参考电话,从其他管理者学习既是一种教育也是一种验证。 AWS合作伙伴网络(AWS Partner Network)以及AWS培训和认证(AWS Training and Certification)也是重要的资源,它们能帮助你加快你的培训进程。我多次强调它们是最佳实践,但我发现很多企业与他们的HR部门合作把AWS培训作为我们整个培训的首要部分。在Dow Jones,DevOps团队与HR合作并定期举行DevOps日,来交付优化的工具和最佳实践。这是在分布全球的团队中分享技能的好方法。再次强调,你的客户经理可以帮助你很好地连接这些领域。 发展IT品牌(Evolve the IT brand) 我跟很多渴望提高自己部门品牌的IT主管交谈过。我在Bloomberg花了超过十年的职业生涯来开发促进业务的软件。我去Dow Jones的原因之一是帮助他们转变一种观念 – IT部门是一个成本中心。其实,IT部门也是驱动和赋能业务的部门。我觉得我对我的部门中辛勤工作和奉献的每个人有所亏欠,他们对我们正在推动的改变是很有帮助的。 AWS是作出这些转变的基础的一部分,但大部分在执行层面的工作在于了解每一个管理者的痛点,了解他们在IT中不想要什么,以便调整技术帮助他们实现自己的目标。在使用云提供的更好和更快的结果的几个月后,我们花了几个月再培训管理者团队和他们的部门来使用我们的技术而不是IT。这看似微妙,但它为我们之间的沟通带来有了有意义的变化,并且对由部门到公司整体的变化做出了贡献。 作者介绍 史蒂芬﹒奥本 史蒂芬·奥本 (Stephen Orban) 于 2014 年9月加入亚马逊AWS 担任企业战略总经理。奥本与多名企业技术高管合作,在云如何实现业务成果、加快创新和简化流程方面进行经验和战略分享。在加入亚马逊AWS 之前,奥本曾在道琼斯担任首席信息官 (CIO)一职,他通过借力 […]

Read More

在云端试验时的“有所为和有所不为”

“The best way to show that a stick is crooked is not to argue about it or to spend time denouncing it, but to lay a straight stick alongside it” ― D.L. Moody (“验证一根木棒是弯曲的最好的方法不是争论或花时间去抨击,而是放一根笔直的木棒在它旁边” – 慕迪) 现在越来越多的公司意识到,正确的、科学的使用云可以让入云试验更简单、经济和低风险。而且有这种试验文化的公司会在今天的市场有更多的竞争筹码。试验带来创新,这是实现新想法的史无前例的好时机。那么应该从哪里着手呢?当你在你的组织中创建试验文化时,四类“有所为和有所不为”是值得你去考量的。 1.管理预期 不是每次尝试的结果都符合你的预期,但是每次尝试都是学习和提高你运营能力的机会。如果你的组织未形成一个“从失败中学习”的习惯,那就从小事做起,确保让每个人知道你把哪些项目当作试验项目。你可以通过以下方式来管理你的项目利益相关方的预期 – 清楚地了解试验的意图、你期望什么样的产出、你怎样测试和衡量结果、你想从中学习到什么。据我所知,如果管理者知道他的组织会从试验中学到什么或使它变得更好的话,即使这个试验没有什么确定地产出,他们也会对这个试验心存感激。 不要从每个人都要求有产出的项目着手 如果你是一个试图创建实验文化的变革推动者,在你的变革旅程中不要从每个人都要求有产出的项目着手。例如我不会建议你在年终预算上做试验。我曾经合作的一个CEO告诉过我失败是可以有的,除非当它不可以失败的时候。接受一个增长的过程,慢慢增加你进行的试验,不要超出你的组织的可接受范围。 2.鼓励你的团队计划试验 每个组织都有自己的方式来决定哪些项目获得技术资源。不幸的是,一些组织现在把技术或IT部门当成成本中心并且想象与实际相去甚远。好的想法可以来自任何地方,当然当它来自于项目之外的时候,大部分的技术专家都有其独特的观点。对于那些刚开始使用云的组织来说情况尤其如此——把云应用于项目上的人处于实施试验的最佳位置,这些试验利用了使业务从云中受益的独一无二的能力。协助维护你的团队的提议,将你的员工置于可以影响执行团队投资的项目上。 在你知道怎样评价这个试验时再开始它 你期望把时间花在正确的试验上,确保从中学到的内容可以提高你的运营能力和产品。在让你的团队进行一个试验之前,你应该知道他们会评测什么以及怎样去评测。如果你在测试你的网站新功能,什么样的指标意味着成功?页面浏览量?点击量?放弃量?这种小但重要的尽职的调查行为将迫使你的团队首先去思考为什么他们要进行这个试验。这也将迫使你的团队优先进行正确的试验。 3.考虑DevOps的制度化试验 一个DevOps的文化也许是把试验制度化带到您组织的有力途径。将运行所构建的与自动化结合起来可以大大减少发布改变的时间,允许你更频繁地发布并在失效时更快回滚。成熟的DevOps组织也制定A / B测试框架,让他们同时尝试不同的用户体验和不同的用户群,看看哪一个效果最好。 不要怀疑你的团队 怀疑是阻碍你团队的“最有力”的方法,并且打开了失败之门。当你学会适当地预期试验、评测它们,并对它们进行快速迭代,你会发现在你开始怀疑之前你会接受你的方法。确保你的团队在思考正确的评测试验方式,并且提出尖锐的问题是十分必要的。但是与其质疑他们交付的能力不如帮助团队解决问题。人们倾向于跟随相信他们能成功的领导者。 4.鼓励整个组织参与 当你通过试验开始快速交付的时候,组织的其它成员将会被你的方式所吸引。那就拉他们进来。尝试进行覆盖不同业务领域的编程马拉松,让你的股东帮助确定怎样测评试验,向你的组织询问他们想进行哪个领域的试验。但并不是每个公司选择给他们员工时间来试验,他们通常吹捧这个为竞争优势。至少这种活动能提高员工们的士气和黏性。在我在亚马逊任职期间里,我发现任何人只要能够通过思考和书面形式表达试验,通常能得到机会尝试一下。这是我们特殊的文化的一部分,也是一个用来吸引和留住创新者和创造者的重要手段。 […]

Read More

专线直连AWS建立混合IT环境实务指南

AWS Direct Connect简介 云计算已经走入到每个企业中。然而,一些大型企业过去都是自建数据中心,购买了大量的基础设施,在使用公有云服务时又不能抛弃原有的设备,因此采用混合云的方式,既可以保护原有的投资,又可以通过公有云的方式来随时按需使用。很多企业都正在通过混合云的方式来逐步走上全方位采用云的道路。 过去,用户需要通过在传统的公网架设VPN(Virtual Private Network,虚拟专用网络),来保障数据传输的安全性,但是,这种方式无法完全保证带宽、低延迟、时效性。而AWS Direct Connect可以实现低带宽的成本,更稳定的网络性能,更可靠的网络效果,并且可以兼容AWS其他的云计算服务帮助用户实现混合云的架构。 AWS Direct Connect服务使用标准的802.1q VLAN标准,可将连接客户数据中心和AWS的单个专线连接逻辑分割成多个虚接口(Virtual Interface)。这样客户可以通过同一个连接访问共享资源(如通过公有IP 地址空间提供服务的Amazon S3中的对象)和专有资源(如使用私有IP空间在VPC中运行的Amazon EC2实例),同时又能在公有和专用环境之间保持网络隔离。 如下图所示,从客户路由器到AWS Direct Connect路由器的以太网连接上的不同VLAN与不同的虚接口相关联,客户可以通过Public VIF访问诸如S3,DynamoDB、AWS API端点等在公共地址空间中的服务,也可以通过Private VIF与绑定到VPC的VGW相连接,实现对多个VPC的访问。 AWS Direct Connect有 1Gbps 和 10Gbps 两种端口可用。客户可以通过建立多个连接来实现更大的带宽和更高的冗余。而对于带宽要求不高的客户也可向支持 AWS Direct Connect 的 APN 合作伙伴预定带宽粒度更细的托管连接。需要注意的是每个托管连接仅能支持访问单个VPC,或者只能访问公有地址空间的AWS服务端点。当然客户可以通过多个托管连接用于访问多个VPC。 常见的接入场景及分工界面 场景一: 客户网络边界已经到达特定Direct Connect 节点 如图所示,客户在特定的Direct Connect 节点(图中虚框所示位置)所在的机房已经部署了网络边界设备,那么可以向运营该节点的运营商订购 到AWS Direct Connect路由器的楼内跳线即可完成连接。 此场景下,分工界面较为简单: 各部分的技术要求分解如下: 场景二: 客户通过以太网专线 与AWS Direct Connect互联 如图所示,客户数据中心的网络边界通过AWS合作伙伴或者独立第三方提供的以太网专线相互连接。 […]

Read More

手把手教你调校AWS PB级数据仓库

什么是一个好的数据仓库? Redshift是AWS云计算中的一个完全托管的,PB级别规模的数据仓库服务。即使在数据量非常小的时候(比如几百个GB的数据)你就可以开始使用Redshift,Redshift集群可以随着你数据的增加而不断扩容,甚至达到PB级。云计算中数据仓库的优势非常明显,不需要license,不需要预先配置非常大的数据仓库集群,扩容简单,仅仅需要为你实际所使用的数据仓库付费。 Redshift作为一个企业级数据仓库完全支持SQL语法,无学习成本,支持很多种客户端连接,包括各种市场上的BI工具,报表以及数据分析工具。 Redshift的概览 Redshift通过支持大规模并行处理(MPP),列式存储,对不同列数据使用不同数据压缩算法,关系型数据仓库(SQL),灵活的扩容管理等众多优点,兼顾了数仓性能,同时也考虑学习成本及使用成本。 Redshift系统架构及要点 图1,Redshift系统架构图 主节点负责客户端与计算节点之间的所有通讯,编译代码并负责将编译好的代码分发给各个计算节点处理,负责分配数据到不同的计算节点,主节点对客户不可见的,无需客户管理主节点的压力,更重要的是主节点免费。 计算节点是具体的干活的,并处理好的任务送给主节点进行合并后返回给客户端应用程序。每个计算节点都有自己独立的CPU,内存以及直连存储。Redshift集群规模大小通常就是指计算节点的个数以及计算节点机器类型。 节点分片是指将计算节点被分成若干的分片,根据计算节点类型不同,每个节点包含的分片数量不同,通常1个vCPU对应一个分片,ds2的机型除外。每个分片都会分配独立的内存及存储资源,接受来自主节点分配的任务。分片跟另外一个重要概念Dist Key紧密相关, 这里先提一下,接下来会具体介绍Dist Key。 排序键(Sort Key)是一个顺序键,即Redshift会根据这个键来将数据按顺序存储在硬盘上。Redshift的查询优化程序(只要理解有这么个东西存在就好,客户不需要任何维护,对客户也是透明的)也会根据这个排序来进行执行查询优化计划。这是Redshift性能调优的一个非常重要的参数。 分配键(Distribution Key)是控制加载到表的数据如何分布在各个计算节点的一个键,有好几种分布的风格,接下来会重点讲到,这是Redshift调优的非常重要的另外一个参数。 Redshift的几个常用最佳实践 选择最佳排序键 如果最近使用的数据查询频率最高,则指定时间戳列作为排序键的第一列; 如果您经常对某列进行范围筛选或相等性筛选,则指定该列作为排序键; 如果您频繁联接表,则指定联接列作为排序键和分配键; 熟悉Redshift的朋友可能知道可以指定多列作为排序键,而且排序键还有两种方式,组合式和交叉式。限于篇幅的原因,在接下来的调优测试中我们采用的是某一列作为排序键,如果有对其他排序键风格感兴趣的朋友,可以单独联系我们进行讨论。 选择最佳分配键 选择表分配方式的目的是通过在执行查询前将数据放在需要的位置来最大程度地减小重新分配步骤的影响,最好这个查询不需要二次移动数据。 分配键有三种风格,均匀分布(Even),键分布(Key),全分布(All),默认是均匀分布。 根据共同列分配事实数据表和一个维度表; 事实数据表只能有一个分配键。任何通过其他键联接的表都不能与事实数据表并置。根据联接频率和联接行的大小选择一个要并置的维度。将维度表的主键和事实数据表对应的外键指定为 DISTKEY。 根据筛选的数据集的大小选择最大的维度; 只有用于联接的行需要分配,因此需要考虑筛选后的数据集的大小,而不是表的大小。 在筛选结果集中选择基数高的列; 例如,如果您在日期列上分配了一个销售表,您可能获得非常均匀的数据分配,除非您的大多数销售都是季节性的。但是,如果您通常使用范围受限谓词进行筛选以缩小日期期间的范围,则大多数筛选行将位于有限的一组切片上并且查询工作负载将偏斜。 将一些维度表改为使用 ALL 分配; 如果一个维度表不能与事实数据表或其他重要的联接表并置,您可以通过将整个表分配到所有节点来大大提高查询性能。使用 ALL 分配会使存储空间需求成倍增长,并且会增加加载时间和维护操作,所以在选择 ALL 分配前应权衡所有因素。 优化COPY,提高数据加载速度 当你将要数据加载到Redshift的某个表时,不要让单个输入文件过大,最好是将这些输入文件切成多份,具体数量最好是跟分片数量匹配,这样可以充分利用所有分片,配合分配键能达到最佳效果。 图2,COPY输入的最优方式 让COPY选择自动压缩 作为数据仓库,Redshift通常会需要大量导入数据,这时使用做多的,效率最好的是COPY命令。在使用COPY时建议将COMPUPDATE参数设置为ON,这样数据在加载进库时是自动压缩的,好处是可以节省存储空间,提高查询的速度,不过这会增加数据加载进表的时间,这个可以根据你的业务需求,再具体衡量。 Redshift调优实战 测试结论 选择合适的排序键,分配键,及自动压缩对表的查询速度,存储效率很大提升。本次测试中,优化后查询速度有高达75%的提升,存储空间节省50%。 相同节点类型情况下,多节点性能比单节点性能提升明显。本次测试中,采用了4节点与单节点对比,4节点查询速度比单节点提升75%。 节点数量相同的情况下,dc系列节点的查询速度比ds系列节点的查询速度要快。本次测试中,采用了dc1.large和ds1.xlarge两种节点类型进行对比,dc系列节点的查询速度比ds系列快20% 。 使用JOIN与不使用JOIN查询速度无明显差别。本次测试中,三个不同的查询及对应的JOIN查询,在查询速度上的差别非常小。这部分的详细测试结果,请参见附录一。 查询速度达到一定值时,再增加节点对查询优化的效果有限。本次测试中,在相同环境中,将节点数量从8个dc1.large节点增加到12个dc1.large节点,三个查询只有一个查询的速度有一定提升,其他2个查询速度基本没有太大变化。这部分的详细测试结果,请参见附录二。 图3,调优前后性能对比图 […]

Read More

分布式神经网络框架 CaffeOnSpark在AWS上的部署过程

一、介绍 Caffe 是一个高效的神经网络计算框架,可以充分利用系统的GPU资源进行并行计算,是一个强大的工具,在图像识别、语音识别、行为分类等不同领域都得到了广泛应用。有关Caffe的更多内容请参考项目主页: http://caffe.berkeleyvision.org/ 不过Caffe的常用部署方式是单机的,这就意味着它的水平扩展能力受到了限制。使用者可以通过在系统中添加多个GPU的方式提高并发度,不过其并发能力最终受到单系统可支撑的GPU数量的限制。同时,神经网络计算往往又是计算消耗很大的,所以人们在使用Caffe的时候都可能会希望有一种并行计算框架可以支持Caffe。 而我们知道Spark是基于内存的计算框架,基于Yarn, Mesos或者是Standalone模式,它可以充分利用多实例计算资源。因此,如果能够结合Caffe和Spark,Caffe的能力将得到更充分的发挥。 基于这些原因,Yahoo开源的CaffeOnSpark框架受到的极大的关注。 有关CaffeOnSpark的源代码和相关文档,请大家参考: https://github.com/yahoo/CaffeOnSpark 今天我们要进一步讨论的是如何在AWS EC2上部署CaffeOnSpark, 充分利用AWS服务提供的GPU实例构建强大的分布式神经网络计算框架。 在CaffeOnSpark的文档中有明确指出EC2上部署CaffeOnSpark的步骤,具体请参考: https://github.com/yahoo/CaffeOnSpark/wiki/GetStarted_EC2 但是文档的一些部分写得比较简单,初步接触的读者可能在执行过程中遇到一些问题,所以在这里将我个人的安装配置过程整理了一下供大家参考。 安装过程大概可以分为四部分: 下面会在“环境准备”一节中具体描述这几个步骤的细节。 二、环境准备 首先我们打开文档https://github.com/yahoo/CaffeOnSpark/wiki/GetStarted_EC2, 看看文档中刚开始的部分对于环境准备的要求。 里面首先提到我们需要准备“EC2 Key pair”, 就是要准备EC2启动需要的密钥对。当然,为了创建“EC2 Key pair”,为了启动EC2,你首先需要一个AWS账号。有关AWS账号的申请和基本使用这里就不细述了,请参考其它相关文档。需要注意的是你拿到的AWS账号需要有基本的权限才能完成CaffeOnSpark的安装工作,其中包括创建EC2实例,创建安全组等。 “EC2 Key pair”是你在创建EC2实例时创建的密钥对,创建过程中你有一次机会下载私钥文件,就是文中提到的pem文件。如果你之前没有创建过EC2,你也可以直接在EC2控制台的“网络与安全->密钥对”界面中点击“创建密钥对”按钮进行创建。同样,创建过程中你有一次机会下载pem文件,下载后注意保管好该文件,后面都会依赖这个文件。 按文档的描述,有了以上的资源以后就可以执行以下命令: 为了准备环境,我们需要先理解一下上面的脚本。脚本的刚开始部分是一系列变量的定义,我们先了解这些变量的作用。 第一句比较简单,从变量名可以知道这是指定了要使用的AMI的ID: 这个镜像是一个已经安装好Spark、CaffeOnSpark,并加载了常用神经网络测试数据的Ubuntu镜像。该镜像由CaffeOnSpark团队提供,已经共享给所有AWS账号。 不过稍有AWS使用经验的同学会意识到,这样的命令是针对特定的区域(Region)的,因为同一个AMI镜像拷贝到不同AWS区域时它们的AMI ID是不一样的。在命令行中如果指定了一个AMI的ID,就意味着这些命令只能在特定的AWS区域正常工作。 所以我们需要继续查看后续命令,看看哪里指定了区域。幸运的是,命令的第二行就是指定区域的命令: 我们知道区域代码“eu-west-1”指的是欧洲(爱尔兰) 区域,意味着我们运行完这个样例后我们的CaffeOnSpark群集是运行在欧洲(爱尔兰) 区域的。因为EC2 key pair也是按区域分的,所以我们创建的EC2 key pair也应该是在欧洲(爱尔兰) 区域。 为了在欧洲(爱尔兰) 区域创建你的EC2 key pair,你可以点击AWS控制台右上角的区域选择框,选择欧洲(爱尔兰) 区域,然后再按步骤进入EC2的控制台创建EC2 key pair. 同时,你也可以去EC2控制台的“映像->AMI”界面查找镜像ID为ami-5ff7782c的镜像,记得查看时选择“映像类型”为“公有映像”,而不是“我拥有的”。找到这个镜像你还可以仔细查看一下其它相关信息。 如果你发现镜像列表中没有ID为ami-5ff7782c的镜像,有可能你阅读本文的时候相关方已经更新了新的镜像,你可以去CaffeOnSpark的主页 https://github.com/yahoo/CaffeOnSpark […]

Read More

打造DIY版Echo:树莓派+ Alexa 语音服务

关于本文 本文详细阐述了如何在Java客户端和Node.js服务器上使用和测试Alexa语音服务。 本实例需要用Node.Js来获取Login的授权码。 本指导提供详细的操作指南对于在取得示例授权码、依赖性和在运行Pi的过程中相应的硬件部署。对于Windows, Mac,或者通用的Linux指令,可以看这里的向导。 开始 所需硬件 1. Raspberry Pi 2 (Model B) –在亚马逊上购买。升级:当然,Raspberry 3也是可以的,请点击这里查看详细操作。Pi的用户-请点击这里来获取帮助。 2. 微型的-USB 电源线 供树莓派来使用(包括在树莓Pi中) 3. 微型的 SD 卡– 需要预装NOOBS – Raspberry Pi 8GB Preloaded (NOOBS) Micro SD Card 4. 网线 5. USB 2.0 小型麦克风 – Raspberry Pi 没有自带麦克风,需要外接来与Alexa进行交互-在亚马逊上购买 6. 外部扬声器3.5mm音频插座/立体声耳机插孔-在亚马逊上购买 7. 一个 USB 鼠标和键盘,以及一个支持HDMI的外部显示器 – 如果由于某种原因无法通过SSH协议进入到你的树莓派时,我们也推荐你使用USB键盘、鼠标和一个便于使用的HDMI显示器。稍后可以查看关于“SSH”协议的内容。 8. 无线WiFi适配器(可选)在亚马逊上购买 所需技能 1. […]

Read More

将VMware 中的Ubuntu 12.04 映像导入成Amazon EC2 AMI

(本操作文档部分叙述内容与技术知识引用自AWS官方网站) 要在 Amazon EC2 中使用您的 VM,您必须首先将其从虚拟化环境中导出,然后使用 AWS Command Line Interface (AWS CLI) 或 API 工具将其导入 Amazon EC2。(AWS Console不支持从VM导入AWS的操作功能。) 从总体上看,要将VM导入到Amazon EC2中,需要经过以下五个步骤: 1. 安装 AWS CLI。 2. 为 VM 导入 Amazon EC2 做准备。 3. 从虚拟化环境中导出 VM。 4. 将 VM 导入 Amazon EC2。 5. 在 Amazon EC2 中启动实例。 本次实验使用VMware Workstation 10,把Ubuntu原生镜像ubuntu-12.04.5-desktop-amd64.iso导入到VMware Workstation 10。自行个性化操作后,利用VMware Workstation 10导出OVF映像的功能,获得VM的vmdk文件。并用AWS CLI,以流优化型 ESX 虚拟机磁盘 […]

Read More