实验目的

了解bin/hadoop脚本的原理

学会使用fs shell脚本进行基本操作

学习使用hadoop shell进行简单的统计计算

实验原理

1.hadoop的shell脚本
  当hadoop集群正常工作后,我们就可以使用hadoop进行我们需要的操作。我们的操作主要分为两种,第一种是使用shell命令,另一种是通过hadoop提供的javaAPI,这两种方式大家都必须掌握,今天主要是学会使用hdfs的shell脚本。
  在hadoop安装目录的bin目录下有个hadoop文件,这个文件就是hadoop命令的shell脚本,我们输入的shell命令就是通过这个脚本处理后调用相应的java进程处理!我们可以看到shell脚本有一段如下:

  if [ "$COMMAND" = "fs" ] ; then

      CLASS=org.apache.hadoop.fs.FsShell

    elif [ "$COMMAND" = "version" ] ; then

      CLASS=org.apache.hadoop.util.VersionInfo

    elif [ "$COMMAND" = "jar" ] ; then

      CLASS=org.apache.hadoop.util.RunJar

    elif [ "$COMMAND" = "checknative" ] ; then

      CLASS=org.apache.hadoop.util.NativeLibraryChecker

    elif [ "$COMMAND" = "distcp" ] ; then

      CLASS=org.apache.hadoop.tools.DistCp

      CLASSPATH=${CLASSPATH}:${TOOL_PATH}

    elif [ "$COMMAND" = "daemonlog" ] ; then

      CLASS=org.apache.hadoop.log.LogLevel

    elif [ "$COMMAND" = "archive" ] ; then

      CLASS=org.apache.hadoop.tools.HadoopArchives

      CLASSPATH=${CLASSPATH}:${TOOL_PATH}

    elif [[ "$COMMAND" = -*  ]] ; then

        # class and package names cannot begin with a -

        echo "Error: No command named \`$COMMAND' was found. Perhaps you meant \`hadoop ${COMMAND#-}'"

        exit 1

    else

      CLASS=$COMMAND

  这个是判断你输入的脚本的命令,例如你输入的是fs,就会调用org.apache.hadoop.fs.FsShell类的相应方法,进行执行。

2.Hadoop shell命令
  HDFS是存取数据的分布式文件系统,那么对HDFS的操作,就是文件系统的基本操作,比如文件的创建、修改、删除、修改权限等,文件夹的创建、删除、重命名等。对HDFS的操作命令类似于Linux的shell对文件的操作,如ls、mkdir、rm等。

3.fs shell的命令格式
  调用文件系统(FS)Shell命令应使用 bin/hadoop fs <args>的形式。 所有的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。

实验环境

1.操作系统
  服务器:Linux_Centos
  操作机:Windows_7
  服务器默认用户名:root,密码:123456
  操作机默认用户名:hongya,密码:123456
2.实验工具
  1.实验工具

吴裕雄--天生自然HADOOP操作实验学习笔记:hdfs简单的shell命令_apache

 

 

Xshell是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。Xshell 通过互联网到远程主机的安全连接以及它创新性的设计和特色帮助用户在复杂的网络环境中享受他们的工作。  Xshell可以在Windows界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的。实验中我们用到XShell5,其新增功能有:
  1.有效保护信息安全性;Xshell支持各种安全功能,如SSH1/SSH2协议,密码,和DSA和RSA公开密钥的用户认证方法,并加密所有流量的各种加密算法。重要的是要保持用户的数据安全与内置Xshell安全功能,因为像Telnet和Rlogin这样的传统连接协议很容易让用户的网络流量受到任何有网络知识的人的窃取。Xshell将帮助用户保护数据免受黑客攻击。
  2.最好的终端用户体验;终端用户需要经常在任何给定的时间中运用多个终端会话,以及与不同主机比较终端输出或者给不同主机发送同一组命令。Xshell则可以解决这些问题。此外还有方便用户的功能,如标签环境,广泛拆分窗口,同步输入和会话管理,用户可以节省时间做其他的工作。
  3.代替不安全的Telnet客户端;Xshell支持VT100,VT220,VT320,Xterm,Linux,Scoansi和ANSI终端仿真和提供各种终端外观选项取代传统的Telnet客户端。
  4. Xshell在单一屏幕实现多语言;Xshell中的UTF-8在同类终端软件中是第一个运用的。用Xshell,可以将多种语言显示在一个屏幕上,无需切换不同的语言编码。越来越多的企业需要用到UTF-8格式的数据库和应用程序,有一个支持UTF-8编码终端模拟器的需求在不断增加。Xshell可以帮助用户处理多语言环境。  5. 支持安全连接的TCP/IP应用的X11和任意;在SSH隧道机制中,Xshell支持端口转发功能,无需修改任何程序,它可以使所有的TCP/IP应用程序共享一个安全的连接。

吴裕雄--天生自然HADOOP操作实验学习笔记:hdfs简单的shell命令_hadoop_02

 

 吴裕雄--天生自然HADOOP操作实验学习笔记:hdfs简单的shell命令_shell脚本_03

 

 吴裕雄--天生自然HADOOP操作实验学习笔记:hdfs简单的shell命令_apache_04

 

 吴裕雄--天生自然HADOOP操作实验学习笔记:hdfs简单的shell命令_hadoop_05

 

 吴裕雄--天生自然HADOOP操作实验学习笔记:hdfs简单的shell命令_hadoop_06

 

 吴裕雄--天生自然HADOOP操作实验学习笔记:hdfs简单的shell命令_shell脚本_07

 

 吴裕雄--天生自然HADOOP操作实验学习笔记:hdfs简单的shell命令_hdfs_08

 

 吴裕雄--天生自然HADOOP操作实验学习笔记:hdfs简单的shell命令_shell命令_09

 

 吴裕雄--天生自然HADOOP操作实验学习笔记:hdfs简单的shell命令_shell脚本_10

 

 吴裕雄--天生自然HADOOP操作实验学习笔记:hdfs简单的shell命令_shell命令_11

 

 吴裕雄--天生自然HADOOP操作实验学习笔记:hdfs简单的shell命令_hadoop_12

 

 吴裕雄--天生自然HADOOP操作实验学习笔记:hdfs简单的shell命令_hdfs_13

 

 吴裕雄--天生自然HADOOP操作实验学习笔记:hdfs简单的shell命令_shell脚本_14

 

 吴裕雄--天生自然HADOOP操作实验学习笔记:hdfs简单的shell命令_apache_15

 

 吴裕雄--天生自然HADOOP操作实验学习笔记:hdfs简单的shell命令_apache_16

 

 吴裕雄--天生自然HADOOP操作实验学习笔记:hdfs简单的shell命令_shell脚本_17

 

 吴裕雄--天生自然HADOOP操作实验学习笔记:hdfs简单的shell命令_hadoop_18

 

 吴裕雄--天生自然HADOOP操作实验学习笔记:hdfs简单的shell命令_shell命令_19

 

 吴裕雄--天生自然HADOOP操作实验学习笔记:hdfs简单的shell命令_apache_20

 

 吴裕雄--天生自然HADOOP操作实验学习笔记:hdfs简单的shell命令_hadoop_21

 

 吴裕雄--天生自然HADOOP操作实验学习笔记:hdfs简单的shell命令_shell脚本_22

 

 吴裕雄--天生自然HADOOP操作实验学习笔记:hdfs简单的shell命令_apache_23

 

 吴裕雄--天生自然HADOOP操作实验学习笔记:hdfs简单的shell命令_hadoop_24

 

 

步骤4:fs shell命令管理文件权限

  hdfs的文件权限管理并不严格,当然也有专门的第三方软件为hdfs提供严格的文件管理,我们只讨论hadoop的权限管理。hdfs的权限管理可以防止好人做错事,但是不能防止坏人做坏事。如果操作正规,发生了超过自己权限的操作,会失败,但是如果故意修改自己的用户信息,hadoop不会要求很严格,那就可以破坏hdfs文件系统。

  4.1修改用户组chgrp,改变文件所属的组。使用-R将使改变在目录结构下递归进行。命令的使用者必须是文件的所有者或者超级用户。注意:hadoop并不会判断是否有这个用户组!
  规格:hadoop fs -chgrp [-R] GROUP URI [URI …]
  例如以下命令修改了/home/hadoop/的分组为test,但是我本地没有test这个用户组。

hadoop fs -chgrp test /home/hadoop/

吴裕雄--天生自然HADOOP操作实验学习笔记:hdfs简单的shell命令_apache_25

 

 吴裕雄--天生自然HADOOP操作实验学习笔记:hdfs简单的shell命令_apache_26

 

 吴裕雄--天生自然HADOOP操作实验学习笔记:hdfs简单的shell命令_shell命令_27