hdfs需要几台机器 要注意的几个问题

Hi! 新朋友DataBlockScanner用于周期性地对块文件进行校验,当客户端读取整个块时,也会通知DataBlockScanner校验结果. 与扫描相关的操作参数:最大扫描速度.最小扫描速度和默认扫描周期.
FSDirectory and FSNamesystem 都是用来管理NameSpace状态的结构. FSDirectory是一个内存数据结构,所有操作都在内存中进行. 相比之下,FSNamesystem会将操作持久化到数据结构. INodeMap存储所有INode,存储INode ID 到INode的映射关系 FSDirectory有一组方法,例如:addFile JournalSet管理一组Journals JournalAndStream JournalManager 用来管理存储的edi
HDFS命名空间保存在NameNode中,NameNode使用一个事务日志(EditLog)保存对系统元数据的所有改动. 整个文件系统的命名空间,包括文件和块之间的映射.文件系统属性等都保存在一个叫FsImage文件中. FSImage 是HDFS核心数据结构之一,从构造函数可以看出主要分为三部分: NNStorage.FSEditLog和NNStorageRetentionManager 三个组件的主要功能如下所述: NNStorage is responsible for managemen
此文假设您已经安装好了Hadoop2.5.0,下面开始着手编写程序,所需依赖jar包: hadoop-common-2.5.0.jar 把此jar包加到你项目里面即可. 首先我在HDFS上利用MRV2程序已经生成了一个文件[input](你们可以自动手动随便上传一个文件也是可以的),目录如下图: 文件内容如下: A00WindFarm1,33 A01WindFarm2,66 A02WindFarm3,99 A03WindFarm4,132 A04WindFarm5,165 A05WindFarm
HDFS文件的读取 文件读取的过程如下: 1)解释一 客户端(client)用FileSystem的open()函数打开文件. DistributedFileSystem用RPC调用元数据节点,得到文件的数据块信息. 对于每一个数据块,元数据节点返回保存数据块的数据节点的地址. DistributedFileSystem返回FSDataInputStream给客户端,用来读取数据. 客户端调用stream的read()函数开始读取数据. DFSInputStream连接保存此文件第一个数据块的最
准备 hadoop集群和开发环境在前面必须准备好,调试代码没有将Configuration配置进hadoop的hdfs地址,调试时请手动添加. 同时调试时,请修改main方法到需要调试的方法. 调试 package me.j360. import org.apache.hadoop.conf.C import org.apache.hadoop.fs.*; import org.apache.hadoop.hdfs.DistributedFileS
1.系统环境 centos-6.4 Python2.6 2.安装步骤 1.检查Python版本 2.安装setuptools 原因: 安装pip时没有setuptools会显示无法安装 步骤: 下载安装包 http://zhongwei-leg.iteye.com/blog/813753 sh setuptools-0.6c11-py2.6.egg 3.安装pip 3.1下载 wget &https://pypi.python.org/packages/source/p/pip/pip-1.5.
HDFS is a filesystem designed for storing very large files with streaming data access patterns, running on clusters of commodity hardware. Let's examine this statement in more detail: Very large files &Very large& in this context means files tha
文件系统的一致模型描述了对文件读写的数据可见性.HDFS为性能牺牲了一些POSIX请求,因此一些操作可能比想像的困难. 在创建一个文件之后,在文件系统的命名空间中是可见的,如下所示: 1. Path p = new Path(&p&); 2. Fs.create(p); 3. assertThat(fs.exists(p),is(true)); 但是,写入文件的内容并不保证能被看见,即使数据流已经被刷新.所以文件长度显示为0: 1. Path p = new Path(&p&
1. HDFS使用集中式单一节点架构(NameNode)来维护文件系统元数据,而在Swift中,元数据分布在整个集群中并拥有多个副本.注意:集中式元数据存储使HDFS存在性能.单点故障和扩展性问题,因此规模越大就性能越低,就越容易不可用,就越难扩展甚至不能扩展,所幸的是HDFS2使用NameNode HA和HDFS Federation解决了这三个问题. 2. Swift在设计时考虑到了多租户架构,而HDFS没有多租户架构这个概念. 3. HDFS针对大文件作了优化(HDFS关注吞吐量,常用于批
现在我们将通过命令行与HDFS交互.HDFS还有很多其他接口,但命令行是最简单的,同时也是许多开发者最熟悉的. 在我们设置伪分布配置时,有两个属性需要进一步解释.首先是fs.default.name,设置为hdfs://localhost/, 用来为Hadoop设置默认文件系统.文件系统是由URI指定的,这里我们已使用了一个hdfs URI 来配置HDFS为Hadoop的默认文件系统.HDFS的守护程序将通过这个属性来决定HDFS名称节点的宿主机和端口.我们将在localhost上运行,默认端口
HDFS集群有两种节点,以管理者-工作者的模式运行,即一个名称节点(管理者)和多个数据节点(工作者).名称节点管理文件系统的命名空间.它维护着这个文件系统树及这个树内所有的文件和索引目录.这些信息以两种形式将文件永久保存在本地磁盘上:命名空间镜像和编辑日志.名称节点也记录着每个文件的每个块所在的数据节点,但它并不永久保存块的位置,因为这些信息会在系统启动时由数据节点重建. 客户端代表用户通过与名称节点和数据节点交互来访问整个文件系统.客户端提供一个类似POSIX(可移植操作系统界面)的文件系统接
一个磁盘有它的块大小,代表着它能够读写的最小数据量.文件系统通过处理大小为一个磁盘块大小的整数倍数的数据块来运作这个磁盘.文件系统块一般为几千字节,而磁盘块一般为512个字节.这些信息,对于仅仅在一个文件上读或写任意长度的文件系统用户来说是透明的.但是,有些工具会维护文件系统,如df 和 fsck, 它们都在系统块级上操作. HDFS也有块的概念,不过是更大的单元,默认为64 MB.与单一磁盘上的文件系统相似,HDFS上的文件也被分为以块为大小的分块,作为单独的单元存储.但与其不同的是,HDFS
Hadoop版本: Hadoop 2.6.0 连接HDFS String URL=&hdfs://hadoop001:9000&; Configuration conf = new Configuration(); conf.set(&fs.defaultFS&, URL); FileSystem fs = FileSystem.get(conf); 上传文件到HDFS //获取本地文件的输入流 FileInputStream in=new FileInputStr
设计基础: (1)由于硬件错误是常态.因此需要冗余. (2)流式数据访问,即数据批量读取,而非随机读取.hadoop擅长做的是数据分析而不是事务处理. (3)大规模数据集 (4)简单一致性模型.为了降低系统复杂度,对文件采取一次性写多次读的逻辑设计,即是文件一经写入,关闭后,就再也不能修改. (5)程序采用&数据就近&原则分配节点执行. 体系结构: hdfs采用主从结构,Namenode属于主端,Datanode属于从端. Namenode: 1) 管理文件系统的命名空间. 2) 记录
(WJW)高可用,完全分布式Hadoop集群HDFS和MapReduce安装配置指南 为了部署HA集群,应该准备以下事情: namenode服务器: 运行namenode的服务器应该有相同的硬件配置. journalnode服务器:运行的journalnode进程非常轻量,可以部署在其他的服务器上.注意:必须允许至少3个节点.当然可以运行更多,但是必须是奇数个,如3,5,7,9个等等.当运行N个节点时,系统可以容忍至少(N-1)/2个节点失败而不影响正常运行. 在HA集群中,standby状态的
Client提交任务后,JobInProgress类会调用设置的InputFormat类的getSplits函数. 下面分析下TextInputFormat格式的getSplits函数. 先调用了这个函数 /** List input directories. * Subclasses may override to, e.g., select only files matching a regular * expression. * Property mapred.input.subdir,
伟大的作家XXX曾经说过:1000个人便有1000个HDFS.
public void run() {//数据节点运行 try { DataInputStream in = new DataInputStream(new BufferedInputStream(s.getInputStream())); try {//获取输入流 byte op = (byte) in.read();//读取操作类型 if (op == OP_WRITE_BLOCK) {//如果是写一个块 / // Read in the header // DataOutputStream
可先看下网友的解析: 以下为我的解析: 当一个Block经由所有的DataNode写完后,就需要告诉namenode可以执行reportWrittenBlock函数了. 下面就来解析下这个函数的意思! ==================================== /** * The client can report in a set written blocks that it wrote. * These blocks are reported via the client in
public LocatedBlock addBlock(String src, String clientMachine) throws IOException { int retries = 5;//设定重试次数为5 Object results[] = namesystem.getAdditionalBlock(new UTF8(src), new UTF8(clientMachine)); //获取新的一个Block和DataNode节点信息 while (results != null
话说client通过exists()函数得知目前的namenode那边不存在此文件后, 则通过namenode.create函数创建一个文件.具体细节如下: 这里意味着:clientMachine的clientName创建了src文件. clientMachine只用来选择目标DataNode. public LocatedBlock create(String src, String clientName, String clientMachine, boolean overwrite) th
在上传一个文件时,需要判断文件是否存在于HDFS中,这是通过向namenode节点发请求得到的. 那么,namenode如何判断一个文件是否存在于文件系统中呢? ------------------------ /** */ public boolean exists(String src) throws IOException { return namesystem.exists(new UTF8(src));//直接调用namesystem. } 那下面我们来看看namesystem是如何来
上传时,涉及到很多IO类,但是最关键的类就是:DFSOutputStream这个类.[0.1.0] 下面就开始分析这个类的代码. -------------------------------------------类结构分析 -------------------------------------------具体函数分析 public synchronized void write(byte b[], int off, int len) throws IOException { if (cl
以1.7为例,之前Nutch的输出可以自定义其它存储系统中,具体原理不赘述. 项目有个需求,就是文件仍然保存在HDFS中,而不是索引到其它存储系统中. 也就是说,不用写 public class XXX implements IndexWriter 这样的插件了, 那么,问题来了,怎么修改Nutch的源码,使得结果顺利存在HDFS中呢? ----------那就让我们从源头一步一步来修改,碰到问题就解决问题. 首先Crawl.java中,原先在索引阶段有这么一些代码. if (i & 0) {
在Hadoop2.0.0之前,NameNode(NN)在HDFS集群中存在单点故障(single point of failure),每一个集群中存在一个NameNode,如果NN所在的机器出现了故障,那么将导致整个集群无法利用,直到NN重启或者在另一台主机上启动NN守护线程. 主要在两方面影响了HDFS的可用性: (1).在不可预测的情况下,如果NN所在的机器崩溃了,整个集群将无法利用,直到NN被重新启动: (2).在可预知的情况下,比如NN所在的机器硬件或者软件需要升级,将导致集群宕机. H
HBase0.96.0安装说明 注:安装配套2.2.0版本的HBase,需要-0.96.2-hadoop2-bin.tar.gz 1.1 下载安装包 下载地址:http://mirror.esocc.com/apache/hbase/ hbase-0.96.2/hbase-0.96.2-hadoop2-bin.tar.gz 安装: $ tar -zxf hbase-0.96.2-hadoop2-bin.tar.gz $ cd hbase-0.96.2-hadoop2 配置: conf/hbase
本文example6环境和之前的Hadoop 1.x不同,是在Hadoop 2.x环境下测试.功能和前面的日志处理程序一样. 第一个newLISP脚本,起到mapper的作用,在stdin中读取文本数据,将did作为key, value为1,然后将结果输出到stdout 第二个newLISP脚本,起到reducer的作用,在stdin中读取&key, values&, key是dic, values是所有的value,简单对value求和后,写到stdout中 最后应该可以在HDFS下看到结果
学习Hadoop的过程中,教程标注需要在启动集群之前先格式化hdfs文件系统. 我之前以为格式化就跟linux一样, 后来很粗略的看过老版的源码,发现比我想的要简单很多.唯一可以解释的就是分布式的因素吧. PS: 老版的格式化分析请见我之前博客:http://my.codeweblog.com/qiangzigege/blog/304601 ------------------------------------------------------------------------------
为了学习HDFS 源码,我们需要从源码来编译hadoop,这样也可以修改源码来跟踪. 下面就开始描述编译步骤.我的操作系统是ubuntu 虚拟机里有3台机器,我选择了其中1台编译了Hadoop. 另外:一定要找一个网速好的机器,否则出现错误还以为是别的问题,实际上是网速不好影响依赖jar的下载. --------------------------------------------------------------------------------------- 1 环境说明 192.16
原文链接: Hdfs-site.xml //指定name镜像文件存放目录,如不指定则 //默认为core-site中配置的tmp目录 &property& &name&dfs.name.dir&/name& &value&/usr/local/hadoop/hdfs/name&/value& &/property& //数据节点冗余备份的数量,由于实验只有2个 // NN顾设置唯一,实际配置是可由实际情况 //配置,建议尽量大于3 &
我们都知道Hadoop的底层是HDFS-Hadoop Distributed File System.也就是Hadoop分布式文件系统. 所有的运算都是基于HDFS文件的,它的核心关键词有:主从NameNode VS DataNode. -----------其中NameNode上存储的就是元数据---描述数据文件的meta信息. 存在形式有:内存信息+硬盘文件信息. 这段时间,就让我们一起来了解HDFS的元数据以及HDFS文件系统的要义吧. --------------------------
1 概述 默认情况下hadoop中hdfs和mapreduce运行在一种不安全的环境中,引用&hadoop权威指南&中的一段话:&从安全角度分析,Hadoop缺乏一个安全打的认证机制,以确保试图在集群上执行操作的用户恰是所声称的安全用户.但是,Hadoop的文件许可模块只提供一种简单的认证机制,以决定各个文件对特定文件的访问权限.& 上面一段话描述的安全问题,我也遇到了,对于启用权限的伪分布式hadoop环境,写文件的时候不提供用户信息,则访问出错,但是在写文件的api中加
今天在学习如何从hadoop中读取数据时,写了一个简单的方法,测试时,却报以下错误: 以下是读取hadoop中文件并写入本地磁盘的代码: import java.io.BufferedR import java.io.FileW import java.io.InputS import java.io.InputStreamR import java.net.URL; import org.apache.hadoop.i
一.项目要加入的一些包: 二.下面是代码相关的: package org.apache.hadoop.examples. import java.io.IOE import org.apache.hadoop.conf.C import org.apache.hadoop.fs.FSDataOutputS import org.apache.hadoop.fs.FileS import org.apache.hadoop
Exception in thread &main& java.lang.IllegalArgumentException: Wrong FS: hdfs://master:9000/index.html, expected: file:/// at org.apache.hadoop.fs.FileSystem.checkPath(FileSystem.java:390) at org.apache.hadoop.fs.RawLocalFileSystem.pathToFile(Ra
看完了google的GFS论文,趁热打铁写下了一点点读后感 1.果然和HDFS设计一样 2.比较擅长处理连续读大文件的情况,对于随机读和频繁读取小文件则有短板,这与GFS的目标有关,它的目标是索引全球网页,这非常符合google的需求 3.文件块被存储在linux硬盘上,GFS只是一个管理器而已,哪些文件操作API也只是个对这些抽象文件的管理而已. 4.Chunk Server之所以没用缓存是因为借用了linux的系统级缓存机制 5.Master和Chunk Server的心跳是由Master主
格式化namenode后,通过jps可发现datanode没有启动成功,查看datanode上的日志/home/wukong/usr/hadoop-1.2.1/logs/hadoop-wukong-datanode-bd12.log,可以发现是namespaceid不对. 解决办法: 1.查看namenode上hadoop.tmp.dir参数路径 /usr/hadoop-tmp/dfs/name/current/VERSION中的namespaceid: 2.在其他数据节点上修改上dfs.dat
本篇我们来看看HDFS集群的部署, 1 Customize configuration files 下面介绍的配置文件的配置项是你集群中必须配置的 1 fs.defaultFS(/etc/hadoop/conf/core-site.xml) 注意:fs.default.name配置项已经废弃不用了,而由fs.defaultFS来指定NodeName,默认格式是hdfs://&namenode host&:&namenode port&,注意&namenode&部分必须是
Hadoop中关于文件操作类基本上全部是在&org.apache.hadoop.fs&包中,这些API能够支持的操作包含:打开文件,读写文件,删除文件等. Hadoop类库中最终面向用户提供的接口类是FileSystem,该类是个抽象类,只能通过来类的get方法得到具体类.get方法存在几个重载版本,常用的是这个: static FileSystem get(Configuration conf); 该类封装了几乎所有的文件操作,例如mkdir,delete等.综上基本上可以得出操作文
1 在CentOS 6.4上安装PostgreSql 9.3 1.1 用yum安装PostgreSql Server: CentOS 6.4用yum默认安装的PostgreSql版本是8.x,比目前最新的9.3差了一代,需要更新yum repository之后,才能用yum安装.用yum安装的好处是方便.模块化,而且以后比较好卸载. 首先到http://yum.postgresql.org/repopackages.php找到对应操作系统的合适的yum repository版本,我使用的服务器环
文件的删除和恢复 和Linux系统的回收站设计一样,HDFS会为每一个用户创建一个回收站目录:/user/用户名/.Trash/,每一个被用户通过Shell删除的文件/目录,在系统回收站中都一个周期,也就是当系统回收站中的文件/目录在一段时间之后没有被用户回复的话,HDFS就会自动的把这个文件/目录彻底删除,之后,用户就永远也找不回这个文件/目录了.在HDFS内部的具体实现就是在NameNode中开启了一个后台线程Emptier,这个线程专门管理和监控系统回收站下面的所有文件/目录,对于已经超过
专辑:炼数成金 hadoop 视频教程 简介:hadoop入门级经典课程,炼数成金-hadoop 1 hadoop01a_Hadoop的源起与体系介绍
16:36 | 播放(59) | 评论(0) | 时长:32:18 2 hadoop01b_Hadoop的源起与体系介绍
16:36 | 播放(33) | 评论(0) | 时长:36:27 3 hadoop01c_Hadoop的源起与体系介绍
16:37 | 播放(9) | 评论(
笔者使用的版本是 hadoop-hdfs-fuse-2.0.0+960-1.cdh4.2.1.p0.9.el6.x86_64 ,将使用fuse导数据时出现大量IO错误,大体有2类: fuse_dfs: ERROR /data/1/jenkins/workspace/generic-package-rhel64-6-0/topdir/BUILD/hadoop-2.0.0-cdh4.2.1/src/hadoop-hdfs-project/hadoop-hdfs/src/main/native/fus
对象存储的技术特点:Key-value存储,超大的map:GEP/PUT/DELETE/....:10个9以上的可靠性:3个9以上的可用性:最终一致性:不支持查询和检索等功能:规模决定一切:数据可靠性:多副本保障.副本恢复速度.异地副本(That's a dream):数据一致性:最终一致性.版本同步:服务可用性:一架永远在天上飞行的飞机.实时在线,不能停服.在线升级,维护和保养. 对象存储与HDFS: (1)hadoop分布式文件系统:面向海量存储:多副本保障:自动数据平衡和副本恢复. (2)
HDFS设计前提与目标 硬件错误是常态而不是异常.HDFS被设计为运行在普通硬件上,所以硬件故障时正常的,HDFS可能由成百上千的服务器节点构成,每个服务器节点上都存储着文件系统的部分数据,而HDFS的每个组件随时都有可能出现故障.因此,错误检测并快速自动恢复是HDFS的最核心的设计目标. 流式数据访问.运行在HDFS上的应用主要是以流式数据读取为主,做批量处理而不是用户交互处理,因此HDFS更关注数据访问的高吞吐量. 大规模数据集.HDFS的典型文件大小可能都在GB级甚至TB级,因此HDFS支
Hypertable on HDFS(hadoop) 安装 Hadoop - HDFS 安装指南 过程 4.2. Hypertable on HDFS 创建工作目录 $ hadoop fs -mkdir /hypertable $ hadoop fs -chmod 777 /hypertable 安装 Java 运行环境 yum install java-1.7.0-openjdk yum localinstall http://ftp.cuhk.edu.hk/pub/packages/apac
Hbaes 安装部署 安装准备: 1. jre-7-linux-x64.rpm (http://www.oracle.com/technetwork/java/javase/downloads/java-se-jre-7-download-432155.html) 2. cloudera-cdh-4-0 (http://archive.cloudera.com/cdh4/one-click-install/redhat/5/x86_64/cloudera-cdh-4-0.x86_64.rpm)
搭建Hbase环境有点郁闷 开始是直接参考Apache Hadoop 一直搞不定 最后同事介绍了cloudera 直接使用rpm完成基础软件的安装 之后就按照步骤一点一点来弄 今天下午总算是跑起来了 没有配置mapreduce 节点包括一个NameNode 一个DataNode 配置过程还在整理 之后贴上来 在配置Hadoop的时候 直接修改/etc/hosts 开始是把本机的主机名写在127.0.0.1 这个条目后面 结果导致其它节点连接不上NameNode 看了NameNode的netsta
HDFS分析(四) 在HDFS中可能同时有多个客户端在同一时刻写文件,如果不进行控制的话,有可能多个客户端会并发的写一个文件,所以需要进行控制,一般的想法是用一个互斥锁,在某一时刻只有一个客户端进行写操作,但是在分布式系统中有如下问题: 1.每次写文件前,客户端需要向master获取锁情况,他们之间的网络通讯太频繁. 2.当某个客户端获取锁之后和master失去联系,这个锁一直被该客户端占据,master和其他客户端不能获得锁,后续操作中断. 在HDFS中使用了租约解决上面的问题: 1.当写一个
Copyright (C) , All Rights Reserved.
版权所有 闽ICP备号
processed in 0.042 (s). 10 q(s)没有更多推荐了,
不良信息举报
举报内容:
利用hdfs的java api进行文件操作注意事项
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!当前位置: &&>> 阅读正文
View: 172,263
Author: Dong
- 359,966 阅 - 273,613 阅 - 261,861 阅 - 247,109 阅 - 245,229 阅 - 243,153 阅 - 223,096 阅 - 214,590 阅 - 211,832 阅 - 204,386 阅
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = '
collapsItems['collapsArch-'] = 'HDFS文件上传:8020端口拒绝连接问题解决! - hdfs-hadoop - ITkeyowrd
HDFS文件上传:8020端口拒绝连接问题解决!
推荐:1、报错信息“提示找不到或无法加载主类”
解决步骤: (1)检查函数中有无main方法;
(2)检查用java 命令 时输入的类名是否正确;
(3)检查c
领取地址:
& & &忙了一整天,一直在解决hdfs上传文件时的错误,昨天最后有了一些头绪,但是没来得及验证,今天上午终于验证了自己的想法,从而顺利解决了困扰了自己许久的问题。以这个问题为契机,自己对Hadoop的配置文件重新进行了梳理,顺便加深了对于HDFS的理解。首先来看一直困扰自己的问题,该问题是在自己尝试向HDFS上传本地文件的时候发生的:
CopyFromLocal: Call to localhost/127.0.0.1:8020 failed on connection exception: java.net.ConnectException
& & &问题提示本机的8020端口无法连接。一开始我都懵了,怎么还有8020端口呢,自己载配置文件里明明设定的namenode的端口是9000,但是为什么会连接8020端口呢?解决问题的过程就不再赘述了,总之是log+google+thinking的结合,在自己尝试修改默认连接8020端口无效之后,转而修改namenode的端口9000。方法是修改hadoop配置文件core-site.xml重点属性配置fs.default.name的值修改为hdfs://localhost:8020。修改之后运行通过,稍后再上图,因为问题到这里并没有结束。
& & & Hadoop的关键配置文件
& & &hdfs上传文件成功之后,自己又开始好奇地修改其配置文件。因为之前自己对于hadoop一直都是胡打乱撞,缺乏系统的理解和认识,在网上查到了一个篇hadoop配置文件的资料,于是就开始动起手来,不想出现了新的错误。首先来梳理下hadoop的配置文件:
1. hadoop-env.sh
& & &hadoop的运行环境配置,主要设置HADOOP_HOME和JAVA_HOME两个环境变量,指定其所在路径即可
2. core-site.xml
& & &注意fs.default.name属性要正确配置,该属性用于配置namenode节点,我们都知道一个hadoop系统中一般只有一个namenode节点管理所有的datanode,所以设置一定要正确:hdfs://localhost:8020。一般默认都是9000端口,但是我自己的ubuntu并不能正常运行,所以才修改为端口是hadoop的namenode的RPC调用端口。
3. hdfs-site.xml
& & &dfs.replication属性,顾名思义表示指定的hadoop文件块的备份数量,一般默认是3份,可以设为1
& & &dfs.name.dir属性,非常重要,推荐:原上传文件命令 move_uploaded_file($_FILES['uploadfile']['tmp_name'],$uploadfile)
使用iconv进行编码转换 move_uploaded_file($_FILES['uploadfile']['tmp用来设置存放namenode数据的目录,如果这个目录访问失败,则会导致namenode启动失败
& & &dfs.data.dir属性,用来指定datanode上本地存放数据的目录,与namenode的设置独立没有关系
4. mapred-site.xml
& & &mapred.jop.tracker属性用来设置JobTracker的主机、IP地址和端口,本机的话可以设置为:localhost:9001
& & &Hbase系统的配置文件主要需要注意以下几个:
1. hbase-env.sh
& & &设置环境变量,要export Java路径,最后一行有个属性HBASE_MANAGES_ZK设为true表示启用自带的ZK,否则运行时会提示打开ZK错误,到时也可以使用apt-get单独的zookeeper运行。
2. hbase-site.xml
& & &hbase.rootdir属性设置region server的共享目录,默认写到tmp中,不改写的话重启后数据会丢失,我的设为了hdfs://localhost:8020/hbase
& & &zookeeper.znode.parent表示Hbase的跟ZNODE,一般默认为/hbase
& & & 在修改完配置文件后,启动hadoop时发现namenode无法启动,使用hadoop namenode -format也不能成功:
& & &&其中提示&Cannot create directory /hdfs/name/current&。一般出现这个错误有两个原因,一个是路径设置的有错误,另一个原因则更有可能是因为权限问题。自己的在指定namenode的存放路径时使用了&~&用来表示主目录,但是事实证明是行不通的,必须使用绝对路径,自己的修改为/home/hadoop/hdfs/;然后确保home的属性是775,而hadoop的属性是775即可。
& & & 这里的hadoop fs -ls [directory]可以列出目录内容,hadoop fs -lsr则可以递归列出目录的子目录。-mkdir和-rmr分别用来创建和删除目录。之后我们可以使用hadoop fs -put src hdfs://localhost:8020/user/hadoop/img中拷贝自己的IMG文件和JSON文件。
& & &这里还有一段小插曲,自己在解决namenode文件创建失败问题时,找到了hadoop默认的存放namenode和data的目录,在/tmp/hadoop-hadoop下,当然,设置dfs.name.dir后便存放到指定的目录了。HDFS文件存放在实际的节点本地系统中,但是使用特殊的编码方式,有着自己的文件系统树结构,因此一般不能用cd命令进入查看。上传文件就是将自己的文件添加进HDFS的树中。
& & & 由于配置时经常需要修改文件,不晓得什么时候不小心就导致配置错误,因此经常备份是个好习惯,可以使用ubuntu的tar命令来实现备份,生成backup.tgz后放在/下:
tar &-cvpzf &backup.tgz & --exclude=/proc &--exclude=/backup.tgz &--exclude=/lost+found &--exclude=/mnt &--exclude=/sys &/ & & &&恢复的时候可以使用命令:
tar -xvpzf &backup.tgz -C /
推荐:先把用到的代码贴出来。
代码源自网络,由于我在应用时出了一些问题,所以贴出来,以便帮助大家。哈哈,看了记着评论……
第一个index.jsp &%@ page languag
忙了一整天,一直在解决hdfs上传文件时的错误,昨天最后有了一些头绪,但是没来得及验证,今天上午终于验证了自己的想法,从而顺利解决了困扰了自己许久的问题。以这个问题为契机,自己对H
相关阅读排行
相关内容推荐
请激活账号
为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。
您的注册邮箱:
如果您没有收到激活邮件,请注意检查垃圾箱。

我要回帖

更多关于 注意这几个问题肺癌 的文章

 

随机推荐