图灵奖得主John Hopcroft:计算机科学的新方向[转载]

本文是康奈尔大学计算机系工程学与应用数学教授、1986年图灵奖获得者John Hopcroft博士在《21世纪的计算大会》上的演讲稿。演讲中,他简单概述了计算机未来的一些发展方向;接下来介绍了基于科学的要求,如何支持未来的活动;最后,回答一些经常被问到的问题,比如到底我们的科学基础是什么样的。 一、个人职业生涯简介 能够参加今天的活动,能够有机会跟你们来讲一讲计算机科学未来的发展方向,我感到非常高兴。我们现在所进入的信息时代,将是我接下来演讲的背景。开始之前,请允许我简单介绍一下我自己。   康奈尔大学计算机系工程学与应用数学教授,1986年图灵奖获得者John Hopcroft博士 1964年,我毕业于电子工程系(当时还没有计算机系),而后受聘于普林斯顿电子工程系。很遗憾的是,当时的负责人说我被安排教授计算机的学科。因为没有课

Google Spanner架构

Spanner is a scalable, globally-distributed database designed, built, and deployed at Google. At the highest level of abstraction, it is a database that shards data across many sets of Paxos state machines in datacenters spread all over the world. Replication is used for global availability and geographic locality; clients automatically failover between replicas. Spanner automatically reshards data across machines as the amount of data or the number of servers changes, and it automatically migrates data across machines (even across datacenters) to balance load and in response to failures. Spanner is designed to scale up to millions of machines across hundreds of datacenters and trillions

HBase Metrics机制分析与架构总结

HBase Metrics HBase Metrics是一种监控信息实时收集机制。它负责收集的信息有: 功能性信息(Compaction Queue、Store Files个数等) JVM使用信息 (Heap Memory 的变化) rpc访问信息 借助与Hadoop Metrics同样的方式,向Ganglia汇报。 Ganglia is a scalable distributed monitoring system for high performance computing systems such as clusters and Grids. based on a hierarchical design targeted at federations of clusters relies on a multicast-based listen/announce protocol to monitor state within clusters uses a tree of point-to-point connections amongst representative cluster nodes to federate clusters and aggregate their state XML for data representation XDR for compact, portable data transport RRDto

HBase性能优化2—使用Coprocessor进行RowCount统计

对于Table内RowKey个数的统计,一直是HBase系统面临的一项重要工作,目前有两种执行该操作的方式。 1)使用MapReduce进行。可以借助HTableInputFormat实现对于Rowkey的划分,但是需要占用资源,另外由于使用的Hadoop集群提交作业,经常会遇到不能申请到资源的情况,延迟较大,不适合应用的频繁访问。 2)使用Scan+KeyOnlyFilter的方式进行。可以借助Filter的功能,尽可能实现数据在RegionServer端进行统计,减轻Client端的压力。但是,在大多数情况下,从每一个Region上进行Scan,当Table较大时,会造成非常长的延迟,用户体验下降。 基于此,我们考虑到了Coprocessor这样的新特性。 操作上,HBase-0.92.1提供了 org.apache.hadoop.hbase.coprocessor.AggregateImplementation,我们需要对于某一个Table注册该Coprocessor,具体做法为: 86e05d6ef91a

Hadoop0.23.0初探3—HDFS NN,SNN,BN和HA

前言 保证HDFS高可用是Hadoop被推广以来很多技术人员一直关心的问题,通过搜索引擎搜索也可以得到很多的方案。恰逢HDFS Federation出炉,本文将一些涉及到有关NameNode、SecondaryNameNode、BackupNode的含义与区别,以及HDFS HA框架做一个总结。除此之外,文章的最后,将介绍Hadoop-0.23.0如何配置NameNode、SecondaryNameNode、以及BackupNode。 1、HDFS元数据服务器如何工作? Namenode在第一次启动时刻之前,进行格式化,$bin/hdfs namenode -format -clusterid yourid 按照需求生成VERSION:例如我Hadoop0.23.0初探2中使用gb17作为namenode,在format之后会在dfs.hadoop.name.dir目录中生成如下的VERSION $ cat /opt/jiangbing/hdfs23/current/VERSION #Thu Dec 08 16:27:30 CST 2011 namespaceID=1787450988 clusterID=klose cTime=0 storageT

JSON vs. XML

最近参加一些公司的笔试,有些题目围绕着XML和JSON来进行的。现在对于这两种数据组织技术进行介绍和对比。 JSON介绍: JSON(JavaScript Object Notation),是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition – December 1999的一个子集。 JSON采用完全独立于语言的文本格式。JSON 是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包。 JSON建构于两种结构: “名称/值”对的集合(A collection of name/value pairs)。 值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。 JSON例子: { “programmers”: [   { “firstNameR

Java并发编程总结—Hadoop核心源码实例解读

程序设计需要同步(synchronization),原因: 1)复杂的功能要求的需要使用多线程编程,线程之间存在读写共享变量。 2)读写共享变量(shared mutual variable),JVM的内存模型(Memory model: decide when and how changes made by one thread become visuble to others)受到其它因素干扰。 3)对共享变量的操作非原子性。例如 i++;就不是原子操作,它分为两部分,(1) 读i (2) i+1写入内存。如果i是线程A和线程B共享的变量,线程A在操作(1)之后,线程调度器调度调度线程B执行i++,因此两个线程在变量i产生了不一致。注意,volatile修饰符是线程操作之前更新数据,但是,上面的问题显然不是更新数据就能解决的。 4)增加互斥区(mutual exclusion)会降低执行效率,但是这是实现数据安全、功能强大的多线程编程最为重要的部分。 5)线程之间需要