Hadoop学习笔记—HDFS

[TOC]

上一份工作主要负责大数据平台的建设,在这个过程中积累了一些Hadoop生态组件的搭建和使用笔记,由于时间关系,不打算去修改其中的错别字和排版问题,直接释出原始笔记。

搭建安装

三个核心组件

一个hadoop基本集群,牵涉三个组件:

  • hdfs 负责分布式的文件存储
  • yarn 负责分布式的资源管理
  • mr 负责分布式计算

    安装

    配置环境变量
    配置etc/hadoop/hadoop-env.sh、etc/hadoop/hadoop-env.sh、etc/hadoop/yarn-env.sh 这三个脚本来配置三个组件执行的环境变量 当然,机器特定的环境变量可以放在 /etc/profile.d 中

最重要的是在上述三个shell脚本的最后,配置JAVA_HOME。 上述三个shell中,有大量环境变量KEY可以配置,他们一般见名知意。可以使用一些带OPTS后缀的配置,去覆盖那些特定配置。带OPTS的后缀有

file

比如HADOOP_HEAPSIZE_MAX=1g 可以被HADOOP_NAMENODE_OPTS="-Xmx5g" 所覆盖

配置各上述三组件守护进程的相关属性

上述环境变量配置好后,就要配置hdfs, yarn, mr三者的进程,即程序执行的行为属性。其分别对应的配置文件为

  • etc/hadoop/core-site.xml 、etc/hadoop/hdfs-site.xml 用于给hdfs配置
  • etc/hadoop/yarn-site.xml 用于给yarn配置
  • etc/hadoop/mapred-site.xml 用于给mr配置 具体看文档即可,这里对一些有意思的配置单列说明

hdfs的配置

  • dfs.namenode.name.dir namenode的数据存储路径,多个文件,表示数据存多份,提高冗余

yarn的配置

  • yarn.log-aggregation-enable 启动log aggregation,这会将yarn集群中执行应用的本地日志,复制到hdfs集群中进行高可用管理
启停

可以针hdfs,mr,yarn三个组件的各角色进行启动。

其中Hdfs的各角色,可以使用etc/hadoop/workers配置,通过$HADOOP_HOME/sbin/start-dfs.sh批量启动。

具体启停看文档

监控和性能

Hadoop Rack Awareness

Hadoop Rack Awareness,启用该特性,让Hadoop集群感知物理存储拓扑,从而更好的提高数据分片性能,具体看文档

yarn的NodeManagers监控

可以指定一些监控nodeManager状态的脚本给NodeManager, NodeManager会周期性的调用,检查自己的状态,yarn则会收集该状态,然后不会将程序分发到这些异常NodeManager上执行

命令

文档地址:https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/FileSystemShell.html

hdfs的命令

如果hadoop操作的是hdfs,那么下面两种命令格式等效

  • bin/hadoop fs <args>
  • hdfs dfs <args>

hadoop fs的相关命令支持多种文件系统

  • hdfs hadoop自己的分布式文件系统
  • Local FS 本地文件系统,即为当前机器的文件系统
  • WebHDFS
  • S3 FS 亚马逊的分布式文件系统

hadoop fs命令一般操作的文件系统路径格式URI为scheme://authority/path,比如hdfs举例hdfs://namenodehost/parent/child

appendToFile

将本地单个文件或多个文件,或则本机的标准输入中的内容,拷贝到目标文件系统 用法:hadoop fs -appendToFile <localsrc> ... <dst>

hadoop fs -appendToFile localfile /user/hadoop/hadoopfile
hadoop fs -appendToFile localfile1 localfile2 /user/hadoop/hadoopfile
hadoop fs -appendToFile localfile hdfs://nn.example.com/hadoop/hadoopfile
hadoop fs -appendToFile - hdfs://nn.example.com/hadoop/hadoopfile Reads the input from stdin.

Returns 0 on success and 1 on error.

cat

将文件系统中指定文件内容输出到终端 用法:hadoop fs -cat [-ignoreCrc] URI [URI ...]

hadoop fs -cat hdfs://nn1.example.com/file1 hdfs://nn2.example.com/file2
hadoop fs -cat file:///file3 /user/hadoop/file4

Returns 0 on success and -1 on error

checksum

对指定文件生成checksum值 用法:hadoop fs -checksum URI

hadoop fs -checksum hdfs://nn1.example.com/file1
hadoop fs -checksum file:///etc/hosts

file

chgrp

改变文件的组 用法:hadoop fs -chgrp [-R] GROUP URI [URI ...]

  • 其中-R是表示将该路径下的所有文件组都修改
  • GROUP是要修改成的组
  • URI是文件或文件夹的路径
  • 该命令只有管理员或当前文件的拥着才能执行
chmod

改变文件的读写执行模式 用法:hadoop fs -chmod [-R] <MODE[,MODE]... | OCTALMODE> URI [URI ...]

  • 其中-R是表示将该路径下的所有文件组都修改
  • 该命令只有管理员或当前文件的拥着才能执行

todo:具体mod详情,需要再查阅

chown

改变文件的拥有者 用法:hadoop fs -chown [-R] [OWNER][:[GROUP]] URI [URI ]

  • 其中-R是表示将该路径下的所有文件组都修改
  • 该命令只有管理员或当前文件的拥着才能执行
copyFromLocal

将当前机器本地文件,拷贝到分布式文件系统 用法:hadoop fs -copyFromLocal [args] <localsrc> URI 其中命令参数有以下几个,都是可选

  • -p复制到分布式文件系统的文件保留原文件的修改时间、权限、所有者信息
  • -f 如果分布式文件系统已经存在该文件,则覆盖
  • -l 允许DataNode延迟持久化该文件,replication factor 是1. 也即这种方式不会要去数据马上落地和写副本,具有丢数据的风险,但是写入速度可能会很快
  • -d 文件复制过程中,将不会创建后缀为._COPYING_格式的文件
copyToLocal

将分布式文件系统中的文件拷贝到本地

count

同进指定路径的文件、文件夹个数、当前文件占用量大小、指定路径允许创建的文件、文件夹个数,以及允许的最大文件、文件容量 用法:hadoop fs -count [-q] [-h] [-v] [-x] [-t [<storage type>]] [-u] [-e] <paths> 如果只用quota,而不加任何以下且与参数,则输出的统计项有

DIR_COUNT(当前路径的文件夹个数), FILE_COUNT(文件个数), CONTENT_SIZE(容量占用大小), PATHNAME(当前统计的路径)
  • -h 将容量以人方便读的方式展示,建议开启
  • -v 对统计的内容,输出表头,方便用户知道统计中某列是什么含义,建议开启
  • -q 代表quota, 能够统计出指定路径的name quota和space quota。 输出的列有QUOTA(总的name quota的大小), REMAINING_QUOTA(还剩name quota的大小), SPACE_QUOTA(space quota的大小), REMAINING_SPACE_QUOTA(还剩的space quota的大小), DIR_COUNT, FILE_COUNT, CONTENT_SIZE, PATHNAME
  • -u 跟-q一样,也是统计容量配合总计和剩余配合,只是不再输出-count默认的那些项。-u的输出列为:QUOTA, REMAINING_QUOTA, SPACE_QUOTA, REMAINING_SPACE_QUOTA, PATHNAME
  • -e hadoop3.0引入的,文件擦除策略,需要再查资料解读

demo举例

hadoop fs -count hdfs://nn1.example.com/file1 hdfs://nn2.example.com/file2
hadoop fs -count -q hdfs://nn1.example.com/file1
hadoop fs -count -q -h hdfs://nn1.example.com/file1
hadoop fs -count -q -h -v hdfs://nn1.example.com/file1
hadoop fs -count -u hdfs://nn1.example.com/file1
hadoop fs -count -u -h hdfs://nn1.example.com/file1
hadoop fs -count -u -h -v hdfs://nn1.example.com/file1
hadoop fs -count -e hdfs://nn1.example.com/file1

对于quota(配额)的说明:

  • name quota 以指定路径做为根路径的整颗文件树上允许创建的文件、文件夹名称的总体个数
  • space quota 以指定路径做为根路径的整颗文件树上允许创建的文件、文件夹的总体字节数

使用hadoop fs -count -q命令查询配合时,如果配额没有设置,会显示noneinf 可以使用hdfs dfsadmin命令对某个指定路径设置配额

cp

将一个文件或多个文件拷贝到另一个地方。 拷贝当个文件时,目的地可以是另一个文件,也可以是文件夹 拷贝多个文件时,目的地必须是文件夹 用法:hadoop fs -cp [-f] [-p | -p[topax]] URI [URI ...] <dest>

  • -f参数加上时,目的地有该文件,则会将其覆盖
df

查询某个指定路径的剩余容量 用法:hadoop fs -df [-h] URI [URI ...]

  • -h是人可读的形式

df是看的整个文件系统的使用情况和可用空间 而-count是计算指定目录的空间占用情况,以及管理员给分配的配合使用情况

du

查看指定路径的文件和文件夹大小汇总

find

查找指定路径下,名字满足表达式的文件,并打印到终端 hadoop fs -find / -name test -print

-name 对文件名大小写敏感 -inam

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值