
Hadoop
文章平均质量分 82
tinyid
Java/Python
Hadoop/Spark/Presto/Kafka/Druid
numpy/matplotlib/pandas/scipy
展开
-
使用HDFS FileSystem实例时应该注意的问题
概述对于通过编程,使用API来对HDFS进行操作的场景,其中一个需要考虑的问题是如何管理FileSystem实例(确切地说是DistributedFileSystem实例),通过查询文档,发现它是线程安全的但是这里的“线程安全”是指客户端的操作(创建文件夹、删除文件夹、创建文件...),但是FileSystem实例本身在不同线程间共享,却不是“安全”的。如果有两个线程使用同一个FileSystem实例进行操作,那么在线程任务中一定不能调用FileSystem实例的close方法,因为关闭之后,另原创 2021-05-21 11:22:32 · 1881 阅读 · 0 评论 -
跨国际链路的数据服务系统架构设计的一种实现思路
现在数据在互联网产品中发挥的作用越来越大,很多公司都开始收集数据、整理数据,之后再数据建模、分析数据;最终我们得到的是知识,是某种规律的发现。发现知识和规律之后,我们需要将这些知识和规律运用到产品的改进或者运营中去。有些知识可以渗透在整个产品的设计中,比如说,我们通过数据分析发现,对于某种类型的网站的用户,他们大多数喜欢暖色调,那么我们就可以在设计界面的时候,多去使用一些暖色调;但是有些知识却不能原创 2012-07-30 16:15:12 · 2077 阅读 · 0 评论 -
一个数据应用闭环
收集:各种开源的分布式日志收集系统:Scribe, Flume等等存储可以同时包含各种不同的存储类型,可根据不同的需求增减相应的存储类型:底层存储:能够存储大量的数据,最好具有可扩展性 HDFS S3等等关系存储:MySQL,Postgresql等等键值存储:HBase,Redis等等计算计算能力也应该同时包含集中不同的类型,可根据不同的需求增减相应原创 2012-11-14 18:17:24 · 2082 阅读 · 0 评论 -
初探Flume—又一个分布式日志收集系统
以前一直在使用Facebook开源的Scribe作为项目中的日志收集系统,Scribe能够满足我们需求,不过前段时间看到了几种分布式日志收集系统的比对之后,发现Cloudera的Flume从实现上来说更加完善,最近有时间探索了一下。1 安装,作为Cloudera发行版的一大优势,安装从来不是什么麻烦的问题,只要我们将CDH的源(目前支持Ubuntu,CentOS,OpenSUSE等)加原创 2012-12-26 17:02:13 · 6801 阅读 · 4 评论 -
使用Hive UDF和GeoIP库为Hive加入IP识别功能
Hive是基于Hadoop的数据管理系统,作为分析人员的即时分析工具和ETL等工作的执行引擎,对于如今的大数据管理与分析、处理有着非常大的意义。GeoIP是一套IP映射数据库,它定时更新,并且提供了各种语言的API,非常适合在做地域相关数据分析时的一个数据源。UDF是Hive提供的用户自定义函数的接口,通过实现它可以扩展Hive目前已有的内置函数。而为Hive加入一个IP映射函数,我们原创 2013-01-30 23:53:50 · 5121 阅读 · 4 评论 -
使用Python通过Thrift接口访问HBase和Hive
HBase和Hive都提供了thrift服务,作为给其它非JVM语言访问的接口,其使用本身非常简单。以下是封装好的两个访问接口,数据最终被组织成一个列表,列表里的每个元素都是一个字典,这样元数据和数据放在一起,虽然占用的内存多了一些,但是使用起来方便了许多,并且从效果上也拉近了和关系数据库的距离,这点类似于MongoDB。如果要使用以下这两个工具类,必须首先将HBase和Hive对应的Thri原创 2013-03-21 16:10:04 · 3645 阅读 · 1 评论 -
结合Scribe/RabbitMQ/pika实现为Hive动态添加partition元数据
现有架构中通过Scribe直接向HDFS中写入数据,大部分的对数据的操作都是通过Hive来进行的,所以需要在数据进入HDFS之后就能通过Hive来访问到具体的数据,这就需要以数据驱动来添加元数据。以前使用的方式是通过按照固定的时间间隔来执行一个并行批量添加元数据的Java程序,不过那样做可能会漏掉一些没有过来的partition的添加,为此我们还必须在第二天再一次执行,确保所有的数据都被映射到了H原创 2013-04-25 11:15:41 · 1964 阅读 · 2 评论 -
HUE beeswax中文显示问题的解决方案
HUE是Cloudera推出的Hadoop生态系统的Web访问接口,基于Python Django开发。在使用过程中发现,如果提交的SQL语句中有中文的注释,提交之后,整个语句将会保存在后端的MySQL历史表中,但是再次去查看历史记录的时候,其中的中文却显示成一串问号。显然,这种问题是因为数据库编码问题导致的。为了解决这个问题,可以做如下的操作:1。 修改MySQL的配置文件(/e原创 2013-05-23 19:03:05 · 6180 阅读 · 2 评论 -
CDH3 Hadoop集群摘除节点
首先要明确一点,整个过程都是在NameNode上进行的1. 在NN上的mapred-site.xml hdfs-site.xml中分别取配置mapred.hosts, mapred.hosts.exclude,dfs.hosts,dfs.hosts.exclude;没有exclude的配置所指向的文件中先写入所有的TT,DN节点,而有exclude的配置文件中写入要摘除的节点;写法都是原创 2012-03-28 15:36:33 · 2842 阅读 · 2 评论 -
对HDFS存储粒度的一点新认识
首先HDFS是适合大文件存储的文件系统,对于过多的小文件的应用场景并不适合。以下是一些使用过程中的经验和总结,希望对大家有所帮助,当然,如有谬误,也请大家指出,欢迎讨论。过犹不及——根据数据查询需求,定制数据存储粒度为了尽可能的细化数据存储粒度,我们对于每个产品的数据,按天进行隔离存储,这样,我们在查询某个产品某天的数据时,从HDFS中读取的数据就只是那一天的数据,这样从IO层面上原创 2014-03-28 11:39:32 · 2001 阅读 · 0 评论 -
Hadoop集群服务器以及相关硬件选择的一些认识
最近由于运行了两年多的Hadoop集群,硬盘故障的现象愈加频繁,故开始着手更换集群磁盘,但是所有的DataNode的磁盘都不是热插拔的,导致,必须关机,卸开服务器然后更换磁盘。经过这次之后,我想非常有必要专门总结一下Hadoop集群的服务器选择问题。1. 硬盘更换方便: 硬盘是主要耗材, 服务器最好是具有热插拔硬盘能力的。2. 专门的硬盘安装系统: 作为Hadoop D原创 2014-04-02 14:39:07 · 8690 阅读 · 3 评论 -
[备忘]CDH5.3 Hive FAILED: RuntimeException Cannot create staging directory 报错原因
最近在从CDH5.2升级到CDH5.3后,发现启动Hive执行查询语句时报以下错误:hive> select count(1) from ht_payment;FAILED: RuntimeException Cannot create staging directory 'hdfs://lambdafs/user/hive/warehouse/ht_payment/.hive-stagin原创 2015-02-05 11:43:28 · 8275 阅读 · 0 评论 -
另一种扩展并加速Hadoop计算能力的计算架构—Presto
Hadoop自身的MapReduce计算框架是非常chua原创 2014-09-25 11:13:41 · 6669 阅读 · 0 评论 -
利用virtualenv在Hadoop Streaming中使用完全个性化的Python解释器
在使用Python编写Hadoop Streaming作业的过程中,我们发现需要使用一些比较复杂的第三方库,比如numpy,scipy,scikit-learn,pandas等等。而这些库通过简单的zipimport机制又不能正常在工作节点上执行,主要原因是这些库中,有些是有C共享库依赖的。为了能够解决这个问题,最笨的办法就是,在所有的工作节点上都部署一套相同的Python解释器,并安原创 2016-03-01 14:24:08 · 4615 阅读 · 2 评论 -
Hadoop备忘:Reduce阶段Iterable<VALUEIN> values中的每个值都共享一个对象
/** * Iterate through the values for the current key, reusing the same value * object, which is stored in the context. * @return the series of values associated with the current key. All of原创 2016-03-31 16:11:22 · 3693 阅读 · 1 评论 -
Hive应用性能优化
1. 将表分区(Partitioned Table)通过将表划分为相互独立的分区,对应于HDFS上相互独立数据目录,在查询时通过指定分区列上的条件,将读取数据的范围限定在关心的数据上,而不需要读取全表数据,继而提升查询性能;通过CREATE TABLE语句实现。2. 分桶(Bucked Table)所谓分桶就是将表中的内容以某列为基准,对所指定的桶的个数N进行模运算,继而将数据划分成N份,对应于H...原创 2018-07-03 11:42:36 · 474 阅读 · 0 评论 -
R+Hadoop Rhipe部署
R版本R-2.14.2Rhipe版本0.66protobuf版本2.4.1首先安装R语言软件,需要注意configure时,先设置几个环境变量,编译长shared lib cd R-2.14.2export CFLAGS=-fPICexport CXXFLAGS=-fPIC./configure --with-x=no --enable-R-shlib原创 2012-03-12 14:41:49 · 2907 阅读 · 0 评论 -
hive配置远程metastore的方法
hive配置远程metastore的方法: 1)首先配置hive使用本地mysql存储metastore(服务器A 111.121.21.23)(也可以使用远程mysql存储) 2)配置完成后,在服务器A启动服务:/etc/init.d/hadoop-hive-metastore start (默认监听端口是:9083) 3)配置hive客户端,修改原创 2012-03-28 18:11:50 · 4730 阅读 · 0 评论 -
Hadoop 任务分解
从高层看,有四个独立的实体: - 客户端,提交MapReduce任务- jobtracker,协调任务的运行。jobtracker是一个Java应用,它的主类是JobTracker- tasktrackers,运行被分割的任务。tasktrackers是一个Jav翻译 2011-09-15 18:44:08 · 1070 阅读 · 0 评论 -
Hbase数据模型
介绍: BigTable数据模型和后来的HBase数据模型相似,因为后者是克隆的前者,这种数据模型适用于数据密集型的系统。从关系型数据库获得可伸缩性并不能通过简单地添加机器来完成,因为它的数据模型是基于单机架构的。比如,在两个表上的JOIN翻译 2011-09-15 18:52:59 · 1317 阅读 · 1 评论 -
Hive数据操纵语言
修改Hive中的数据有两种主要的方式:加载文件到表中HIVE在加载数据到表中的时候并不作任何的转换。现在的加载操作只是纯的复制/移动操作,将数据文件移动到对应的hive表的位置。load data [local] inpath 'filepath' [over翻译 2011-02-11 12:13:00 · 2730 阅读 · 1 评论 -
Hadoop/Hive简介
Hadoop是一个存储计算框架,主要由两部分组成:存储(Hadoop分布式文件系统-HDFS)计算(MapReduce计算框架)Hadoop分布式文件系统这是一种文件系统实现,类似于NTFS,ext3,ext4等等,不过它是建立在更高的层次之上的。在HDFS上存储的文件被分成块(每块默认未64M,比一般的文件系统块大小大的多,可调)分布在原创 2011-11-22 15:01:13 · 4083 阅读 · 0 评论 -
hive中的外表EXTERNAL TABLE
原文:http://www.oratea.net/?p=489在hive中,外表是个很重要的组成部分,通过外表可以很方便进行数据的共享。因为普通的表会将数据文件拷贝自己的目录下,这样想要分享数据只能保存多份数据。但是外表很好的解决了这个问题。CREATE EXTERNAL TABLE sunwg_test09(id INT, name string)ROW FORMAT转载 2011-11-02 15:18:21 · 19396 阅读 · 1 评论 -
关于HDFS数据流的一点备忘
以前工作的时候曾经有个想法,就是将集群中存储的文件做一次遍历,把没有压缩的压缩掉!可一直没有时间实现,今天闲来无事,研究了一下,以下代码应该是核心了,也与大家一起分享一下:从这个例子扩展,可以遍历HDFS将需要压缩的文件用指定的压缩格式进行压缩。import java.io.BufferedInputStream;import java.net.URI;原创 2011-11-08 15:18:34 · 1372 阅读 · 0 评论 -
Hadoop二次排序
MapReduce框架在把记录到达reducers之前会将记录按照键排序。对于任意一个特殊的键,然而,值是不排序的。甚至是,值在两次执行中的顺序是不一样的,原因是它们是从不同的map中来的,这些不同的map可能在不同的执行过程中结束的先后顺序不确定。通常情况下,大多数的MapReduce程序的reduce函数不会依赖于值的顺序。然而,我们也可通过以一种特殊的方式排序和分组键,来指定值的顺序。翻译 2011-11-10 01:10:59 · 5612 阅读 · 0 评论 -
对Hadoop二次排序的理解
MR默认会对键进行排序,然而有的时候我们也有对值进行排序的需求。满足这种需求一是可以在reduce阶段排序收集过来的values,但是,如果有数量巨大的values可能就会导致内存溢出等问题,这就是二次排序应用的场景——将对值的排序也安排到MR计算过程之中,而不是单独来做。首先我们要了解java中排序的机制,在java中一切都是对象,而在我们的基本数据类型中都有本类的比较策略,这样任何原创 2011-11-11 02:40:41 · 11476 阅读 · 0 评论 -
Hadoop之更快的排序
键默认的排序处理是,从一个流中读键类型的实例,使用键类型的readFields()方法来解析字节流,然后对这两个对象调用compareTo()方法。为了更快的排序,可以只通过检视字节流而不用解析出包含在其中的数据来判断这两个key的顺序。比如,考虑比较字符串文本。如果字符按照顺序读入,我们就可以在第一个字符不同的地方确定它们的顺序。即使是需要读入所有的字节,对象自身也没有初始化的必要。要支持这个高翻译 2011-11-11 18:06:10 · 1968 阅读 · 0 评论 -
Hadoop之个性化数据类型
Hadoop在与用户写的Mapper和Reducer通信的时候,总是使用类型化的数据:从文件读入到Mapper中,Mappers向Reducers提交和Reducers到输出文件,都是存储在Java对象中的。Writable 类型可以和文件和网络相互通信的对象必须遵循特定的接口,叫做Writable,它允许Hadoop以一种序列化的形式读写数据以适应于传输。Hadoop提供了几个已翻译 2011-11-11 16:16:57 · 2740 阅读 · 1 评论 -
Hadoop之个性化键类型
前面我们的Piont3D类型能够作为一个值来满足mapper的使用。但是如果我们也想用Point3D对象作为键呢?在Hadoop的MR中,如果向一个reduce任务分发不同的(key, value)对,reducer将有序地对键进行处理。所以键的类型必须实现一个更加严格的接口,WritableComparable。除了它是一个Writable,可以被在网络传输之外,它们也遵循Java的Compar翻译 2011-11-11 16:34:41 · 1009 阅读 · 0 评论 -
关于Hadoop的InputFormat类
org.apache.hadoop.mapreduce.InputFormat是一个抽象类,关于这个抽象类的功能描述如下:首先为Job验证输入;将输入的文件分成逻辑上的splits,每个split会被应用到一个单独的mapper上;提供RecorderReader的实现,用来从逻辑split中一点一点的收集数据到mapper中。这个抽象类中,有两个抽象方法需要实现:1.原创 2011-11-12 20:16:13 · 2647 阅读 · 0 评论 -
HBase客户端程序
import java.io.IOException;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.hbase.HBaseConfiguration;import org.apache.hadoop.hbase.HColumnDescriptor;import org.apache.hadoop.翻译 2011-12-15 16:04:21 · 2578 阅读 · 0 评论 -
HDFS读取文件过程
从HDFS中读取一个文件,都需要做些什么呢?我们拿一个简单的例子来看一下:import java.io.InputStream;import java.net.URI;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop原创 2011-12-26 13:04:25 · 7013 阅读 · 0 评论 -
Hadoop集群硬件选择文章两篇
http://www.cloudera.com/blog/2010/03/clouderas-support-team-shares-some-basic-hardware-recommendations/http://hortonworks.com/best-practices-for-selecting-apache-hadoop-hardware/转载 2011-12-27 14:32:37 · 1282 阅读 · 0 评论 -
MapReduce工作流
当处理变得非常复杂的时候,复杂性通过更多MapReduce任务,而不是更多的map和reduce函数来适应。换句话说,作为一个经验规则,考虑添加更多的jobs,而不是添加更多的复杂性给jobs。 对于更复杂的问题,值得考虑高层语言来代替MapReduce,像是Pig,Hi翻译 2011-09-15 18:42:48 · 2437 阅读 · 0 评论