当前位置:首页 > 智能硬件 > 人工智能AI
[导读] 1. Hadoop概述 HADOOP是apache旗下的一套开源软件平台,利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分布式处理 HADOOP的核心组件有: HD

1. Hadoop概述

HADOOP是apache旗下的一套开源软件平台,利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分布式处理

HADOOP的核心组件有:
HDFS(分布式文件系统)
YARN(运算资源调度系统)
MAPREDUCE(分布式运算编程框架)

2. HDFS的概念

hdfs是一个文件系统,用于存储文件,通过统一的命名空间–目录树来定位文件。它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。主要特性如下

HDFS中的文件在物理上是分块存储(block),块的大小可以通过配置参数( dfs.blocksize)来规定,默认大小在hadoop2.x版本中是128M,老版本中是64M.

HDFS文件系统会给客户端提供一个统一的抽象目录树,客户端通过路径来访问文件,形如:hdfs://namenode:port/dir-a/dir-b/dir-c/file.data

目录结构及文件分块信息(元数据)的管理由namenode节点承担
——namenode是HDFS集群主节点,负责维护整个hdfs文件系统的目录树,以及每一个路径(文件)所对应的block块信息(block的id,及所在的datanode服务器)

件的各个block的存储管理由datanode节点承担
—- datanode是HDFS集群从节点,每一个block都可以在多个datanode上存储多个副本(副本数量也可以通过参数设置dfs.replicaTIon)

HDFS是设计成适应一次写入,多次读出的场景,且不支持文件的修改

3. hdfs不适用的场景

低延迟的数据访问:hdfs的强项在与大量数据传输,延迟不适合他,10毫秒一下的访问可以无视hdfs,不过hbase可以弥补这个缺陷。

太多小文件: namenode节点在内存中hold住了整个文件系统的元数据,因此文件的数量就会受到限制,每个文件的元数据大约150字节,1百万个文件,每个文件只占一个block,那么就需要300MB内存。你的服务器可以hold住多少呢?

多处写和随机修改:目前还不支持多处写入以及通过偏量随机修改。

4. namenodes和datanodes

hdfs集群有两种类型的节点,一种为master及namenode,另一种为worker及datanodes。namenode节点管理文件系统的命名空间。它包含一个文件系统的树,所有文件和目录的原数据都在这个树上,这些信息被存储在本地磁盘的两个文件中,image文件和edit log文件。文件相关的块存在哪个块中,块在哪个地方,这些信息都是在系统启动的时候加载namenode的内存中,并不会存储在磁盘中。datanode节点在文件系统中充当的角色就是苦力,按照namenode和client的指令进行存储或者检索block,并且周期性的向namenode节点报告它存了哪些文件的block。

5. secondarynamenode

它是namenode的一个快照,会根据configuraTIon中设置的值来决定多少时间周期性的去cp一下namenode,记录namenode中的metadata及其它数据。

6. NodeManager(NM)

NodeManager是YARN中每个节点上的代理,它管理Hadoop集群中单个计算节点包括与ResourceManger保持通信,监督Container的生命周期管理,监控每个Container的资源使用(内存、CPU等)情况,追踪节点健康状况。

7. ResourceManager

在YARN中,ResourceManager负责集群中所有资源的统一管理和分配,它接收来自各个节点(NodeManager)的资源汇报信息,并把这些信息按照一定的策略分配给各个应用程序(实际上是ApplicaTIonManagerRM与每个节点的NodeManagers (NMs)和每个应用ApplicaTIonMasters (AMs)一起工,b.ApplicationMasters负责与ResourceManager协商资源与NodeManagers合作启动容器.

8. hdfs客服端常用命令 hadoop fs-ls///如果提示警告:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform...原因:系统预装的glibc库是2.12版本,而hadoop期望是2.14版本,所以打印警告信息。 解决方案:在log4j日志中去除告警信息,在/hadoop-2.5.2/etc/hadoop/log4j.properties文件中添加:log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR-ls功能:显示目录信息 示例: hadoop fs-lshdfs://localhost:9000/备注:这些参数中,所有的hdfs路径都可以简写-->hadoop fs-ls/等同于上一条命令的效果-mkdir功能:在hdfs上创建目录 示例:hadoop fs-mkdir-p/aaa/bbb/cc/dd-moveFromLocal功能:从本地剪切粘贴到hdfs 示例:hadoop fs-moveFromLocal /home/hadoop/a.txt /aaa/bbb/cc/dd-moveToLocal功能:从hdfs剪切粘贴到本地 示例:hadoop fs-moveToLocal /aaa/bbb/cc/dd /home/hadoop/a.txt--appendToFile 功能:追加一个文件到已经存在的文件末尾 示例:hadoop fs-appendToFile./hello.txt hdfs://hadoop-server01:9000/hello.txt可以简写为: Hadoop fs-appendToFile./hello.txt /hello.txt-cat功能:显示文件内容 示例:hadoop fs-cat/hello.txt-chmod功能:linux文件系统中的用法一样,对文件所属权限 示例: hadoop fs-chmod666/hello.txt-copyFromLocal功能:从本地文件系统中拷贝文件到hdfs路径去 示例:hadoop fs-copyFromLocal./jdk.tar.gz /aaa/-copyToLocal功能:从hdfs拷贝到本地 示例:hadoop fs-copyToLocal/aaa/jdk.tar.gz-cp功能:从hdfs的一个路径拷贝hdfs的另一个路径 示例: hadoop fs-cp/aaa/jdk.tar.gz /bbb/jdk.tar.gz.2-mv功能:在hdfs目录中移动文件 示例: hadoop fs-mv/aaa/jdk.tar.gz/-get功能:等同于copyToLocal,就是从hdfs下载文件到本地 示例:hadoop fs-get/aaa/jdk.tar.gz-getmerge功能:合并下载多个文件 示例:比如hdfs的目录 /aaa/下有多个文件:log.1,log.2,log.3,...hadoop fs-getmerge/aaa/log.*./log.sum-put功能:等同于copyFromLocal 示例:hadoop fs-put/aaa/jdk.tar.gz /bbb/jdk.tar.gz.2-rm功能:删除文件或文件夹 示例:hadoop fs-rm-r/aaa/bbb/-rmdir功能:删除空目录 示例:hadoop fs-rmdir/aaa/bbb/ccc-df功能:统计文件系统的可用空间信息 示例:hadoop fs-df-h/-du功能:统计文件夹的大小信息 示例: hadoop fs-du-s-h/aaa/* -count 功能:统计一个指定目录下的文件节点数量 示例:hadoop fs -count /aaa/9. java操作HDFS1.引入依赖org.apache.hadoophadoop-client2.6.12.测试类 publicclassOperationFileTest{FileSystem fs =null; Configuration conf =null;/** * 初始化文件系统操作的客户端实例对象 */@Beforepublic void init()throwsIOException, URISyntaxException, InterruptedException { conf =newConfiguration();// uri和用户身份 ---> 一个文件系统操作的客户端实例对象fs = FileSystem.get(newURI("hdfs://192.168.133.11:9000"),conf,"root"); }/** * 上传文件 */@Testpublic void testUpload()throwsIOException { fs.copyFromLocalFile(newPath("D:\examProject.rar"),newPath("/examProject.rar")); fs.close(); }/** * 下载文件 */@Testpublic void testDownload()throwsException{ Path remotePath =newPath("/examProject.rar"); Path localPath =newPath("f:/"); fs.copyToLocalFile(remotePath,localPath); fs.close(); }/** * conf加载的内容 */@Testpublic void testConf(){ Iterator

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

要想运行该代码,请确保安装了:python 2.7,opencv 2.4.9 效果如下: 算法如下:

关键字: opencv 手势识别

严格来说不是在讲Python而是讲在Python下使用OpenCV。本篇将介绍和深度学习数据处理阶段最相关的基础使用,并完成4个有趣实用的小例子: - 延时摄影小程序 - 视频中截屏

关键字: opencv python

一、开源生物特征识别库 OpenBR OpenBR 是一个用来从照片中识别人脸的工具。还支持推算性别与年龄。 使用方法:$ br -algorithm FaceRecogn

关键字: opencv 人脸识别 openbr

从工业检测系统到自动驾驶系统,计算机视觉是一个包括许多有趣应用的广泛领域。许多这样的系统在原型和实现阶段都要用到开源计算机视觉 (Open Source Computer Vision Libr

关键字: opencv 机器视觉

  opencv中常见的与图像操作有关的数据容器有Mat,cvMat和IplImage,这三种类型都可以代表和显示图像,但是,Mat类型侧重于计算,数学性较高,openCV对Mat类型的计算也进

关键字: opencv

  在之前讲到的人脸测试后,提取出人脸来,并且保存下来,以供训练或识别是用,提取人脸的代码如下:      人脸预处理   现在你已经得到一张人脸,你可以使用那张人脸图片

关键字: opencv 人脸识别

计算机视觉库 OpenCV 即将迎来 20 周年,其重要版本 OpenCV 5 也发布在即。OpenCV 官方宣布,随着此版本的推行,OpenCV 的开源许可协议将从 3-clause BSD 变更为

关键字: opencv 开源

欢迎转载,尊重原创,所以转载请注明出处:http://blog.csdn.net/bendanban/article/details/30527785本文讲述了OpenCV中几种访问矩阵元素的方法,在

关键字: opencv mat

简介 计算机视觉任务越来越多的依赖著名的开源计算机视觉库OpenCV。OpenCV 2.0 包含了一系列精心设计数据结构和经过优化的视觉算法,大家可以短时间内开发一个不错的视觉应用。OpenCV支持

关键字: opencv studio visual

在视觉处理过程中,往往需要保存中间数据。这些数据的数据类型往往并不是整数。OpenCV的C++接口中,用于保存图像的imwrite只能保存整数数据,且需作为图像格式。当需要保存浮点数据或XML/YML

关键字: opencv
关闭
关闭