针对第三周实验的一些简单个人理解,有错误请指出。
Initial system setup
whoami: 显示当前用户
虚拟机进入时默认为root。su hduser: su命令用于切换为hduser用户(hadoop user为该hadoop实例下自带的用户)cd ~: 进入当前用户的根目录,如果当前是root用户,则进入/root/,如果当前是hduser,则进入/home/hduser,其中/代表整个虚拟机的根路径ssh-keygen -t rsa -P "":ssh-keygen用来生成密钥对。-t rsa指密钥类型为rsa,-P提供旧密语(类似默认密码)
生成的密钥默认位于~/.ssh/目录下,有两个文件,id_rsa是私钥,id_rsa.pub是公钥(.ssh代表隐藏文件,基于安全目的)
私钥不要泄漏出去,公钥则可以随意对外发布。用公钥进行加密的数据,只能用私钥才能解密。
使用ssh是为了使当前虚拟机与localhost建立安全连接(类似两台不同主机,不同服务器之间),还能免去输入密码,提高登录速度。cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys: 把公钥内容添加到需要免密登录的主机中,这里$HOME和~的效果是一样的如果想同时配置多个ssh密钥对,例如还要同时连接gitlab, github,需要手动配置config文件指定使用哪个密钥,这里留个坑,以后再补充。
ssh localhost: 刚才建立密钥对,就是为了连接localhostecho $HADOOP_HOME: 这里用来显示$HADOOP_HOME环境变量值,指定Hadoop运行环境的路径~/.bashrc这里储存了当前用户下的所有环境变量,只会对当前用户有效,每次启动shell自动被读取source .bashrc: 运行此命令,使新建立的环境变量在当前shell中起作用,否则只能下次启动shell时激活该环境变量。Setting up Hadoop and HDFS
这一部分主要是配置
Hadoop存储数据文件的路径,监听端口。hdfsTMP用来储存临时文件nano core-site.xml: 同vi/vim作用类似,文本编辑器,编辑core-site.xml文件。
这里使用nano -w core-site.xml命令更好,防止自动换行,造成不必要的错误。
常用操作:Ctrl+O(保存),Ctrl+X(退出),Ctrl+C(取消操作),Ctrl+W,搜索, 想再次搜索相同的字符串,按Alt+Wvi/vim core-site.xml: 常用操作:i(进入编辑模式),ESC(退出编辑模式),:wq(保存并退出),:q(退出不保存),:q!(强制退出)mkdir -p ~/hdfsTMP/namenode:-p递归创建多个目录unset HADOOP_OPTS: 清除环境变量$HADOOP_OPTSFormatting HDFS
创建Hadoop file system
start-all.sh: 没有权限时需要使用chmod u+x 文件名.sh来给可执行权限,不过该实验不用。
bash脚本执行方法:当前目录下,./start-all.sh或sh start-all.shUploading data to HDFS
Creating a MapReduce Java application
这里有个坑,hadoop jar OurMapReduceJob.jar org.myorg.WordCount hdfsbook.txt output跑完之后会报找不到main方法的错,原因是环境变量中的引号可能是中文的,回去检查一下。