- 浏览: 726753 次
- 性别:
- 来自: 重庆
文章分类
- 全部博客 (113)
- 移动支付 (1)
- 系统安全 (1)
- JAVA-Team研发环境 (2)
- 配置管理 (3)
- 开发 (3)
- 页面脚本开发 (5)
- 系统脚本开发 (1)
- 数据库 (6)
- 分布式 (8)
- JAVA基础及算法 (7)
- 开发集成及部署 (4)
- activeMQ (0)
- Thrift (1)
- memcached (11)
- linux (16)
- LVS (4)
- 日志 (4)
- hadoop (7)
- tcpdump (1)
- wireshark (1)
- test (0)
- Android BaseActivity (0)
- 云存储 (1)
- HTTP (3)
- S3 (1)
- xml (2)
- 序列化 (1)
- 部署 (0)
- 系统架构 (9)
- 存储 (0)
- 设计模式 (1)
- Spring (2)
- J2EE (4)
- maven (3)
- MYSQL (2)
- LDAP (2)
- JQuery (1)
- easyui (1)
- web前端 (1)
- tomcat (1)
- nosql (2)
- 开发技巧 (1)
- JPA (1)
- hibernate (1)
- Quartz (1)
最新评论
-
xinglianxlxl:
对我有用,非常感谢
xstream初步使用 -
liangbo11:
eclipse都无法启动
JDK扩展DCEVM让WEB程序完全不重启调试 -
Love_wh1314:
果然是这个问题。。。维护别人的代码,开始还以为自己改错了,结 ...
JQuery 实践问题 - toLowerCase 错误 -
tonyyan:
谢谢分享!
MAVEN Scope使用 -
908311595:
多谢楼主分享
xstream初步使用
HDFS是hadoop的分布式文件系统,全称:Hadoop Distributed Filesystem。由1个master(call me NameNode)和N个slaver组成(call me datanode)。其中namenode负责存储元数据,控制和协调datanode存储文件数据。通过写多份(可定义,默认1)的方式实现数据的可靠性和读取的高效性。
主要特点:
1. 适合存储大文件,对海量小文件效率较低。这主要是由于存储在namenode上的大量小文件的文件元数据会让namenode成为瓶颈。
2. 标准流式访问。一次写入,多次读取是最高效的访问模式,只支持文件的追加写,不支持随机访问。
3. 对数据节点的硬件要求低,可靠性高,单台或多台节点故障一般不会中断服务(只要不是文件所在的所有副本存放节点都故障)
4. 适合做大数据量的离线分析,不适合做第时延的联机事务业务访问。
HDFS的数据块
HDFS的数据块(block)是该文件系统的最小读写单位,默认64M(本地磁盘文件系统一般为512K)之所以设置为比较大的块,目的是最小化寻址时间,使文件系统的传输速度尽可能的取决于磁盘本身的性能。
HDFS的命令
Hdfs和其它文件系统一样,提供了命令行方式操作和访问的功能。可以通过命令:hadoop fs 进行操作,而且比较简单和容易理解。
常用命令:
$ hadoop fs –ls <path>
$ hadoop fs –lsr <path> //递归
$ hadoop fs –mkdir <path>
$ hadoop fs –put <localsrc> ... <dst>
$ hadoop fs –cp <src> <dst>
$ hadoop fs –mv <src> <dst>
$ hadoop fs –rm <path>
$ hadoop fs –rmr <path> //递归
$ hadoop fs –cat <src>
//查看文件系统的命令帮助
$ hadoop fs
//查看具体命令的使用帮助
$ hadoop fs –help <cmd>
如:
[hadoop@hadoop00 ~]$ hadoop fs -help mv
11/10/24 09:59:50 INFO security.Groups: Group mapping impl=org.apache.hadoop.security.ShellBasedUnixGroupsMapping; cacheTimeout=300000
-mv <src> <dst>: Move files that match the specified file pattern <src>
to a destination <dst>. When moving multiple files, the
destination must be a directory.
Hadoop文件系统
Hadoop有一个抽象的文件系统概念,抽象类:org.apache.hadoop.fs.FileSystem,HDFS只是其中的一个实现。Mapreduce理论上可以运行在任何一个实现中。实现类包括:
- LocalFileSystem:本地文件系统
- DistributedFileSystem:HDFS分布式文件系统
- HftpFileSystem:通过HTTP提供HDFS只读访问的文件系统
- HsftpFileSystem: 通过HTTPS提供HDFS只读访问的文件系统
- HarFileSystem:HDFS归档文件系统
- kosmosFileSystem:CloudStore文件系统
- FTPFileSystem:由FTP提供支持的文件系统
- NativeS3FileSystem和S3FileSystem:由Amazon S3支持的文件系统
HDFS的JAVA-API
HDFS分布式文件系统的JAVA-API提供了丰富的访问接口。主要包括:目录的创建,列表,查询,删除和文件的创建(写入),读取等。这个就不好文字记录了,还是代码表达吧,热,快1点了,看来只有明天写了~~
package org.acooly.hadoop.study; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.URI; import java.net.URL; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataInputStream; import org.apache.hadoop.fs.FSDataOutputStream; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.FsUrlStreamHandlerFactory; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IOUtils; import org.apache.log4j.Logger; @SuppressWarnings("deprecation") public class HDFSSample { static final Logger logger = Logger.getLogger(HDFSSample.class); static { URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory()); } public static void main(String[] args) throws Exception { HDFSSample sample = new HDFSSample(); String cmd = args[0]; String localPath = args[1]; String hdfsPath = args[2]; if (cmd.equals("create")) { sample.createFile(localPath, hdfsPath); } else if (cmd.equals("get")) { boolean print = Boolean.parseBoolean(args[3]); sample.getFile(localPath, hdfsPath, print); } } /** * 创建文件 * * @param localPath * @param hdfsPath * @throws IOException */ @SuppressWarnings("deprecation") public void createFile(String localPath, String hdfsPath) throws IOException { InputStream in = null; try { Configuration conf = new Configuration(); FileSystem fileSystem = FileSystem.get(URI.create(hdfsPath), conf); FSDataOutputStream out = fileSystem.create(new Path(hdfsPath)); in = new BufferedInputStream(new FileInputStream(new File(localPath))); IOUtils.copyBytes(in, out, 4096, false); out.hsync(); out.close(); logger.info("create file in hdfs:" + hdfsPath); } finally { IOUtils.closeStream(in); } } /** * 从HDFS获取文件 * * @param localPath * @param hdfsPath * @throws IOException */ public void getFile(String localPath, String hdfsPath, boolean print) throws IOException { Configuration conf = new Configuration(); FileSystem fileSystem = FileSystem.get(URI.create(hdfsPath), conf); FSDataInputStream in = null; OutputStream out = null; try { in = fileSystem.open(new Path(hdfsPath)); out = new BufferedOutputStream(new FileOutputStream(new File(localPath))); IOUtils.copyBytes(in, out, 4096, !print); logger.info("get file form hdfs to local: " + hdfsPath + ", " + localPath); if (print) { in.seek(0); IOUtils.copyBytes(in, System.out, 4096, true); } } finally { IOUtils.closeStream(out); } } }
运行测试代码
可以直接在WINDOWS本机运行,通过HADOOP客户端API访问HDFS:
//创建文件
java org.acooly.hadoop.study.HDFSSample create D:/temp/keepalive.txt hdfs://hadoop00:9000/input/keepalive.txt
//读取文件
java org.acooly.hadoop.study.HDFSSample get hdfs://hadoop00:9000/input/keepalive.txt D:/temp/keepalive_get.txt
如果是单机节点的安全模式,需要关闭安全模式,在namenode上运行:
$ hadoop dfsadmin -safemode leave
发表评论
-
Keepalived + LVS(DR) 高可用负载均衡集群
2013-03-20 21:09 241151、方案说明 目标是搭建企业级的高可用负载均衡集群 ... -
Hadoop-HDFS源码学习草记
2012-03-03 21:34 14952012-3-3: HDFS protocol ... -
Hadoop 常见问题
2012-02-18 13:49 2872开发客户端调用无权限问题 异常信息: org. ... -
Hadoop-单机安装配置
2012-02-18 11:54 1554单机安装主要用于程序逻辑调试。安装步骤基本通分布式安装, ... -
APACHE(proxy_ajp_stickysession) + TOMCAT(msm_sticky)实现HA
2012-01-28 02:03 57401.方案特点 Apache端使用AJP方式连接后端TO ... -
APACHE(proxy) + TOMCAT(session复制)实现高可用网站或管理系统集群
2012-01-27 20:59 56601.方案特点 Apache端可选使用sticky ... -
APACHE(proxy_ajp_stickysession) + TOMCAT实现高可用网站或管理系统集群
2012-01-27 16:41 54251.基础环境安装设置 操作系统环境,APA ... -
Apache Http Server 安装配置
2012-01-15 23:53 5472本文描述APACHE在各个常见的环境中的安装配置和常见问题收 ... -
Apache+tomcat 集群-简单HA(No-Session,LB+Failover)
2012-01-15 21:43 9487本文描述APACHE+TOMCAT的简单HA配 ... -
Apache+tomcat实现高可用WEB集群
2012-01-15 20:48 12399概述 本文是企业高可用架构之一:APACHE+TOMC ... -
bash-文件数据分析案例hadoop
2011-10-22 17:57 1386在学习hadoop的过程中,看到一个bash脚本使用awk分析 ... -
Hadoop初学-mapreduce
2011-10-22 15:22 1919看完hadoop权威指南第一,二章,初步了解了hadoop的结 ... -
Hadoop-分布式安装配置
2011-09-24 23:29 4848基础环境 3台linux环境机器,本文采用3个VM ...
相关推荐
Hadoop-HDFS实践教程是...总之,Hadoop-HDFS实践教程是一本非常适合大数据初学者的入门指南,通过学习这本教程,可以帮助初学者快速上手Hadoop技术,理解HDFS的原理和应用,并为今后深入研究大数据技术打下坚实的基础。
同样地,使用文本编辑器打开`D:\Hadoop\hadoop-2.7.7\etc\hadoop\hdfs-site.xml`,配置HDFS的相关属性: ```xml <name>dfs.replication <value>1 <name>dfs.namenode.name.dir <value>/D:/Hadoop/hadoop-...
1. **hadoop-core-1.2.1.jar**:这是Hadoop的核心库,包含了文件系统接口(如HDFS)和MapReduce的基础实现。它提供了对分布式存储和计算的基本支持,包括数据块的概念、节点管理和容错机制等。 2. **hadoop-test-...
《Hadoop Eclipse Plugin 2.6.0:高效开发与测试工具》 Hadoop作为大数据处理的核心框架,为开发者提供了强大的...对于Hadoop初学者和专业开发者来说,熟练掌握并运用这款插件,无疑是提升开发体验和工作效率的关键。
- 配置插件时,确保正确指向Hadoop的配置文件(core-site.xml和hdfs-site.xml),以获取集群的相关信息。 - 利用Eclipse的版本控制功能,如Git,对源代码进行版本管理,便于团队协作和回溯错误。 7. **扩展与...
- **hdfs-site.xml**:该文件用于配置HDFS的具体参数。 ```xml <name>dfs.replication <value>2 ``` - **解释**: - `dfs.replication`:配置数据块的副本数,默认为3,这里设为2表示每个数据块会有...
4. **连接Hadoop集群**:通过设置Hadoop的配置文件(core-site.xml和hdfs-site.xml),开发者可以连接到本地或远程的Hadoop集群。 5. **提交和监控作业**:在Eclipse中直接提交MapReduce作业到Hadoop集群,并可以在...
Hadoop Eclipse Plugin是Apache Hadoop项目的一个重要组成部分,主要用于在Eclipse集成开发环境中方便地创建、管理和调试Hadoop ...如果你是Hadoop初学者或者希望提升开发效率,掌握这个插件的使用将对你大有裨益。
标题中的"hadoop-2.7.4-...总的来说,这个压缩包提供了一个在Windows上快速启动和运行Hadoop 2.7.4的解决方案,避免了手动配置和解决跨平台兼容性问题的麻烦,适合开发者和初学者在本地进行Hadoop相关的开发和学习。
总的来说,这本书是学习和理解Hadoop技术的宝贵资料,无论是对初学者还是经验丰富的开发者,都能从中获取到关于Hadoop Common和HDFS的深入见解,有助于提升大数据处理和分析的能力。通过阅读这本书,读者将能够更好...
总之,《Hadoop技术内幕:深入解析HADOOP COMMON和HDFS架构设计与实现原理》这本书将带你全面了解Hadoop生态系统的基础,帮助你更好地理解和优化Hadoop集群,从而在大数据处理领域发挥更大的效能。无论是初学者还是...
在Windows环境下部署Hadoop Common 2.2.0,需要设置环境变量、配置Hadoop配置文件(如core-site.xml、hdfs-site.xml等),并确保Java环境已安装。此外,还需要对Hadoop目录结构有清晰的理解,如bin、sbin、lib等目录...
对于初学者,了解Hadoop的基本概念和MapReduce编程模型至关重要。MapReduce分为Map阶段和Reduce阶段,Map将大任务拆分成小任务并行处理,Reduce则对Map的结果进行聚合。同时,理解Hadoop的配置文件和YARN资源调度器...
7. 初始化Hadoop配置,如`core-site.xml`、`hdfs-site.xml`、`mapred-site.xml`和`yarn-site.xml`,以适应你的集群环境。 8. 格式化NameNode: ``` hdfs namenode -format ``` 9. 启动Hadoop服务: ``` sbin/...
首先,我们需要配置Hadoop的配置文件(core-site.xml和hdfs-site.xml),设置HDFS的地址和端口。然后,通过`FileSystem.get(conf)`方法获取`FileSystem`实例,其中`conf`是配置对象。 4. 文件操作: - 读取文件:...
Hadoop-0.20.2-Eclipse-Plugin是一个经典的插件,专为Eclipse集成开发环境(IDE)设计,旨在提升Hadoop开发者的工作效率。...对于初学者和经验丰富的Hadoop开发者来说,这种集成开发环境的增强都是一个巨大的福音。
Hadoop的配置文件包括core-site.xml、hdfs-site.xml、mapred-site.xml和yarn-site.xml等,它们定义了Hadoop运行时的各项参数,如数据块大小、副本数量、内存分配等。用户可以根据实际需求对这些配置进行调整。 在...
本资源提供的“hadoop1-2-1源码”是Hadoop 1.2.1版本的源代码,这个版本在Hadoop发展历史上具有重要的地位,为许多大数据处理项目提供了基础。 Hadoop的核心思想是将大型数据集分布到集群上的多台计算机上进行处理...