`
zhangxiong0301
  • 浏览: 352325 次
社区版块
存档分类
最新评论
文章列表

vmstat

root@localhost ~]# vmstat -n 3       (每个3秒刷新一次) procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----r b   swpd   free   buff cache   si   so    bi    bo   in    cs us sy id wa1 0    144 186164 105252 2386848    0    0    18   166   83     2 48 21 31 0 2 0    144 189620 105 ...

hive优化(3)

    博客分类:
  • HIVE
个人认为总体两种思想: 1、让服务器尽可能的多做事情,榨干服务器资源,以最高系统吞吐量为目标 再好的硬件没有充分利用起来,都是白扯淡。 比如: (1)  启动一次job尽可能的多做事情,一个job能完成的事情,不要两个job来做  通常来说前面的任务启动可以稍带一起做的事情就一起做了,以便后续的多个任务重用,与此紧密相连的是模型设计,好的模型特别重要. (2) 合理设置reduce个数 reduce个数过少没有真正发挥hadoop并行计算的威力,但reduce个数过多,会造成大量小文件问题,数据量、资源情况只有自己最清楚,找到个折衷点, (3) 使用hive.exec.par ...

hive优化(4)

    博客分类:
  • HIVE
一、join优化 Join查找操作的基本原则:应该将条目少的表/子查询放在 Join 操作符的左边。原因是在 Join 操作的 Reduce 阶段,位于 Join 操作符左边的表的内容会被加载进内存,将条目少的表放在左边,可以有效减少发生内存溢出错误的几率。 Join查找操作中如果存在多个join,且所有参与join的表中其参与join的key都相同,则会将所有的join合并到一个mapred程序中。 案例: SELECT a.val, b.val, c.val FROM a JOIN b ON (a.key = b.key1) JOIN c ON (c.key = b.key1)  ...
很多文档中描述,Mapper的数量在默认情况下不可直接控制干预,因为Mapper的数量由输入的大小和个数决定。在默认情况下,最终input占据了多少block,就应该启动多少个Mapper。如果输入的文件数量巨大,但是每个文件的size都小于HDFS的blockSize,那么会造成启动的Mapper等于文件的数量(即每个文件都占据了一个block),那么很可能造成启动的Mapper数量超出限制而导致崩溃。这些逻辑确实是正确的,但都是在默认情况下的逻辑。其实如果进行一些客户化的设置,就可以控制了。 在Hadoop中,设置Map task的数量不像设置Reduce task数量那样直接,即:不 ...

hive优化(2)

    博客分类:
  • HIVE
Hive是将符合SQL语法的字符串解析生成可以在Hadoop上执行的MapReduce的工具。 使用Hive尽量按照分布式计算的一些特点来设计sql,和传统关系型数据库有区别, 所以需要去掉原有关系型数据库下开发的一些固有思维。   基本原则: 1:尽量尽早地过滤数据,减少每个阶段的数据量,对于分区表要加分区,同时只选择需要使用到的字段 select ... from A join B on A.key = B.key where A.userid>1

hive优化

    博客分类:
  • HIVE
hive.optimize.cp=true:列裁剪hive.optimize.prunner:分区裁剪hive.limit.optimize.enable=true:优化LIMIT n语句hive.limit.row.max.size=1000000:hive.limit.optimize.limit.file=10:最大文件数   1. 本地模式(小任务):需要满足以下条件:  1.job的输入数据大小必须小于参数:hive.exec.mode.local.auto.inputbytes.max(默认128MB)
        最近有个需求,需要把一个用户的应用使用情况组装成一个GSON字符串,通过UDAF实现了这一功能。具体来说:一张表如下: meid app usecnt usetime meid1 com.yulong.x 1 2 meid1 com.baidu.x 2 5 meid2 com.tencent.x 3 8 最终要把同一个用户的应用使用情况做成json串,比如结果中的一条数据如下:   {"AppUsageStat": [ { "apName&qu ...
在用Hive进行ETL的时候,对于一些复杂的数据处理逻辑,往往不能用简单的HQL来解决,这个时候就需要使用UDAF了。   对于底层的内容还没有细看,先从应用的角度来说一下吧。 使用UDAF需要实现接口GenericUDAFResolver2,或者继承抽象类AbstractGenericUDAFResolver。   UDAF主要分为2个部分,第一个部分是对传入参数进行校验,数据类型的校验。然后根据传入的数据类型不同调用具体的处理逻辑。 比如说,自己写了一个SUM,SUM对于Long类型和Double类型进行求和,没有问题。 但是,如果传入的参数是一个Array呢?这个时候,就需 ...
介绍 hive的用户自定义聚合函数(UDAF)是一个很好的功能,集成了先进的数据处理。hive有两种UDAF:简单和通用。顾名思义,简单的UDAF,写的相当简单的,但因为使用Java反射导致性能损失,而且有些特性不能使用,如可变长度参数列表。通用UDAF可以使用​​所有功能,但是UDAF就写的比较复杂,不直观。 本文只介绍通用UDAF。 UDAF是需要在hive的sql语句和group by联合使用,hive的group by对于每个分组,只能返回一条记录,这点和mysql不一样,切记。   UDAF开发概览 开发通用UDAF有两个步骤,第一个是编写resolver类,第二个是编写 ...

zero-copy

    博客分类:
  • JAVA
Many Web applications serve a significant amount of static content, which amounts to reading data off of a disk and writing the exact same data back to the response socket. This activity might appear to require relatively little CPU activity, but it's somewhat inefficient: the kernel reads the data ...

KAFKA设计

Kafka在提高效率方面做了很大努力。Kafka的一个主要使用场景是处理网站活动日志,吞吐量是非常大的,每个页面都会产生好多次写操作。读方面,假设每个消息只被消费一次,读的量的也是很大的,Kafka也尽量使读的操作更轻量化。 我们之前讨论了磁盘的性能问题,线性读写的情况下影响磁盘性能问题大约有两个方面:太多的琐碎的I/O操作和太多的字节拷贝。I/O问题发生在客户端和服务端之间,也发生在服务端内部的持久化的操作中。消息集(message set)为了避免这些问题,Kafka建立了“消息集(message set)”的概念,将消息组织到一起,作为处理的单位。以消息集为单位处理消息,比以单个的消 ...
在使用hive开发数据分析代码时,经常会遇到需要改变运行参数的情况,比如select语句中对日期字段值的设定,可能不同时间想要看不同日期的数据,这就需要能动态改变日期的值。如果开发量较大、参数多的话,使用变量来替 ...

KEREROS协议

Kerberos协议: Kerberos协议主要用于计算机网络的身份鉴别(Authentication), 其特点是用户只需输入一次身份验证信息就可以凭借此验证获得的票据(ticket-granting ticket)访问多个服务,即SSO(Single Sign On)。由于在每个Client和Service之间建立 ...
本文翻译自:http://java.sun.com/developer/technicalArticles/Security/jaasv2/ 传统的JAVA安全机制没有提供必要的架构支持传统的认证和授权;在J2SE里的安全是基于公钥密码体系和代码签名。也就是说,认证是基于在JVM里执行 代码的思想,并且没有对资源请求提供策略。而且授权也是基于这样的概念--代码试图去使用一个计算机资源。Java认证和授权服务(JAAS)也就被设计 成去应付这些缺点。 JAAS使用基于用户的的访问控制增加了这个已经存在的基于代码的访问控制机制,也提高了认证能力。这样你赋予的权限不仅是什么代码在运行,而且可以是谁 ...
本文翻译自:http://java.sun.com/developer/technicalArticles/Security/jaasv2/ 传统的JAVA安全机制没有提供必要的架构支持传统的认证和授权;在J2SE里的安全是基于公钥密码体系和代码签名。也就是说,认证是基于在JVM里执行 代码的思想,并且没有对资源请求提供策略。而且授权也是基于这样的概念--代码试图去使用一个计算机资源。Java认证和授权服务(JAAS)也就被设计 成去应付这些缺点。 JAAS使用基于用户的的访问控制增加了这个已经存在的基于代码的访问控制机制,也提高了认证能力。这样你赋予的权限不仅是什么代码在运行,而且可以是谁 ...
Global site tag (gtag.js) - Google Analytics