Hadoop 和数据处理

Hadoop 将许多重要特性结合在一起,这使 Hadoop 对于将大量数据分解为更小、实用的数据块非常有用。

Hadoop 的主要组件是 HDFS 文件系统,它支持将信息分布到整个集群中。对于使用这种分布格式存储的信息,可以通过一个名为 MapReduce 的系统在每个集群节点上进行单独处理。MapReduce 进程将存储在 HDFS 文件系统中的信息转换为更小的、经过处理的、更容易管理的数据块。

因为 Hadoop 可在多个节点上运行,所以可以使用它来处理大量输入数据,并将这些数据简化为更实用的信息块。此过程可使用一个简单的 MapReduce 系统来处理。

MapReduce 转换传入信息(不一定为结构化格式),将该信息转换为一种可更轻松地使用、查询和处理的结构。

例如,一种典型的用途是处理来自数百个不同应用程序的日志信息,以便可以识别特定的问题、计数或其他事件。通过使用 MapReduce 格式,您可以开始度量并查找趋势,将平常非常多的信息转换为更小的数据块。举例而言,在查看某个 Web 服务器的日志时,您可能希望查看特定页面上的特定范围中发生的错误。您可以编写一个 MapReduce 函数来识别特定页面上的特定错误,并在输出中生成该信息。使用此方法,您可从日志文件中精减多行信息,得到一个仅包含错误信息的小得多的记录集合。

理解 MapReduce

MapReduce 的工作方式分两个阶段。映射 (map) 过程获取传入信息,并将这些信息映射到某种标准化的格式。对于某些信息类型,此映射可以是直接和显式的。例如,如果要处理 Web 日志等输入数据,那么仅从 Web 日志的文本中提取一列数据即可。对于其他数据,映射可能更复杂。在处理文本信息时,比如研究论文,您可能需要提取短语或更复杂的数据块。

精减 (reduce) 阶段用于收集和汇总数据。精减实际上能够以多种不同方式发生,但典型的过程是处理一个基本计数、总和或其他基于来自映射阶段的个别数据的统计数据。

想象一个简单的示例,比如 Hadoop 中用作示例 MapReduce 的字数,映射阶段将对原始文本进行分解,以识别各个单词,并为每个单词生成一个输出数据块。reduce 函数获取这些映射的信息块,对它们进行精减,以便在所看到的每个惟一单词上进行递增。给定一个包含 100 个单词的文本文件,映射过程将生成 100 个数据块,但精减阶段可对此进行汇总,提供惟一单词的数量(比如 56 个)和每个单词出现的次数。

借助 Web 日志,映射将获取输入数据,为日志文件中的每个错误创建一条记录,然后为每个错误生成一个数据块,其中包含日期、时间和导致该问题的页面。

在 Hadoop 内,MapReduce 阶段会出现在存储各个源信息块的各个节点上。这使 Hadoop 能够处理以下大型信息集:通过允许多个节点同时处理数据。例如,对于 100 个节点,可以同时处理 100 个日志文件,比通过单个节点快得多地简化许多 GB(或 TB)的信息。

Hadoop 信息

核心 Hadoop 产品的一个主要限制是,无法在数据库中存储和查询信息。数据添加到 HDFS 系统中,但您无法要求 Hadoop 返回与某个特定数据集匹配的所有数据的列表。主要原因是 Hadoop 不会存储、结构化或理解存储在 HDFS 中的数据的结构。这正是 MapReduce 系统需要将信息分析并处理为更加结构化的格式的原因。

但是,我们可以将 Hadoop 的处理能力与更加传统的数据库相结合,使我们可以查询 Hadoop 通过自己的 MapReduce 系统生成的数据。可能的解决方案有许多,其中包括一些传统 SQL 数据库,但我们可以通过使用 Couchbase Server 来保持 MapReduce 风格(它对大型数据集非常有效)。

系统之间的数据共享的基本结构如图 1所示。

图 1. 系统之间的数据共享的基本结构

安装 Hadoop

如果您尚未安装 Hadoop,最简单的方法是使用一个 Cloudera 安装。为了保持 Hadoop、Sqoop 和 Couchbase 之间的兼容性,最好的解决方案是使用 CDH3 安装(参阅参考资料)。为此,您需要使用 Ubuntu 10.10 到 11.10 版。更高的 Ubuntu 版本会引入不兼容问题,因为它们不再支持 Cloudera Hadoop 安装所需的一个包。

在安装之前,请确保已经安装了一个 Java™ 虚拟机,确保在 JAVA_HOME 变量中为 JDK 配置了正确的主目录。请注意,您必须拥有完整的 Java 开发工具包,而不只是拥有 Java 运行时环境 (JRE),因为 Sqoop 将代码编译为 Couchbase Server 与 Hadoop 之间的导出和导入数据。

要在 Ubuntu 和类似的系统上使用 CDH3 安装,您需要执行以下步骤:

  1. 下载 CDH3 配置包。这会将 CDH3 源文件的配置添加到 apt 存储库中。
  2. 更新您的存储库缓存:$ apt-get update
  3. 安装主要 Hadoop 包:$ apt-get install hadoop-0.20
  4. 安装 Hadoop 组件(参见清单 1)。
    清单 1. 安装 Hadoop 组件
    $ for comp in namenode datanode secondarynamenode jobtracker tasktracker
    do
    apt-get install hadoop-0.20-$comp
    done

  5. 编辑配置文件,以确保您设置了核心组件。
  6. 编辑 /etc/hadoop/conf/core-site.xml,使其如清单 2所示。
    清单 2. 编辑后的 /etc/hadoop/conf/core-site.xml 文件
    <configuration><property><name>fs.default.name</name><value>hdfs://localhost:9000</value></property>
    </configuration>

    这将配置存储数据的默认 hdfs 位置。
    编辑 /etc/hadoop/conf/hdfs-site.xml(参见清单 3)。

    清单 3. 编辑后的 /etc/hadoop/conf/hdfs-site.xml 文件
    <configuration><property><name>dfs.replication</name><value>1</value></property>
    </configuration>

    这支持复制存储的数据。
    编辑 /etc/hadoop/conf/mapred-site.xml(参见清单 4)。

    清单 4. 编辑后的 /etc/hadoop/conf/mapred-site.xml 文件
    <configuration><property><name>mapred.job.tracker</name><value>localhost:9001</value></property>
    </configuration>

    这实现了 MapReduce 的作业跟踪器。

  7. 最后,编辑 Hadoop 环境,使其正确地指向 /usr/lib/hadoop/conf/hadoop-env.sh 中您的 JDK 安装目录。其中会有一个注释掉的 JAVA_HOME 变量行。您应该取消注释它,并将它设置为您的 JDK 位置。例如:export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk
  8. 现在,在您的系统上启动 Hadoop。最简单的方法是使用 start-all.sh 脚本:$ /usr/lib/hadoop/bin/start-all.sh

假设所有设置均已正确配置,您现在应有一个正在运行的 Hadoop 系统。

回页首

Couchbase Server 概述

Couchbase Server 是一个集群化的、基于文档的数据库系统,它使用一个缓存层来提供非常快的数据访问,将大部分数据都存储在 RAM 中。该系统使用多个节点和一个自动分散在整个集群上的缓存层。这实现了一种弹性,您可扩大和紧缩集群,以便利用更多 RAM 或磁盘 I/O 来帮助提升性能。

Couchbase Server 中的所有数据最终会持久存储在磁盘中,但最初会通过缓存层执行写入和更新操作,这正是提供高性能的源泉,是我们通过处理 Hadoop 数据来获得实时信息和查询内容时可利用的优势。

Couchbase Server 的基本形式是一个基本文档和基于键/值的存储。只有在您知道文档 ID 时,才能检索集群提供的信息。在 Couchbase Server 2.0 中,您可以将文档存储为 JSON 格式,然后使用视图系统在存储的 JSON 文档上创建一个视图。视图是在存储在数据库中的文档上执行的一个 MapReduce 组合。来自视图的输出是一个索引,它通过 MapReduce 函数来匹配您定义的结构。索引的存在为您提供了查询底层的文档数据的能力。

我们可以使用此功能从 Hadoop 获取已处理的信息,将该信息存储在 Couchbase Server 中,然后使用它作为查询该数据的基础。Couchbase Server 可以方便地使用一个 MapReduce 系统来处理文档和创建索引。这在用于处理数据的方法之间提供了一定的兼容性和一致性水平。

安装 Couchbase Server

安装 Couchbase Server 很容易。从 Couchbase 网站下载适合您平台的 Couchbase Server 2.0 版本(参见参考资料),使用 dpkg 或 RPM(具体依赖于您的平台)安装该包。

安装之后,Couchbase Server 会自动启动。要配置它,请打开一个 Web 浏览器,并将它指向您的机器的 localhost:8091(或使用该机器的 IP 地址远程访问它)。

按照屏幕上的配置说明进行操作。您可使用在安装期间提供的大部分默认设置,但最重要的设置是写入数据库中的数据的数据文件的位置,以及您分配给 Couchbase Server 的 RAM 量。

回页首

使 Couchbase Server 能够与 Hadoop 连接器通信

Couchbase Server 使用 Sqoop 连接器与您的 Hadoop 集群通信。Sqoop 提供了一个连接在 Hadoop 与 Couchbase Server 之间批量传输数据。

从技术上讲,Sqoop 是一个设计用于在结构化数据库与 Hadoop 之间转换信息的应用程序。Sqoop 这个名称实际上来源于 SQL 和 Hadoop。

安装 Sqoop

如果使用 CDH3 安装,您可使用报管理器来安装 Sqoop:$ sudo apt-get install sqoop

这将把 Sqoop 安装在 /usr/lib/sqoop 中。

注意:Sqoop 中一个最新的 bug 表明它有时会尝试传输uowu的数据集。修补程序包含在 Sqoop 1.4.2 版中。如果遇到问题,请尝试使用 V1.4.2 或更高的版本。

安装 Couchbase Hadoop Connector

Couchbase Hadoop Connector 是一个支持 Sqoop 与 Couchbase 之间的连接的 Java jar 文件集合。从 Couchbase 网站下载 Hadoop 连接器(参阅参考资料)。该文件封装为一个 zip 文件。解压它,然后运行其中的 install.sh 脚本,提供 Sqoop 系统的位置。例如:$ sudo bash install.sh /usr/lib/sqoop

这将安装所有必要的库和配置文件。现在我们可以开始在两个系统之间交换信息了。

将数据从 Couchbase Server 导入 Hadoop

尽管该场景不是我们这里将直接处理的场景,但需要注意我们可从 Couchbase Server 将数据导入 Hadoop。如果您在 Couchbase Server 中加载了大量数据,并希望利用 Hadoop 来处理和简化它,这可能很有用。为此,您可以使用以下命令,从 Couchbase Server 将整个数据集加载到 HDFS 中的一个 Hadoop 文件中:$ sqoop import --connect http://192.168.0.71:8091/pools --table cbdata

这里提供的 URL 是 Couchbase Server 桶池 (bucket pool) 的位置。这里指定的表实际上是 HDFS 中将存储数据的目录的名称。

数据本身被存储为来自 Couchbase Server 的信息的一种键/值转储形式。在 Couchbase Server 2.0 中,这意味着数据是使用惟一文档 ID 写出的,包含记录的 JSON 值。

将 JSON 数据写入 Hadoop MapReduce

要在 Hadoop 与 Couchbase Server 之间交换信息,需要使用一种通用语言来表达这些信息,在本例中使用的是 JSON(参见清单 5)。

清单 5. 在 Hadoop MapReduce 中输出 JSON
package org.mcslp;import java.io.IOException;
import java.util.*;import org.apache.hadoop.fs.Path;
import org.apache.hadoop.conf.*;
import org.apache.hadoop.io.*;
import org.apache.hadoop.mapred.*;
import org.apache.hadoop.util.*;
import com.google.gson.*;public class WordCount {public static class Map extends MapReduceBase implements Mapper<LongWritable,
Text, Text, IntWritable> {private final static IntWritable one = new IntWritable(1);private Text word = new Text();public void map(LongWritable key, Text value, OutputCollector<Text,
IntWritable> output, Reporter reporter) throws IOException {String line = value.toString();StringTokenizer tokenizer = new StringTokenizer(line);while (tokenizer.hasMoreTokens()) {word.set(tokenizer.nextToken());output.collect(word, one);}}}public static class Reduce extends MapReduceBase implements Reducer<Text,
IntWritable, Text, Text> {class wordRecord {private String word;private int count;wordRecord() {}}public void reduce(Text key,Iterator<IntWritable> values,OutputCollector<Text, Text> output,Reporter reporter) throws IOException {int sum = 0;while (values.hasNext()) {sum += values.next().get();}wordRecord word = new wordRecord();word.word = key.toString();;word.count = sum;Gson json = new Gson();System.out.println(json.toJson(word));output.collect(key, new Text(json.toJson(word)));}}public static void main(String[] args) throws Exception {JobConf conf = new JobConf(WordCount.class);conf.setJobName("wordcount");conf.setOutputKeyClass(Text.class);conf.setOutputValueClass(IntWritable.class);conf.setMapperClass(Map.class);conf.setReducerClass(Reduce.class);conf.setInputFormat(TextInputFormat.class);conf.setOutputFormat(TextOutputFormat.class);FileInputFormat.setInputPaths(conf, new Path(args[0]));FileOutputFormat.setOutputPath(conf, new Path(args[1]));JobClient.runJob(conf);}
}

该代码是 Hadoop 发行版所提供的字数示例的修改版。

此版本使用 Google Gson 库从处理过程的精减阶段写入 JSON 信息。为了方便起见,我们使用了一个新类 (wordRecord),它由 Gson 转换为一条 JSON 记录,这种记录是 Couchbase Server 逐个文档地处理和解析内容所需的格式。

请注意,我们没有为 Hadoop 定义一个 Combiner 类。这将阻止 Hadoop 尝试重新精减该信息,该操作在当前的代码中会失败,因为我们的精减阶段仅接收该单词和一位数,并输出一个 JSON 值。对于辅助的精减/组合阶段,我们需要解析 JSON 输入或定义一个新 Combiner 类,以便输出信息的 JSON 版本。这稍微简化了定义。

要在 Hadoop 中使用此代码,首先需要将 Google Gson 库复制到 Hadoop 目录中 (/usr/lib/hadoop/lib)。然后重新启动 Hadoop,以确保 Hadoop 已经正确识别出该库。

接下来,将您的代码编译到一个目录中:$ javac -classpath ${HADOOP_HOME}/hadoop-${HADOOP_VERSION}-core.jar:./google-gson-2.2.1/gson-2.2.1.jar -d wordcount_classes WordCount.java

现在为您的库创建一个 jar 文件:$ jar -cvf wordcount.jar -C wordcount_classes/

完成此过程后,您可以将一些文本文件复制到某个目录中,然后使用此 jar 文件将这些文本文件处理为许多独立的单词,创建一条 JSON 记录来包含每个单词和计数。例如,要在一些 Project Gutenberg 文本上处理此数据:$ hadoop jar wordcount.jar org.mcslp.WordCount /user/mc/gutenberg /user/mc/gutenberg-output

这将在我们的目录中生成已由 Hadoop 内的 MapReduce 函数统计的单词列表。

将数据从 Hadoop 导出到 Couchbase Server

要从 Hadoop 取回数据并导入 Couchbase Server 中,则需要使用 Sqoop 导出该数据:$ sqoop export --connect http://10.2.1.55:8091/pools --table ignored --export-dir gutenberg-output

此示例中忽略了--table参数,但--export-dir是要导出的信息所在的目录的名称。

回页首

在 Couchbase Server 中编写 MapReduce

在 Hadoop 中,MapReduce 函数是使用 Java 编写的。在 Couchbase Server 中,MapReduce 函数是使用 Javascript 编写的。作为一种已解释的语言,这意味着您不需要编译视图,它会支持您编辑和细化 MapReduce 结构。

要在 Couchbase Server 中创建一个视图,请打开管理控制台(在 http://localhost:8091 上),然后单击View按钮。视图收集在一个设计文档中。您可以在单个设计文档中创建多个视图,也可以创建多个设计文档。要提升服务器的总体性能,系统还支持一种可编辑的开发视图以及一个无法编辑的生产视图。生产视图无法编辑是因为这么做会使视图索引无效,并会导致需要重新构建索引。

单击Create Development View按钮并命名您的设计文档和视图。

在 Couchbase Server 内,有两个相同的函数:mapreducemap函数用于将输入数据(JSON 文档)映射到某个表。然后使用reduce函数汇总和精减该表。reduce 函数是可选的,不是索引功能所必需的,所以,出于本文的目的,我们将忽略reduce函数。

对于map函数,函数的格式如清单 6所示。

清单 6.map函数的格式
map(doc) { }

参数 doc 是每个存储的 JSON 文档。Couchbase Server 的存储格式是一种 JSON 文档,视图是使用 Javascript 语言编写的,所以我们可使用以下语句访问 JSON 中一个名为 count 的字段:doc.count

要从map函数发出信息,可以调用 emit() 函数。emit()函数接受两个参数,第一个是键(用于选择和查询信息),第二个参数是相应的值。因此,我们可以创建一个map函数来使用来输出单词和计数,如清单 7中的代码所示。

清单 7. 输出单词和计数的map函数
function (doc) {if (doc.word) {emit(doc.word,doc.count);}
}

这将为每个输出文档输出一行数据,其中包含文档 ID(实际上是我们的单词)、用作键的单词和该单词在源文本中出现的次数。可在清单 8中看到原始的 JSON 输出。

清单 8. 原始的 JSON 输出
{"total_rows":113,"rows":[
{"id":"acceptance","key":"acceptance","value":2},
{"id":"accompagner","key":"accompagner","value":1},
{"id":"achieve","key":"achieve","value":1},
{"id":"adulteration","key":"adulteration","value":1},
{"id":"arsenic","key":"arsenic","value":2},
{"id":"attainder","key":"attainder","value":1},
{"id":"beerpull","key":"beerpull","value":2},
{"id":"beware","key":"beware","value":5},
{"id":"breeze","key":"breeze","value":2},
{"id":"brighteyed","key":"brighteyed","value":1}
]
}

在输出中,id 是文档 ID,key 是您在 emit 语句中指定的键,value 是在 emit 语句中指定的值。

回页首

获取实时数据

现在我们已在 Hadoop 中处理了信息,请将它导入 Couchbase Server 中,然后在 Couchbase Server 中为该数据创建了一个视图,我们可以开始查询已处理和存储的信息了。视图可使用一个 REST 样式的 API 来访问,或者在使用一个 Couchbase Server SDK 时,通过相应的视图查询函数来访问它。

查询可通过 3 种主要选择来执行:

  • 单独的键。例如,显示与某个特定键(比如'unkind')匹配的信息。
  • 键列表。您可提供一个键值数组,这将返回其键值与一个提供的值匹配的所有记录。例如,['unkind','kind']将返回与其中一个单词匹配的记录。
  • 键范围。您可指定一个开始和结束键。

例如,要找到一个指定的单词的数量,可使用 key 参数进行查询:

http://192.168.0.71:8092/words/_design/dev_words/_view/byword?connection_timeout=60000&limit=10&skip=0&key=%22breeze%22

Couchbase Server 会很自然地采用 UTF-8 排序方式输出一个 MapReduce 的按指定的键排序的结果。这意味着您可以通过指定开始值和结束值来获取一个值范围。例如,要获取 'breeze' 与 'kind' 之间的所有单词,可使用:

http://192.168.0.71:8092/words/_design/dev_words/_view/byword?connection_timeout=60000&limit=10&skip=0&startkey=%22breeze%22&endkey=%22kind%22

该查询很简单,但非常强大,尤其是在您认识到可以将它与灵活的视图系统结合使用,生成具有您想要的格式的数据的时候。

回页首

结束语

Hadoop 本身提供了一个强大的处理平台,但没有提供从已处理的数据中实际提取有用信息的方法。通过将 Hadoop 连接到另一个系统,可使用该系统来查询和提取信息。因为 Hadoop 使用 MapReduce 进行相关处理,所以您可以通过 Couchbase Server 中的 MapReduce 系统,利用 MapReduce 的知识来提供查询平台。使用此方法,您可以在 Hadoop 中处理数据,以 JSON 文档格式将数据从 Hadoop 导出到 Couchbase Server 中,然后在 Couchbase Server 中使用 MapReduce 查询已处理的信息。

参考资料

学习

  • Apache Hadoop Project
  • Apache Hadoop 分布式文件系统
  • HadoopDB Project 网站
  • Hadoop MapReduce 教程:从此教程进一步了解 Apache.org。
  • 在云中使用 MapReduce 和负载平衡(Kirpal A. Venkatesh 等,developerWorks,2010 年 7 月):学习如何在一个云环境中实现 Hadoop MapReduce 框架,以及如何使用虚拟负载平衡来改善单节点和多节点系统的性能。
  • CDH3 安装 - Cloudera 支持:查找使用 CDH3 安装 Hadoop 的信息。
  • 大数据术语库,由 Pete Warden 编写,O'Reilly Media,ISBN:1449314597,2011 年。
  • Hadoop:权威指南,由 Tom White 编写,O'Reilly Media,ISBN:1449389732,2010 年。
  • HadoopDB: An Architectural Hybrid of MapReduce and DBMS Technologies for Analytical Workloads,Azza Abouzeid 等,VLDB Endowment 会议记录 2(1),2009 年:本文探索构建一个同时获得两种计数的最佳特性的混合系统的可能性。
  • MapReduce: Simplified Data Processing on Large Clusters,Jeffrey Dean 和 Sanjay Ghemawat,OSDI,2004 年
  • SQL/MapReduce: A practical approach to self-describing, polymorphic, and parallelizable user-defined functions,Eric Friedman 等,VLDB Endowment 会议记录 2(2),2009 年:本文介绍这种新的 UDF 方法的创建动机,以及 AsterData Systems 中的 nCluster 数据库的实现。
  • MapReduce and parallel DBMSs: friends or foes?,Michael Stonebraker 等,Commun. ACM 53(1),2010 年。
  • A Survey of Large Scale Data Management Approaches in Cloud Environments,Sherif Sakr 等,Journal of IEEE Communications Surveys and Tutorials,13(3),2011 年:本文全面调查了在云中部署数据密集型应用程序的众多方法和机制,它们在研究和行业社区都获得了大量关注。
  • James Phillips looks ahead in 2012:收听此播客,了解 CouchDB 上的进展。
  • Aaron Miller and Nitin Borwankar on CouchDB and the CouchOne mobile platform:收听此播客,进一步了解这个使用 Erlang 编写并移植到 Android 的完整堆栈应用程序环境。
  • developerWorks 业务分析专区:查找更多面向开发人员的技术资源。
  • 在developerWorks Information Management 专区,了解关于信息管理的更多信息,获取技术文档、how-to 文章、培训、下载、产品信息以及其他资源。
  • 随时关注 developerWorks技术活动和网络广播。
  • 访问 developerWorksOpen source 专区获得丰富的 how-to 信息、工具和项目更新以及最受欢迎的文章和教程,帮助您用开放源码技术进行开发,并将它们与 IBM 产品结合使用。

获得产品和技术

  • Couchbase Server:下载这个集群化的、基于文档的数据库系统。
  • Couchbase Server Hadoop Connector:下载这个支持 Sqoop 与 Couchbase 之间的连接的 Java jar 文件集合。
  • Hadoop 0.20.1、Hadoop MapReduce和Hadoop HDFS:从 Apache.org 下载所有这些软件。

结合使用 Hadoop 和 Couchbase相关推荐

  1. 关系型数据库与非关系型数据库的简介、对比和说明!!!

    关系型数据库: Oracle SQLServer Sybase Informix Access DB2 mysql vfp Ingers FoxPro 非关系型数据库: MongoDB Cassand ...

  2. HBase、Redis、MongoDB、Couchbase、LevelDB 五款主流NoSQL数据库大比拼

    在 HBase.Redis.MongoDB.Couchbase.LevelDB 五款较主流的数据库产品中,本文将主要对它们进行分析对比. 鉴于缺乏项目中的实战经验沉淀,本文内容和观点主要还是从各平台资 ...

  3. Hadoop教程(五):Flume、Sqoop、Pig、Hive、OOZIE

    在我们了解Flume和Sqoop之前,让我们研究数据加载到Hadoop的问题: 使用Hadoop分析处理数据,需要装载大量从不同来源的数据到Hadoop集群. 从不同来源大容量的数据加载到Hadoop ...

  4. Hadoop将死,图数据库成为新趋势!

    科技行业向来是以技术发展速度快著称,时值岁末,我们和多位数据库领域的业内大佬进行了深度交流,分享了他们眼中2017年的小惊喜和2018年的大展望. Endpoint Systems创始人Lucas V ...

  5. 对话Couchbase首席架构师:Couchbase是目前最好的NoSQL数据库平台

    2017年对于NoSQL来说是很有趣的一年,大数据市场充满着机遇同时也充满着变数.所以年末岁初,我们邀请了Couchbase的首席架构师Perry Krug来一起谈谈未来NoSQL的发展.市场动态以及 ...

  6. HBase、Redis、MongoDB、Couchbase、LevelDB主流 NoSQL 数据库的对比

    最近小组准备启动一个 node 开源项目,从前端亲和力.大数据下的IO性能.可扩展性几点入手挑选了 NoSql 数据库,但具体使用哪一款产品还需要做一次选型. 我们最终把选项范围缩窄在 HBase.R ...

  7. 后Hadoop时代的大数据架构

    http://zhuanlan.zhihu.com/donglaoshi/19962491 背景篇 Hadoop: 开源的数据分析平台,解决了大数据(大到一台计算机无法进行存储,一台计算机无法在要求的 ...

  8. hadoop 添加删除机器以及设置免密登录

    添加hadoop机器 先在slaves中添加机器 然后启动datanode $: ./usr/hadoop-0.20.2-cdh3u4/bin/hadoop-daemon.sh start datan ...

  9. linux环境下快速配置hadoop集群免密登录

    背景 在hadoop的日常使用过程中经常需要登录某些机器,如何更好的免密登录呢?这将为我们节省大量的时间 操作 假设你需要在A机器上免密登录B机器,那么你首先要确定B机器下是有秘钥文件的.如何确定是否 ...

最新文章

  1. 前端面试的作品示例_如何回答任何技术面试问题-包括示例
  2. VC6.0 如何改变对话框背景色
  3. Java中List的父类与子类如何转换
  4. 《跟我学java》_《跟我学Java——基础篇02》
  5. C# 网络编程之通过ip地址获取地理位置(补充)
  6. gRPC-Web发布,REST又要被干掉了?
  7. 启动go服务_内网穿透工具 FRP公网服务端、内网客户端快速配置文件说明
  8. 高精度减法(洛谷-P2142)
  9. python 机器学习第一章
  10. Docker 三剑客之 Docker Compose
  11. solr课程学习系列-solr的概念与结构(1)
  12. tensorflow中prefetch最合适的用法
  13. Java面试题全集中
  14. 51单片机实战教程基础硬件篇(一 电子元件PCB 封装库设计教程)
  15. html5 跨平台播放器,开源ckplayer 网页播放器, 跨平台(html5, mobile),flv, f4v, mp4, rt...
  16. 【论文笔记】Dynamic Convolution: Attention over Convolution Kernels
  17. Linux下使用KVM虚拟机运行MacOS和Checkra1n越狱工具
  18. zabbix4.0利用API导入导出dashboard
  19. 如何在Windows 7和Vista之间共享文件和打印机
  20. 关于Android项目中的Toast那些动画实现方式

热门文章

  1. spring mvc + ajax上传文件,页面局部刷新
  2. 某虚拟化项目中思科与华为交换机链路聚合互连案例
  3. Kali Linux渗透基础知识整理(四):维持访问
  4. ORA-12504:TNS:监听程序在CONNECT_DATA中未获得SERVICE_NAME
  5. 浅析数字签名的工作原理 【小白级别的原创文章 仅供扫盲】
  6. hadoop 基础命令
  7. ZigBee On Windows Mobile-ZigBee模块的设计制作
  8. 高效分页存储过程代码
  9. 【SSH】——Hibernate实现简单的自动建表
  10. git 查看、创建、删除 本地,远程 分支