首页 文章 精选 留言 我的

精选列表

搜索[优化],共10000篇文章
优秀的个人博客,低调大师

利用SDN&NFV优化数据中心

SDN和NFV正影响着IT、数据中心和电信的融合。这些技术不仅可以给管理基础设施IT数据中心提供新的机遇,而且随着网络的可编程性,NFV和SDN也让企业数据中心实现更大的弹性灵活度,并给数据中心管理人员更强的灵活性和可扩展性来预期改变市场需求和保持客户期望的领先地位。 软件定义网络新方法 Gartner已 经定义软件定义网络SDN作为“一种新的方法来设计、编译和操作网络,旨在专注于提供业务的敏捷性,同时降低资本和运营成本”。该公司透露,到2017 年,将有10%的客户应用设备进行网络虚拟化。除此以外,根据行业分析师预测,在未来五年内,更多的网络流量将被虚拟化。 网络功能虚拟化(NFV)是一种利用网络IT虚拟化技术来虚拟网络节点功能(如Firewall、router、IDS入侵检测系统等)的整个类进入到被连接或链接的编译块中来创建通信服务。NFV目的是使用计算虚拟化和可用存储方案减少依赖性和相关硬件的限制。 随着企业正在从内部数据中心转变到主机托管设备服务,不同于传统IT基础架构元素,从物理服务器逐步演进到虚拟化、软件定义架构、云服务。DCD智 能预测,2014到2020年间,在企业内部服务器托管IT基础设施的增长率限制在大约1.29%的CAGR(年均复合增长率)。对于托管、外包和共享设 施空间,在相同期间,增长率预计在9%的CAGR,全部的数据中心空间在全球范围内将从36百万平方米增长到46百万平方米,但内部空间不足够使用,这一 趋势表明需要增加虚拟化技术和云外部和内部部署服务来减少空间的使用。 业内人士观点 作为数据中心特别是DCIM解决方案企业软件供应商,他们正看到SDN和NFV的出现,特别是为客户打造新的数据中心或整合现有基础设施成为替代性设施,在大的电信供应商中,对实施SDN和NFV技术也有极大的兴趣。 现有的异构内部数据中心中,很多都还没有应用SDN技术。但是,这只是初期的,因为大多数数据中心仍然通过在筒仓管理,意味着每个团队负责不同的服 务以及相应的IT基础设施来支持它,会造成不同筒仓间的差异带来更多的复杂性和挑战性,这也将促进SDN和NFV的发展。一个团队通常负责IT堆栈,另一 个负责管理网络,为了实现SDN和NFV技术,这些所属组织的分界及标准必须统一,为了提供所有IT资产和资源集中的访问和控制。 随着数据中心的扩展,且为了与不断增长的需求保持同步,本身挑战在于技术部署过程。现今并发部署方案已经存在,即一部分数据中心在SDN模式下工 作,其余部分仍使用旧的技术进行操作,数据中心管理者需要明确透明的观点理论应用到现有的物理基础设施,且其他部分需要直接链接到虚拟化资产和技术领域 中,这将会导致形成一个困难的过渡阶段。 为了实现自动化服务,维护服务质量和管理数据中心需要向虚拟化基础设施转变的能力,有必要对现有可用物理基础设施进行所有的详细数据统计,对其进行分析,SDN和NFV技术将为数据中心和互联网提供巨大益处。 SDN和NFV可以增加灵活性和服务交付的敏捷性,缩短对市场推出的时间,有助于自动完成很多任务,并提供需要的网络能力,数据中心将更加有效的工作并能够启动服务阵列,推动数据中心的发展。 作者:SDNLAB 来源:51CTO

优秀的个人博客,低调大师

map和reduce 个数的设定 (Hive优化)经典

一、 控制hive任务中的map数:1. 通常情况下,作业会通过input的目录产生一个或者多个map任务。 主要的决定因素有: input的文件总个数,input的文件大小,集群设置的文件块大小(目前为128M, 可在hive中通过set dfs.block.size;命令查看到,该参数不能自定义修改);2. 举例: a) 假设input目录下有1个文件a,大小为780M,那么hadoop会将该文件a分隔成7个块(6个128m的块和1个12m的块),从而产生7个map数 b) 假设input目录下有3个文件a,b,c,大小分别为10m,20m,130m,那么hadoop会分隔成4个块(10m,20m,128m,2m),从而产生4个map数 即,如果文件大于块大小(128m),那么会拆分,如果小于块大小,则把该文件当成一个块。3. 是不是map数越多越好? 答案是否定的。如果一个任务有很多小文件(远远小于块大小128m),则每个小文件也会被当做一个块,用一个map任务来完成, 而一个map任务启动和初始化的时间远远大于逻辑处理的时间,就会造成很大的资源浪费。 而且,同时可执行的map数是受限的。 4. 是不是保证每个map处理接近128m的文件块,就高枕无忧了? 答案也是不一定。比如有一个127m的文件,正常会用一个map去完成,但这个文件只有一个或者两个小字段,却有几千万的记录, 如果map处理的逻辑比较复杂,用一个map任务去做,肯定也比较耗时。 针对上面的问题3和4,我们需要采取两种方式来解决:即减少map数和增加map数;如何合并小文件,减少map数? 假设一个SQL任务: Select count(1) from popt_tbaccountcopy_mes where pt = ‘2012-07-04’; 该任务的inputdir /group/p_sdo_data/p_sdo_data_etl/pt/popt_tbaccountcopy_mes/pt=2012-07-04 共有194个文件,其中很多是远远小于128m的小文件,总大小9G,正常执行会用194个map任务。 Map总共消耗的计算资源: SLOTS_MILLIS_MAPS= 623,020 我通过以下方法来在map执行前合并小文件,减少map数: set mapred.max.split.size=100000000; set mapred.min.split.size.per.node=100000000; set mapred.min.split.size.per.rack=100000000; set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; 再执行上面的语句,用了74个map任务,map消耗的计算资源:SLOTS_MILLIS_MAPS= 333,500 对于这个简单SQL任务,执行时间上可能差不多,但节省了一半的计算资源。 大概解释一下,100000000表示100M, set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;这个参数表示执行前进行小文件合并, 前面三个参数确定合并文件块的大小,大于文件块大小128m的,按照128m来分隔,小于128m,大于100m的,按照100m来分隔,把那些小于100m的(包括小文件和分隔大文件剩下的), 进行合并,最终生成了74个块。 如何适当的增加map数? 当input的文件都很大,任务逻辑复杂,map执行非常慢的时候,可以考虑增加Map数,来使得每个map处理的数据量减少,从而提高任务的执行效率。 假设有这样一个任务: Select data_desc, count(1), count(distinct id), sum(case when …), sum(case when ...), sum(…) from a group by data_desc 如果表a只有一个文件,大小为120M,但包含几千万的记录,如果用1个map去完成这个任务,肯定是比较耗时的,这种情况下,我们要考虑将这一个文件合理的拆分成多个, 这样就可以用多个map任务去完成。 set mapred.reduce.tasks=10; create table a_1 as select * from a distribute by rand(123); 这样会将a表的记录,随机的分散到包含10个文件的a_1表中,再用a_1代替上面sql中的a表,则会用10个map任务去完成。 每个map任务处理大于12M(几百万记录)的数据,效率肯定会好很多。 看上去,貌似这两种有些矛盾,一个是要合并小文件,一个是要把大文件拆成小文件,这点正是重点需要关注的地方, 根据实际情况,控制map数量需要遵循两个原则:使大数据量利用合适的map数;使单个map任务处理合适的数据量; 二、 控制hive任务的reduce数:1. Hive自己如何确定reduce数: reduce个数的设定极大影响任务执行效率,不指定reduce个数的情况下,Hive会猜测确定一个reduce个数,基于以下两个设定: hive.exec.reducers.bytes.per.reducer(每个reduce任务处理的数据量,默认为1000^3=1G) hive.exec.reducers.max(每个任务最大的reduce数,默认为999) 计算reducer数的公式很简单N=min(参数2,总输入数据量/参数1) 即,如果reduce的输入(map的输出)总大小不超过1G,那么只会有一个reduce任务; 如:select pt,count(1) from popt_tbaccountcopy_mes where pt = '2012-07-04' group by pt; /group/p_sdo_data/p_sdo_data_etl/pt/popt_tbaccountcopy_mes/pt=2012-07-04 总大小为9G多,因此这句有10个reduce2. 调整reduce个数方法一: 调整hive.exec.reducers.bytes.per.reducer参数的值; set hive.exec.reducers.bytes.per.reducer=500000000; (500M) select pt,count(1) from popt_tbaccountcopy_mes where pt = '2012-07-04' group by pt; 这次有20个reduce 3. 调整reduce个数方法二; set mapred.reduce.tasks = 15; select pt,count(1) from popt_tbaccountcopy_mes where pt = '2012-07-04' group by pt;这次有15个reduce4. reduce个数并不是越多越好; 同map一样,启动和初始化reduce也会消耗时间和资源; 另外,有多少个reduce,就会有多少个输出文件,如果生成了很多个小文件,那么如果这些小文件作为下一个任务的输入,则也会出现小文件过多的问题;5. 什么情况下只有一个reduce; 很多时候你会发现任务中不管数据量多大,不管你有没有设置调整reduce个数的参数,任务中一直都只有一个reduce任务; 其实只有一个reduce任务的情况,除了数据量小于hive.exec.reducers.bytes.per.reducer参数值的情况外,还有以下原因: a) 没有group by的汇总,比如把select pt,count(1) from popt_tbaccountcopy_mes where pt = '2012-07-04' group by pt; 写成 select count(1) from popt_tbaccountcopy_mes where pt = '2012-07-04'; 这点非常常见,希望大家尽量改写。 b) 用了Order by c) 有笛卡尔积 通常这些情况下,除了找办法来变通和避免,我暂时没有什么好的办法,因为这些操作都是全局的,所以hadoop不得不用一个reduce去完成; 同样的,在设置reduce个数的时候也需要考虑这两个原则:使大数据量利用合适的reduce数;使单个reduce任务处理合适的数据量; 转自http://blog.sina.com.cn/s/blog_9f48885501017dua.html 本文转自茄子_2008博客园博客,原文链接:http://www.cnblogs.com/xd502djj/p/3460205.html,如需转载请自行联系原作者。

优秀的个人博客,低调大师

Elephant:Hadoop和Spark的优化“神器”

美国加州软件公司Pepperdata的应用程序分析软件建立在Dr. Elephant(Dr. Elephant 是Hadoop和Spark的性能监视和调优工具)开源项目上。主要目的是让更多的Hadoop和Spark应用程序投入生产。 Pepperdata的应用程序分析器作为早期访问版本,基于去年推出的Apache开源项目Dr. Elephant。Dr. Elephant项目的贡献者包括Airbnb,Foursquare,Pepperdata等。 Dr. Elephant软件通过活动日志解析,适用于已知的良好部署规则,并提供有关Hadoop应用程序运行状况的报告。 这可能是试图运行多个Hadoop作业的团队的有效措施。通常,这样的团队几乎没有指导,需要深层次的Java编程技能来确定其Hadoop集群的效率。 加州LinkedIn公司的高级软件工程师Carl Steinbach表示,去年开源后,Apache Spark部署规则已被添加到Dr. Elephant中,支持Oozie和Airflow工作流调度程序。Spark历史记录器的增强功能现在也是包的一部分。 Steinbach说,实际上,Dr. Elephant承担了审查工作表现和建议调查工作的艰巨任务。Dr. Elephant使你不必学习如何调整工作,它会告诉你为什么需要作出改变。Steinbach说:“你甚至不需要Java工程师。” 基于Steinbach的经验,程序员调整Hadoop的能力是非常重要的。作为LinkedIn Hadoop开发团队的技术主管,Steinbach及其同事在许多Hadoop应用程序中投入使用。他们参加了许多代码审查会议,并提出了结合Dr. Elephant的一些最佳做法,所以更多的程序员可以在Hadoop的生产中取得成功。 及时修复问题Steinbach表示,他已经在LinkedIn上看到了积极的效果,因为Dr. Elephant的使用已经扩大。这是因为它在大数据集群上运行的其他作业的上下文中提供了单独的作业配置文件。 Steinbach说:“你不仅可以看到你的工作,也可以看到其他人的工作。而且,如果看到工作出现问题,就会给我们带来一种积极的压力,然后进行及时地更正。在这里,‘做正确的事情’意味着对工作表现进行微调。” Dr. Elephant规则或启发式在某种程度上类似于一年级医学院校的教科书,就像观察症状并提出有效的修复建议。Steinbach说。 例如,Dr. Elephant可能发现的性能瓶颈,包括MapReduce处理偏移问题或太多垃圾收集开销。它在第一种情况下的反应可能是重新分配数据,而在第二种情况下,响应可能是调整Java虚拟机中的垃圾收集设置。 Steinbach表示,自从开源以来,Dr. Elephant已经被应用到更大的大数据工作负载列表中,因此它已经涵盖了更多样化的Hadoop和Spark工作类型。 他指出,Pepperdata已经将补丁提供给了开源项目,并且能够提供重要的新功能。 跟踪群集瓶颈像Dr. Elephant这样的工具有助于转发DevOps的概念,开发人员在确保应用运行良好方面发挥更大的作用。该工具不需要系统操作员和开发人员之间进行太多繁琐的交流。 Pepperdata公司的首席执行官Ash Munshi表示,应用程序分析工具使开发人员更好地了解实际工作中对DevOps的重要作用,他说,Pepperdata是基于Dr. Elephant的应用程序分析器提供服务,并且它提供了附加的上下文数据,以更好地传达在大数据作业正在运行时在大型集群上发生的情况。它加入了一个Pepperdata软件套件,其中包括一个集群分析器,容量分析器和一个策略执行器。 根据Munshi的说法,到目前为止,Hadoop性能跟踪的很多工具都面向系统运营商,但他表示,他预计开发人员的应用程序分析工具数量将会扩大。 本文转自d1net(转载)

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册