R的入门笔记。~
Continue reading
Author Archives: debugo
JVM堆内存设置和测试
首先Java虚拟机中gc的原理,可以参见
http://www.360doc.com/content/12/1023/16/9615799_243296263.shtml
http://ifeve.com/useful-jvm-flags-part-5-young-generation-garbage-collection/
以下是一些个人总结和测试。 Continue reading
Kafka原理和集群测试
Kafka是一个消息系统,由LinkedIn贡献给Apache基金会,称为Apache的一个顶级项目。Kafka最初用作LinkedIn的活动流(activity stream)和运营数据处理管道(pipeline)的基础。它具有可扩展、吞吐量大和可持久化等特征,以及非常好的分区、复制和容错特征。
Kafka的关键设计决策
1). Kafka在设计之时为就将持久化消息作为通常的使用情况进行了考虑。
2). Kafka主要的设计约束是吞吐量,而不是功能。
3). Kafka有关哪些数据已经被使用了的状态信息保存为数据使用者(consumer)的一部分,而不是保存在服务器之上。
4). Kafka是一种显式的分布式系统。它假设,数据生产者(producer)、代理(brokers)和数据使用者(consumer)分散于多台机器之上。
而相比而言,传统的消息队列不能很好的支持(如超长的未处理数据、不能有效持久化)。对于数据的可用性,Kafka提供了两个保证:
(1). 生产者发送到Topic的分区上消息将会按照它们发送的顺序,而消费者收到的消息也是此顺序
(2). 如果一个Topic配置了复制因子( replication facto)为N, 那么可以允许N-1服务器当掉而不丢失任何已经增加的消息 Continue reading
YARN Capacity Scheduler 简介
1. 简介
YARN中基础调度单元是队列(queue),每一个在 容量调度器(Capacity Scheduler)中的队列都有下面属性:
· 短队列名
· 队列路径全名
· 相关子队列和应用的列表
· 队列的保证容量(guaranteed capacity)
· 队列的最大容量(maximum capacity)
· 有效用户和他们相关的资源分配限制的列表
· 队列的状态
· 访问控制列表(ACLs)控制队列的访问 Continue reading
Scala Note – 泛型
今天在看spark代码时,发现了spark代码中使用了大量的泛型。非OOD程序员出身表示压力很大。本文就简单整理一下Scala中的泛型。 Continue reading
Tachyon的配置和使用入门
Tachyon是一个基于内存的分布式文件系统(项目首页:tachyon-project.org),它是AmpLab的BDAS(berkeley data analytics stack)的一个重要组成。解决了丢失cache导致的重新计算,不同app(job),甚至是不同计算框架间重复的内存使用等问题。目前Spark 1.1默认支持0.5的版本。
Continue reading
Scala Note – Reflection
原文:Fun with Scala’s new Reflection API (2.10)
反射是程序可以检查、甚至修改自身的能力。在面向对象编程、函数式编程和逻辑程序设计范型中都有着悠久的历史。虽然有些语言将反射作为一个指导原则,也有很多语言逐渐发展出了反射的API等能力。Scala也在2.10引入了新的反射API,这个API比老的Manifest更加接近了实际类型系统(编译器实际上使用了TypeTags,参考官方文档typetags-manifests )。Scala在Java反射API的基础上提供了反射的原因之一是JVM擦出了泛型类型。下面让我们看下泛型类型在运行时被擦除:
1 2 3 4 5 |
case class A[T] println(A[String].isInstanceOf[A[String]]) // true println(A[String].isInstanceOf[A[Int]]) // true aswell - doesn't sounds right, no? // that's because the type of T gets erased at runtime... |
添加磁盘导致的ASM实例crash
今天核心系统将一块磁盘(EMC DMX4)添加到了ASM dg中,然后数据库RAC两个节点双双crash掉了,顿时吓了一身冷汗。 Continue reading
Scala Note – Package Object
在2.8版本之前,能放入package内的只有class、trait和object,这些对象位于package 的最顶层是目前最常见的定义。但是2.8之后,定义的所有类型也可以放到class中。如果你有一些辅助方法、变量、常量想在整个包的范围内可控,可以将其放到包的最顶层,即放到package object中。每一个package可以有一个package object,所有在package object中定义的类型都可以看作是package自身的成员。
例如,假定类Fruit和三个Fruit对象在gardening.fruits包中:
1 2 3 4 5 6 |
// in file gardening/fruits/Fruit.scala package gardening.fruits case class Fruit(name: String, color: String) object apple extends Fruit("Apple", "green") object plum extends Fruit("Plum", "blue") object banana extends Fruit("Banana", "yellow") |
假定你将一个常量planted和方法showFruit直接加入到gardening包中,使用下面的方法可以做到:
1 2 3 4 5 6 7 8 |
// in file gardening/fruits/package.scala package gardening package object fruits { val planted = List(apple, plum, banana) def showFruit(fruit: Fruit) { println(fruit.name +"s are "+ fruit.color) } } |