Hadoop的Shell基本操作

Hadoop简介

Hadoop由Apache基金会开发的分布式系统基础架构,是利用集群对大量数据进行分布式处理和存储的软件框架。用户可以轻松地在Hadoop集群上开发和运行处理海量数据的应用程序。Hadoop有高可靠,高扩展,高效性,高容错等优点。Hadoop 框架最核心的设计就是HDFS和MapReduce。HDFS为海量的数据提供了存储,MapReduce为海量的数据提供了计算。此外,Hadoop还包括了Hive,Hbase,ZooKeeper,Pig,Avro,Sqoop,Flume,Mahout等项目。

Hadoop的运行模式分为3种:本地运行模式,伪分布运行模式,完全分布运行模式。

(1)本地模式(local mode)

这种运行模式在一台单机上运行,没有HDFS分布式文件系统,而是直接读写本地操作系统中的文件系统。在本地运行模式(local mode)中不存在守护进程,所有进程都运行在一个JVM上。单机模式适用于开发阶段运行MapReduce程序,这也是最少使用的一个模式。

(2)伪分布模式

这种运行模式是在单台服务器上模拟Hadoop的完全分布模式,单机上的分布式并不是真正的分布式,而是使用线程模拟的分布式。在这个模式中,所有守护进程(NameNode,DataNode,ResourceManager,NodeManager,SecondaryNameNode)都在同一台机器上运行。因为伪分布运行模式的Hadoop集群只有一个节点,所以HDFS中的块复制将限制为单个副本,其secondary-master和slave也都将运行于本地主机。此种模式除了并非真正意义的分布式之外,其程序执行逻辑完全类似于完全分布式,因此,常用于开发人员测试程序的执行。本次实验就是在一台服务器上进行伪分布运行模式的搭建。

(3)完全分布模式

这种模式通常被用于生产环境,使用N台主机组成一个Hadoop集群,Hadoop守护进程运行在每台主机之上。这里会存在Namenode运行的主机,Datanode运行的主机,以及SecondaryNameNode运行的主机。在完全分布式环境下,主节点和从节点会分开。

Shell指令格式

调用文件系统(FS)Shell命令应使用 hadoop fs 的形式。 所有的的FS shell命令使用URI路径作为参数。URI格式是scheme://authority/path。对HDFS文件系统,scheme是hdfs,对本地文件系统,scheme是file。其中scheme和authority参数都是可选的,如果未加指定,就会使用配置中指定的默认scheme。一个HDFS文件或目录比如/parent/child可以表示成hdfs://namenode:namenodeport/parent/child,或者更简单的/parent/child(假设你配置文件中的默认值是namenode:namenodeport)。大多数FS Shell命令的行为和对应的Unix Shell命令类似,出错信息会输出到stderr,其他信息输出到stdout。

Hadoop安全模式

在分布式文件系统启动的时候,开始的时候会有安全模式,当分布式文件系统处于安全模式的情况下,文件系统中的内容不允许修改也不允许删除,直到安全模式结束。安全模式主要是为了系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略必要的复制或者删除部分数据块。运行期通过命令也可以进入安全模式。

具体Shell指令

  • ./start-all.sh
    启动Hadoop,相当于执行了./start-dfs.sh和./start-yarn.sh.

  • jps
    检查Hadoop相关进程是否启动,如果发现某些节点正在运行,应该先./stop-all.sh停止所有节点,然后再重新全部启动。

  • hadoop fs mkdir [catalogue]
    在当前的目录下新建一个文件夹

  • hadoop fs touchz [catalogue]+[filename]
    在当前目录下新建一个文件

  • hadoop fs -ls ® [catalogue]
    查看当前目录下的所有文件,只有一层;加R可递归查看所有文件下的子文件

  • hadoop fs -mv [A] [B]
    从A移动到B,同Linux一样,移动的同时可以重命名

  • hadoop fs -cp [A] [B]
    从A复制到B

  • echo [content] >> [file]
    把content写入file内

  • hadoop fs -put [file] [HDFS_list]
    把file上传到分布式文件系统目录下

  • hadoop fs -cat [file]
    查看HDFS下的某个文件

  • hadoop fs -tail [file]
    查看HDFS下文件的另一种方法:将文件尾部1K字节的内容输出。支持-f选项,行为和Unix中一致。

  • hadoop fs -du -s [A]
    A为文件表示查看文件的大小,A为目录表示查看该目录下所有文件大小,-du 后面可以不加-s,

  • hadoop fs -text [file]
    将源文件输出为文本格式。允许的格式是zip和TextRecordInputStream。

  • hadoop fs -stat [file]
    .stat方法可以返回指定路径的统计信息,有多个参数可选,当使用-stat选项但不指定format时候,只打印文件创建日期,相当于%y

    下面列出了format的形式:

    • %b:打印文件大小(目录为0)

    • %n:打印文件名

    • %o:打印block size (我们要的值)

    • %r:打印备份数

    • %y:打印UTC日期 yyyy-MM-dd HH:mm:ss

    • %Y:打印自1970年1月1日以来的UTC微秒数

    • %F:目录打印directory, 文件打印regular file

  • hadoop fs -get [HDFS_file] [LOCAL_list]
    将HDFS下的文件下载到本地的Linux文件系统目录下

  • ls [catalogue]
    查看指定目录下的所有文件

  • hadoop fs -chown [owner] [file]
    使用chown方法,改变Hadoop目录中文件拥有者为root,使用-R将使改变在目录结构下递归进行。

  • hadoop fs -chomd 777 [file]
    使用chmod方法,赋予Hadoopm目录中文件777权限

  • hadoop fs -rm [file]
    删除指定的文件

  • hadoop fs -rm -R [catalog]
    递归删除指定目录下的所有文件

  • hadoop fs -expunge
    清空回收站

  • hadoop jar [jar_catalogue] [class] [in_catalogue] [out_catalogue]
    执行jar_catalogue下的class类,数据来源于HDFS的in_catalogue目录下,输出带HDFS的out_catalogue目录下

  • hadoop fs -ls [HDFS_catalogue]
    hadoop fs -cat /[HDFS_catalogue]/*
    查看HDFS下的目录

  • hdfs dfsadmin -safemode enter
    进入Hadoop安全模式

  • hdfs dfsadmin -safemode leave
    退出Hadoop安全模式

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值