天道酬勤,学无止境

使用python来访问Hadoop HDFS存储实现文件的操作

在调试环境下,咱们用hadoop提供的shell接口测试增加删除查看,但是不利于复杂的逻辑编程


查看文件内容


www.xiaorui.cc


用python访问hdfs是个很头疼的事情。。。。


这个是pyhdfs的库

import pyhdfs
fs = pyhdfs.connect("192.168.1.1", 9000)
pyhdfs.get(fs, "/rui/111", "/var/111")
f = pyhdfs.open(fs, "/test/xxx", "w")
pyhdfs.write(fs, f, "fuck\0gfw\n")
pyhdfs.close(fs, f)
pyhdfs.disconnect(fs)


pyhdfs的安装过程很吐血


svn checkout http://libpyhdfs.googlecode.com/svn/trunk/ libpyhdfs
cd libpyhdfs
cp /usr/lib/hadoop-0.20/hadoop-core-0.20.2-cdh3u0.jar lib/hadoop-0.20.1-core.jar
cp /usr/lib/hadoop-0.20/lib/commons-logging-1.0.4.jar lib/
cp /usr/lib/libhdfs.so.0 lib/
ln –s lib/libhdfs.so.0 lib/libhdfs.so
python setup.py install --prefix="/usr/local"


还有就是把 selinux也给关了    不然会出现莫名的问题


如果出现

/usr/lib/jvm/java-6-sun/include/jni.h:27:20: error: jni_md.h: No such file or directory

搜下find / -name jni.h

然后修改#include "jni_md.h"   为  #include "linux/jni_md.h"


这个是用pydoop的库


import pydoop.hdfs as hdfs
with hdfs.open('/user/myuser/filename') as f:
    for line in f:
        print(line)



我现在使用的方法是用subprocess ,哈哈,方法很搓吧,主要原因是我这边没有太多的性能估计,只是单纯的把mapreduce的接口给搞出来而已。

这么简单用用也还可以的~

需要把很多自己常用的指定都封装成库  

cat = subprocess.Popen(["hadoop", "fs", "-cat", "/path/to/myfile"], stdout=subprocess.PIPE)
for line in cat.stdout:
    print line



补充下(从视hadoop为儿戏到现在对mapreduce半斤八两,对我自己来说,还是有很大的进步的。所以关于hadoop python操作不能再用以前的方法啦。):

     最近了解了更加方便的库,算是文档和利用最好的了。


pyhdfs是对libhdfs的python封装库. 它提供了一些常用方法来处理HDFS上的文件和目录, 比如读写文件, 枚举目录文件, 显示HDFS可用空间, 显示文件的复制块数等。

libhdfs 是HDFS的底层C函数库, 由hadoop官方提供, pyhdfs使用swig技术, 对libhdfs提供的绝大多数函数进行了封装, 目的是提供更简单的调用方式.



如何连接hadoop集群?
    fs = hadoop.HadoopDFS("username","password","ugi",64310)
    fs.disconnect()
如何获取当前工作目录?
    fs = hadoop.HadoopDFS("username","password","ugi",64310)
    print fs.getWorkingDirectory()
    fs.disconnect()
如何更改当前工作目录?
    fs = hadoop.HadoopDFS("username","password","ugi",64310)
    print fs.setWorkingDirectory("/user/ns-lsp/logs")
    fs.disconnect()
如果目录不存在setWorkingDirectory()返回-1,如果执行成功,返回0
如果目录不存在setWorkingDirectory()返回-1,如果执行成功,返回0
如何判断某个文件/目录是否存在?
    fs = hadoop.HadoopDFS("username","password","ugi",64310)
    print fs.pathExists("/user/ns-lsp/logs")
    fs.disconnect()
文件/目录存在,返回0,如果不存在,返回-1
如何创建一个目录?
    fs = hadoop.HadoopDFS("username","password","ugi",64310)
    print fs.createDirectory("/user/ns-lsp/logs/cjj")
    fs.disconnect()
如果目录已经存在,则返回-1,如果目录创建成功,返回0
如何获得当前默认块大小?
    fs = hadoop.HadoopDFS("username","password","ugi",64310)
    print fs.getDefaultBlockSize()
    fs.disconnect()
如何获得当期目录下的文件/目录?
    fs = hadoop.HadoopDFS("username","password","ugi",64310)
    print fs.listDirectory("/user/ns-lsp/logs")
    fs.disconnect()
如何移动一个文件/目录?
同一HDFS内移动文件:
    fs = hadoop.HadoopDFS("username","password","ugi",64310)
    print fs.move("/user/ns-lsp/logs/cjj","/user/ns-lsp/logs/cjj_new")
    fs.disconnect()
不同HDFS之间移动文件:
    target_fs = hadoop.HadoopDFS("username","password","ugi",64310)
    fs = hadoop.HadoopDFS("username","password","ugi",64310)
    print fs.move("/user/ns-lsp/logs/cjj","/user/ns-lsp/logs/cjj_new",target_fs)
    fs.disconnect()
如何删除一个文件/目录?
    fs = hadoop.HadoopDFS("username","password","ugi",64310)
    print fs.delete("/user/ns-lsp/logs/cjj_new")
    fs.disconnect()
如何重命名一个文件/目录?
    fs = hadoop.HadoopDFS("username","password","ugi",64310)
    print fs.rename("/user/ns-lsp/logs/cjj","/user/ns-lsp/logs/cjj1")
    fs.disconnect()
如何修改一个文件/目录的权限?
    fs = hadoop.HadoopDFS("username","password","ugi",64310)
    print fs.chmod("/user/ns-lsp/logs/cjj",7)
    fs.disconnect()
如何文件块所在的服务器名?
有时我们需要查找某些文件块所在的服务器名是什么,可以如下使用:
    fs = hadoop.HadoopDFS("username","password","ugi",64310)
    print fs.getHosts("/user/ns-lsp/logs/cjj/a",0,1)
    fs.disconnect()
返回包含服务器名的列表.
   $ python gethosts.py
   ['xxxx']
如何获取一个文件/目录的信息?
    fs = hadoop.HadoopDFS("username","password","ugi",64310)
    pathinfo = fs.getPathInfo("/user/ns-lsp/logs/cjj")
    fs.disconnect()
getPathInfo()返回一个hdfsFileInfo类。
如何指定文件的备份数?
    fs = hadoop.HadoopDFS("username","password","ugi",64310)
    print fs.setReplication("/user/ns-lsp/logs/cjj/a",3)
    fs.disconnect()
如何打开一个文件,并读取数据?
要操作文件,需要创建一个HadoopFile对象,并利用read()方法读取数据.
    fs = hadoop.HadoopDFS("username","password","ugi",64310)
    fh = hadoop.HadoopFile(fs,'/user/ns-lsp/logs/cjj/a')
    print fh.read()
    fh.close()
    fs.disconnect()


受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 为Hadoop存储层增加对OpenStack Swift的支持
    原文链接:为 Hadoop 的存储层增加对 OpenStack Swift 的支持编者按:为Hadoop的存储层增加对OpenStack Swift的支持后,即可直接使用Hadoop MapReduce及其相关工具直接分析存储在Swift中的数据。本文探讨了通过编写 Swift 适配器,将 OpenStack Swift 对象存储作为 Hadoop 的底层存储,为 Hadoop 的存储层增加对 OpenStack Swift 的支持,最终达到功能验证(Functional POC)的目标。以下为原文:背景在 Hadoop 中有一个抽象文件系统的概念,它有多个不同的子类实现,由 DistributedFileSystem 类代表的 HDFS 便是其中之一。在 Hadoop 的 1.x 版本中,HDFS 存在 NameNode 单点故障,并且它是为大文件的流式数据访问而设计的,不适合随机读写大量的小文件。本文将探讨通过使用其他的存储系统,例如 OpenStack Swift 对象存储,作为 Hadoop 的底层存储,为 Hadoop 的存储层增加对 OpenStack Swift 的支持,并给出测试结果,最终达到功能验证(Functional POC)的目标。值得一提的是,为 Hadoop 增加对 OpenStack Swift 的支持并非要取代 HDFS,而是为使用 Hadoop
  • Hadoop、分布式文件系统HDFS、YARN、MAPREDUCE
    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 1.1 什么是Hadoop Hadoop名字的由来 作者:Doug cuttingHadoop项目作者的孩子给一个棕黄色的大象样子的填充玩具的命名 Hadoop的概念: Apache™ Hadoop® 是一个开源的, 可靠的(reliable), 可扩展的(scalable)分布式计算框架 允许使用简单的编程模型跨计算机集群分布式处理大型数据集可扩展: 从单个服务器扩展到数千台计算机,每台计算机都提供本地计算和存储可靠的: 不依靠硬件来提供高可用性(high-availability),而是在应用层检测和处理故障,从而在计算机集群之上提供高可用服务 Hadoop能做什么? 搭建大型数据仓库 PB级数据的存储 处理 分析 统计等业务 搜索引擎 日志分析 数据挖掘 商业智能(Business Intelligence,简称:BI) 商业智能通常被理解为将企业中现有的数据(订单、库存、交易账目、客户和供应商等数据)转化为知识,帮助企业做出明智的业务经营决策的工具。从技术层面上讲,是数据仓库、数据挖掘等技术的综合运用。 Hadoop发展史 2003-2004年 Google发表了三篇论文 GFS:Google的分布式文件系统Google File
  • Hadoop分布式文件系统(HDFS)知识梳理(超详细)
    气性不和平,则文章事功俱无足取 语言多矫饰,则人品心术尽属可疑 推荐书目电子版下载 Hadoop必读书目(精选) 本文参考文献包含于上述书籍 HDFS知识梳理 应用背景 当数据集的大小超过一台独立物理计算机的存储能力时,有必要对它进行分区并存储到若干台单独的计算机上管理网络中跨多台计算机存储的文件系统称为分布式文件系统分布式文件系统架构于网络之上,必然会引入网络编程的复杂性,分布式文件系统比普通磁盘文件系统更加复杂Hadoop有一个抽象的文件系统概念,HDFS是其中的一个实现 简介 分布式存储系统HDFS(Hadoop Distributed File System)是一个文件系统,类似于Linux的文件系统。HDFS有目录,目录下可以存储文件,但它是一个分布式的文件系统。 基本原理 将文件切分成等大的数据块,分别存储到多台机器上每个数据块存在多个备份数据切分、容错、负载均衡等功能透明化可将HDFS看成是一个巨大的、具有容错性的磁盘 优点 处理超大文件流式访问数据运行于廉价的商用集群上 缺点 不适合存储大量小文件不适合低延迟数据访问不支持多用户写入和任意修改文件 设计 HDFS以流式数据访问模式来存储超大文件,运行于商用硬件集群上 超大文件 几百MB、GB、TB大小的文件,现已有Hadoop集群存储PB级数据 流式数据访问 一次写入
  • 2020年大数据学习路线指南(最全知识点总结)零基础入门大数据学习必备系统教程和学习目录
    大数据是对海量数据进行存储、计算、统计、分析处理的一系列处理手段,处理的数据量通常是TB级,甚至是PB或EB级的数据,这是传统数据处理手段所无法完成的,其涉及的技术有分布式计算、高并发处理、高可用处理、集群、实时性计算等,汇集了当前IT领域热门流行的IT技术。 系统的学习知识点我 大数据入门,需要学习以下这些知识点: 先附上一张自己总结的学习线路图 1、Java编程技术 Java编程技术是大数据学习的基础,Java是一种强类型语言,拥有极高的跨平台能力,可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等,是大数据工程师最喜欢的编程工具,因此,想学好大数据,掌握Java基础是必不可少的。 2、Linux命令 对于大数据开发通常是在Linux环境下进行的,相比Linux操作系统,Windows操作系统是封闭的操作系统,开源的大数据软件很受限制,因此,想从事大数据开发相关工作,还需掌握Linux基础操作命令。 3、Hadoop Hadoop是大数据开发的重要框架,其核心是HDFS和MapReduce,HDFS为海量的数据提供了存储,MapReduce为海量的数据提供了计算,因此,需要重点掌握,除此之外,还需要掌握Hadoop集群、Hadoop集群管理、YARN以及Hadoop高级管理等相关技术与操作! 4、Hive Hive是基于Hadoop的一个数据仓库工具
  • 吐血整理:盘点19种大数据处理的典型工具
    大数据的生命周期分为数据获取(data acquisition)、数据存储(data storage)、数据分析(data analysis)以及结果(result),并且将前述大数据处理的三代技术中相关的工具映射至数据获取、数据存储和数据分析三个环节来进行分类讨论,详情如表1-2所示。▲表1-2 大数据处理的典型工具在数据获取阶段,通常涉及从多源异构的数据源获取数据,这些数据源可能是批处理数据源,也有可能是实时流数据源;在数据存储阶段,需要对前一阶段已经获取到的数据进行存储,以便进行后续的分析与处理,常见的存储方式有磁盘(disk)形式和无盘(diskless)形式。在数据分析阶段,针对不同的应用需求,会运用各类模型和算法来对数据进行分析与处理。在表1-2中,三代技术中不同的处理阶段所涉及的工具存在重叠。此外,对于混合计算技术,其本身同时涉及批处理技术和实时处理技术,实现混合计算模型的技术也要比单纯的批处理技术和实时处理技术更加复杂;鉴于混合计算技术的上述特点,这里不对在数据的获取、存储与分析方面所涉及的具体工具做特别的划分。01 HDFSHadoop分布式文件系统(Hadoop Distributed File System,HDFS)目前是Apache Hadoop项目的一个子项目,与已有的分布式文件系统有很多相似之处。此外,作为专门针对商业化硬件(commodity
  • Hadoop 和 Spark 知识点整理汇总
    文章目录 前言一、LINUX 系统常用命令汇总二、Hadoop 常用命令汇总三、Hadoop 基本概念1. Hadoop 特性2. Hadoop 架构2.1 Hadoop 集群2.2 HDFS2.3. YARN 四、Hadoop HDFS命令1. HDFS 命令通用格式2. 创建与查看 HDFS 目录3. HDFS 与本地计算机之间的文件复制4. 复制与删除 HDFS文件5. 在Hadoop HDFS Web 用户界面浏览 HDFS 五、Hadoop MapReduce1. MapReduce 介绍2. MapReduce 原理3. MapReduce 集群上的实现4. 不止一个MapReduce:作业链 六、Hadoop Streaming1. Hadoop Streaming 介绍2. Hadoop Streaming 工作原理3. Hadoop Streaming 执行4. Python 的 MapReduce 框架5. MapReduce 高级工具 七、Spark 内存计算1. 为什么需要 Spark?2. Spark 基础Spark 栈RDD使用RDD编程 3. Spark 执行机制4. 基于 PySpark 的交互性 Spark5. Spark 应用程序模版6. 总结 八、分布式分析和模式1. 前言2. 键计算复合键键空间模式pair 与 stripe 3
  • 4年数据涨万倍,Uber大数据平台四次变迁揭秘
    第一代:Uber 大数据的开端在 2014 年之前,我们有限的数据量可以塞进一些传统的联机事务处理 (OLTP) 数据库中(例如 MySQL 和 PostgreSQL)。为了利用这些数据,我们的工程师必须单独访问每个数据库或表,如果用户想将不同数据库的数据组合起来,需要自己编写代码。当时,我们还没有对所有存储的数据进行全局访问的需求,也没有这些数据的全局视图。事实上,我们的数据分散在不同的 OLTP 数据库中,总数据大小约为几 TB,访问这些数据的延迟非常短 (通常不到一分钟)。图 1 是我们在 2014 年之前的数据架构概览:随着 Uber 业务量呈指数级增长(业务量包括 Uber 运营的城市 / 国家数量和每个城市使用该服务的乘客 / 司机数量),传入数据量跟着也增加了,我们需要建立第一代分析数据仓库,以满足访问和分析一个地方所有数据的需求。为了让 Uber 尽可能接近数据驱动,我们需要确保分析师可以在同一个地方访问分析数据。为实现这一目标,我们首先将数据用户分为三大类:城市运营团队(数千人):这些现场工作人员负责管理和扩展每个市场的运输网络。随着业务扩展到新的城市,就有成千上万个城市运营团队需要定期访问这些数据,以便对司机与乘客的问题做出响应。数据科学家和分析师(数百人):这些分析师和科学家分布在不同的功能组中,他们需要利用数据来帮助我们为用户提供最佳的运输和交付体验
  • 大数据知识点汇总---Redis,Spark,Kafka,Hive,Mysql,Hbase,Hadoop...
    建议使用Notepad++/ .java文件 打开 0、大数据5V Volume 体积大,高速率增长的数据量,PB为单位 Velocity 数据增长速度快 Variety 不同数据类型,文本、音频、视频 Veracity 数据不确定性,大量数据带来不完整性和不一致性 Vlue 数据价值 -------------------------------------------------------- Redis --------------------------------------------------------- 1、Redis支持的最大数据量是多少? Redis可以支持6W,小数据可以达到10W的并发 2、Redis是什么?适用场景是什么 Redis是一个开源的BSD协议,使用ANSIC编写,基于内存的且支持持久化,高性能的K-V的NoSQL数据库 使用场景: 数据高并发的读写,降低数据IO 海量数据配合关系型数据库做高速缓存的读写 可持久化特定数据 分布式架构,做session共享 对扩展性能要求比较高的数据 3、列举一个常用的Redis客户端的并发模型 Redis为单进程单线程模式,采用队列模式并发访问变为串行访问。 Redis本身没有锁的概念,对于多个客户端并不存在竞争,但是客户端连接混乱导致Redis发生连接超时、数据转换错误、阻塞、客户端关闭连接等问题
  • HDFS 分布式文件系统
    hdfs getconf -confKey dfs.namenode.edits.dir概念一台计算机的存储计算能力有限;当一个数据集的大小超过了一台计算机的存储能力时,需要对其进行分区(patition),并存储到多个计算机上。—— 跨网络管理多个计算机储存的文件系统 —— 分布式文件系统 存储方式:以流式数据访问模式来存储超大文件流式数据访问模式(如mapreduce):一次写入,多次读取是最高效的访问模式。数据集的分析处理,需要层层剥离过滤,最后才形成总结性的结果输出。期间需要多次读取数据集的全部或局部数据。高时间延迟代价:超大数据的分析过滤处理,需要在内部长时间并行运算,才得出结果。从执行到结果输出有着高时间延迟的代价付出。不支持多用户写操作,不支持在文件任意位置做修改。 数据块:磁盘对数据进行读写的最小单位。 = 磁盘块文件系统块:分布式文件系统块(HDFS块):分块chunk-独立存储单元 HDFS块:默认64MB,块的数据固定设置,大文件拆分成块,不会将元数据(ep权限信息)写到块中。块复制在多个节点(数据备份),还可提高数据容错和恢复能力。 HDFS集群的节点类型:管理者-工作者模式:NameNode 和 dataNode;NameNode,命名空间,文件操作,数据块位置映射信息;& 客户端,dataNode ,存储并检索数据块,会送心跳给nameNode;
  • 企业级Hadoop大数据平台实战(1)——基础知识说明
    #1 hadoop定义 Hadoop是一个由Apache基金会所开发的分布式系统基础架构 用户可以在不了解分布式底层细节的情况下,开发分布式程序,充分利用集群的威力进行高速运算和存储 Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上 而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序 HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据 Hadoop的框架最核心的设计就是:HDFS和MapReduce HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算 #2 什么是云计算? Impala is the open source version of Dremel, Google’s proprietary big data query solution. A first beta is available and the production version is foreseen for Q1 2013. Impala allows you to run real
  • Mastering Spark for Data Science:通过spark进行数据科学
    Spark对数据科学世界的影响令人震惊。 自从Spark 1.0发布至今还不到3年,但Spark已经被公认是任何大数据架构的全能内核。 大约在此期间,我们在巴克莱银行采用了Spark作为我们的核心技术,这被认为是一个大胆的举动。 现在可以肯定,Spark是任何大数据科学项目的起点。第1章,大数据科学生态系统,本章介绍了通过大规模数据获得成功的方法和随附的生态系统。它着重于将在后面的章节中使用的数据科学工具和技术,以及介绍环境以及如何适当地配置它。此外,它还解释了与整体数据体系结构和长期成功相关的一些非功能性注意事项。第2章,数据采集,作为数据科学家,最重要的任务之一是将数据准确地加载到数据科学平台中。本章将说明如何构建Spark中的常规数据提取管道,该管道可作为跨许多输入数据的可重用组件,而不是使用不受控制的临时过程。第3章,输入格式和架构,本章演示如何将数据从其原始格式加载到不同的架构,从而使各种不同类型的下游分析能够在同一数据上运行。考虑到这一点,我们将研究数据模式的传统理解领域。我们将涵盖传统数据库建模的关键领域,并解释其中的一些基石原理如何仍适用于当今的Spark。此外,在磨练我们的Spark技能的同时,我们将分析GDELT数据模型,并展示如何以有效和可扩展的方式存储此大型数据集。 第4章,探索性数据分析,一个常见的误解是
  • 中国大学生mooc大数据技术原理与应用(林子雨)答案
    大数据技术原理与应用(林子雨) 第1章 大数据概述 1单选(2分) 第三次信息化浪潮的标志是: A.个人电脑的普及 B.云计算、大数据、物联网技术的普及 C.虚拟现实技术的普及 D.互联网的普及 正确答案:B你选对了 2单选(2分) 就数据的量级而言,1PB数据是多少TB? A.2048 B.1000 C.512 D.1024 正确答案:D你选对了 3单选(2分) 以下关于云计算、大数据和物联网之间的关系,论述错误的是: A.云计算侧重于数据分析 B.物联网可以借助于云计算实现海量数据的存储 C.物联网可以借助于大数据实现海量数据的分析 D.云计算、大数据和物联网三者紧密相关,相辅相成 正确答案:A你选对了 4单选(2分) 以下哪个不是大数据时代新兴的技术: A.Spark B.Hadoop C.HBase D.MySQL 正确答案:D你选对了 5单选(2分) 每种大数据产品都有特定的应用场景,以下哪个产品是用于批处理的: A.MapReduce B.Dremel C.Storm D.Pregel 正确答案:A你选对了 6单选(2分) 每种大数据产品都有特定的应用场景,以下哪个产品是用于流计算的: A.GraphX B.S4 C.Impala D.Hive 正确答案:B你选对了 7单选(2分) 每种大数据产品都有特定的应用场景,以下哪个产品是用于图计算的: A.Pregel B
  • 何时使用Hadoop,HBase,Hive和Pig?(When to use Hadoop, HBase, Hive and Pig?)
    问题 使用Hadoop或HBase或Hive有什么好处? 据我了解, HBase避免使用map-reduce,并且在HDFS之上具有面向列的存储。 Hive是Hadoop和HBase的类似于sql的接口。 我还想知道Hive与Pig的比较。 回答1 MapReduce只是一个计算框架。 HBase与它无关。 就是说,您可以通过编写MapReduce作业高效地将数据放入HBase或从HBase提取数据。 另外,您可以使用其他HBase API(例如Java)编写顺序程序来放置或获取数据。 但是我们使用Hadoop,HBase等来处理大量数据,所以这没有多大意义。 当您的数据太大时,使用常规的顺序程序将效率非常低下。 回到问题的第一部分,Hadoop本质上是两件事:分布式文件系统(HDFS) +计算或处理框架(MapReduce) 。 像所有其他FS一样,HDFS也为我们提供存储,但是以容错的方式提供了高吞吐量和较低的数据丢失风险(由于复制)。 但是,作为FS,HDFS缺乏随机的读写访问权限。 这就是HBase发挥作用的地方。 这是一个分布式的,可扩展的大数据存储,以Google的BigTable为模型。 它将数据存储为键/值对。 来到蜂巢。 它在现有Hadoop集群之上为我们提供了数据仓库设施。 除此之外,它还提供类似SQL的界面,以防您来自SQL背景,从而使您的工作更加轻松。
  • 没有Hadoop的实木复合地板?(Parquet without Hadoop?)
    问题 我想在我的一个项目中使用镶木地板作为柱状存储。 但是我不想依靠hadoop / hdfs库。 是否可以在hdfs之外使用镶木地板? 或最小依赖性是什么? 回答1 调查相同的问题,我发现目前暂时不可能。 我发现了这个git问题,它提出了从hadoop api分离实木复合地板的建议。 显然它尚未完成。 在Apache Jira中,我发现了一个问题,该问题要求一种在hadoop之外读取实木复合地板文件的方法。 在撰写本文时尚未解决。 编辑: 不再在github上跟踪问题(上面的第一个链接已消失)。 我发现一个较新的问题位于apache的Jira上,标题如下: 无需依赖hadoop即可轻松地在Java中读取和写入镶木地板文件 回答2 由于这只是一种文件格式,因此显然可以使实木复合地板与Hadoop生态系统脱钩。 如今,我能找到的最简单的方法是通过Apache Arrow,请参见此处的python示例。 这是来自PyArrow官方文档的一小段摘录: 写作 In [2]: import numpy as np In [3]: import pandas as pd In [4]: import pyarrow as pa In [5]: df = pd.DataFrame({'one': [-1, np.nan, 2.5], ...: 'two': ['foo', 'bar', 'baz
  • Oracle Big Data SQL:简化数据生命周期管理
    编辑 | Alex“今天一个现代人一天所吸收的信息,比莎士比亚一生所得的信息还要多”,相信这种说法在今天已经被越来越多的人所认同。据统计,每年的全球数据增长量超过50%,而且这种信息爆炸性增长的速度还在加快,从而对数据的管理提出了重大的挑战;另外企业必须面对日益激烈的竞争和要求不断缩减开支的经营环境,增长的信息系统基础设施建设工作将变得更加困难。关系型数据库中如何实现数据分层一般管理规则就是把新数据和常用数据放在速度比较快、比较好的储存媒体上,而不是很重要的数据就放在速度较慢、比较便宜的储存媒体上。不过,该管理系统在界定数据的重要性时并不仅仅根据数据的使用年限和常用性,用户可以自己制订规则,调整数据在不同时期的重要性和通过延长它的使用周期来保持它的重要性。在大数据时代出现之前 OLTP(联机事务处理)需要考虑如何管理历史数据降低存储成本同时确保近线数据高性访问。在DW(数据仓库)项目中通常不遵循第三范式,允许数据冗余,因此在超大型海量数据的DW项目中存储成本巨大。应对以上问题Oracle数据库可以使用数据分区、高级压缩和/或混合列压缩组合实现经济高效的信息生命周期管理解决方案。可以配置存储分层,用速度较高、较昂贵的磁盘创建高性能层,用速度较低、较便宜的磁盘创建高容量层。例如:1、 分区技术利用分区技术可以将历史数据单独分区并存放于单独的表空间,然后将表空间处于offline模式
  • 为什么HDFS只能写入一次并读取多次?(Why HDFS is write once and read multiple times?)
    问题 我是Hadoop的新手。 在阅读有关Apache HDFS的文章时,我了解到HDFS是一次写入文件系统。 其他发行版(Cloudera)提供了附加功能。 知道此设计决定背后的理性将是一件好事。 在我的拙见中,这种设计对Hadoop造成了很多限制,并使其适用于有限的问题集(类似于日志分析的问题)。 专家评论将帮助我更好地理解HDFS。 回答1 HDFS拥有其设计的三个主要原因, HDFS是通过狂热复制Google GFS的设计而设计的,该设计仅用于支持批处理计算 HDFS最初不用于批处理计算设计一个能够支持高性能批处理操作和实时文件修改的真正的分布式文件系统非常困难,并且超出了HDFS原始实现者的预算和经验水平。 没有内在的理由不能将Hadoop构建为完全读/写文件系统。 MapR FS就是证明。 但是实现这样的事情远远超出了原始Hadoop项目的范围和功能,并且HDFS原始设计中的体系结构决策实质上阻止了更改此限制。 一个关键因素是NameNode的存在,因为HDFS要求所有元数据操作(例如文件创建,删除或文件长度扩展)通过NameNode往返。 MapR FS通过完全消除NameNode并在整个群集中分布元数据来避免这种情况。 随着时间的流逝,由于与Hadoop相关的系统(例如Spark和Flink)的工作负载越来越多地转向可操作的,接近实时的或实时的操作
  • 数据分析大数据面试题大杂烩02
    Map端会处理输入数据并产生中间结果,这个中间结果会写到本地磁盘,每个Map的输出会先写到内存缓冲区中,当写入的数据达到设定的阈值时,系统将会启动一个线程将缓冲区的数据写到磁盘,这个过程叫做spill(spill写入之前,会先进行二次排序,首先根据数据所属的partition进行排序,然后每个partition中的数据再按key来排序 . partition的目是将记录划分到不同的Reducer上去,以期望能够达到负载均衡,以后的Reducer就会根据partition来读取自己对应的数据 . 接着运行combiner(如果设置了的话),combiner的本质也是一个Reducer,其目的是对将要写入到磁盘上的文件先进行一次处理,这样,写入到磁盘的数据量就会减少 . 最后将数据写到本地磁盘产生spill文件(spill文件保存在{mapred.local.dir}指定的目录中,Map任务结束后就会被删除)) Reducer在拷贝数据的时候只拷贝与自己对应的partition中的数据即可 . 每个Reducer会处理一个或者多个partition,接下来就是sort阶段,也成为merge阶段,因为这个阶段的主要工作是执行了归并排序 . 从Map端拷贝到Reduce端的数据都是有序的(指阶段),所以很适合归并排序 . 最终在Reduce端生成一个较大的文件作为Reduce的输入
  • Hadoop分布式文件系统:架构和设计
    引言 Hadoop分布式文件系统(HDFS)被设计成适 合运行在通用硬件(commodity hardware)上的分布式文件系统。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实 现流式读取文件系统数据的目的。HDFS在最开始是作为Apache Nutch搜索引擎项目的基础架构而开发的。HDFS是Apache Hadoop Core项目的一部分。这个项目的地址是http://hadoop.apache.org/core/。 前提和设计目标硬件错误硬件错误是常态而不是异常。HDFS可能由成百上千的服务器所构成,每个服务器上存储着文件系统的部分数据。我们面对的现实是构成系统的组件数目是巨大 的,而且任一组件都有可能失效,这意味着总是有一部分HDFS的组件是不工作的。因此错误检测和快速、自动的恢复是HDFS最核心的架构目标。 流式数据访问运行在HDFS上的应用和普通的应用不同,需要流式访问它们的数据集。HDFS的设计中更多的考虑到了数据批处理,而不是用户交互处理。比之数据访问的低 延迟问题,更关键的在于数据访问的高吞吐量。POSIX标准设置的很多硬性约束对HDFS应用系统不是必需的
  • 大数据常用开源框架
    转自:数据社 主要基于对现阶段一些常用的大数据开源框架技术的整理,只是一些简单的介绍,并不是详细技术梳理。可能会有疏漏,发现再整理。参考的太多,就不一一列出来了。这只是作为一个梳理,对以后选型或者扩展的做个参考。 目录 系统平台 (Hadoop、CDH、HDP) 监控管理 (CM、Hue、Ambari、Dr.Elephant、Ganglia、Zabbix、Eagle) 文件系统 (HDFS、GPFS、Ceph、GlusterFS、Swift 、BeeGFS、Alluxio) 资源调度 (YARN、Mesos、) 协调框架 (ZooKeeper 、Etcd、Consul) 数据存储 (HBase、Cassandra、ScyllaDB 、MongoDB、Accumulo 、Redis 、Ignite、Arrow 、Geode、CouchDB、Kudu、CarbonData) 数据处理 (MapReduce、Spark、Flink、Storm、Tez、Samza、Apex、Beam、Heron) 查询分析(Hive、SparkSQL、Presto、Kylin、Impala、Druid、ElasticSearch、HAWQ、Lucene、Solr、 Phoenix) 数据收集 (Flume、Filebeat、Logstash、Chukwa ) 数据交换 (Sqoop 、Kettle
  • 大数据名词解释
    大数据名词解释 大数据知识体系架构第一阶段:Hadoop一、ELK技术栈:二、HDFS:Hadoop分布式文件系统三、MapReduce:四、Apache Hive:五、Apache HBase:六、Apache Sqoop:七、Zeppelin可视化: 第二阶段:Spark一、Scala编程二、Spark 生态框架三、Flume四、Apache Kafka 第三阶段:离线数据平台一、Hive ETL处理二、Oozie工作流:三、Tableau可视化四、Cassandra/Redis/MongoDB 第四阶段:实时流处理平台核心技术小结HadoopSparkFlinkHiveELKScala 大数据知识体系架构 第一阶段:Hadoop 一、ELK技术栈: ELK Stack 是 Elasticsearch、Logstash、Kibana 三个开源软件的组合。在实时数据检索和分析场合,三者通常是配合共用。 Elasticsearch:分布式搜索和分析引擎,具有高可伸缩、高可靠和易管理等特点。基于 Apache Lucene 构建,能对大容量的数据进行接近实时的存储、搜索和分析操作。通常被用作某些应用的基础搜索引擎,使其具有复杂的搜索功能; Logstash:数据处理引擎,它支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储到 ES; Kibana