Big Data Systems Lab Session Running Hadoop on a Single Node

针对第三周实验的一些简单个人理解,有错误请指出。

Initial system setup

  1. whoami: 显示当前用户
    虚拟机进入时默认为root。
  2. su hduser: su命令用于切换为hduser用户(hadoop user为该hadoop实例下自带的用户)
  3. cd ~: 进入当前用户的根目录,如果当前是root用户,则进入/root/,如果当前是hduser,则进入/home/hduser,其中/代表整个虚拟机的根路径
  4. ssh-keygen -t rsa -P "": ssh-keygen用来生成密钥对。-t rsa指密钥类型为rsa, -P提供旧密语(类似默认密码)
    生成的密钥默认位于~/.ssh/目录下,有两个文件,id_rsa是私钥,id_rsa.pub是公钥(.ssh代表隐藏文件,基于安全目的)
    私钥不要泄漏出去,公钥则可以随意对外发布。用公钥进行加密的数据,只能用私钥才能解密。
    使用ssh是为了使当前虚拟机与localhost建立安全连接(类似两台不同主机,不同服务器之间),还能免去输入密码,提高登录速度。
  5. cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys: 把公钥内容添加到需要免密登录的主机中,这里$HOME~的效果是一样的

    如果想同时配置多个ssh密钥对,例如还要同时连接gitlab, github,需要手动配置config文件指定使用哪个密钥,这里留个坑,以后再补充。

  6. ssh localhost: 刚才建立密钥对,就是为了连接localhost
  7. echo $HADOOP_HOME: 这里用来显示$HADOOP_HOME环境变量值,指定Hadoop运行环境的路径
    ~/.bashrc这里储存了当前用户下的所有环境变量,只会对当前用户有效,每次启动shell自动被读取
  8. source .bashrc: 运行此命令,使新建立的环境变量在当前shell中起作用,否则只能下次启动shell时激活该环境变量。

    Setting up Hadoop and HDFS

    这一部分主要是配置Hadoop存储数据文件的路径,监听端口。
    hdfsTMP用来储存临时文件

  9. nano core-site.xml: 同vi/vim作用类似,文本编辑器,编辑core-site.xml文件。
    这里使用nano -w core-site.xml命令更好,防止自动换行,造成不必要的错误。
    常用操作:Ctrl+O(保存), Ctrl+X(退出), Ctrl+C(取消操作), Ctrl+W,搜索, 想再次搜索相同的字符串,按Alt+W
    vi/vim core-site.xml: 常用操作:i(进入编辑模式),ESC(退出编辑模式),:wq(保存并退出),:q(退出不保存),:q!(强制退出)
  10. mkdir -p ~/hdfsTMP/namenode: -p递归创建多个目录
  11. unset HADOOP_OPTS: 清除环境变量$HADOOP_OPTS

    Formatting HDFS

    创建Hadoop file system

  12. start-all.sh: 没有权限时需要使用chmod u+x 文件名.sh来给可执行权限,不过该实验不用。
    bash脚本执行方法:当前目录下,./start-all.shsh start-all.sh

    Uploading data to HDFS

    Creating a MapReduce Java application

    这里有个坑,hadoop jar OurMapReduceJob.jar org.myorg.WordCount hdfsbook.txt output跑完之后会报找不到main方法的错,原因是环境变量中的引号可能是中文的,回去检查一下。
Persist in original technology sharing, your support will encourage me to continue to create!