安装配置Hadoop环境之前,先要知道Hadoop有三种运行模式:
1. 单机模式(standalone)
单机模式是Hadoop的默认模式。当首次解压Hadoop的源码包时,Hadoop无法了解硬件安装环境,便保守地选择了最小配置。在这种默认模式下所有3个XML文件均为空。当配置文件为空时,Hadoop会完全运行在本地。因为不需要与其他节点交互,单机模式就不使用HDFS,也不加载任何Hadoop的守护进程。该模式主要用于开发调试MapReduce程序的应用逻辑。
2. 伪分布模式(Pseudo-Distributed Mode)
伪分布模式在“单节点集群”上运行Hadoop,其中所有的守护进程都运行在同一台机器上。该模式在单机模式之上增加了代码调试功能,允许你检查内存使用情况,HDFS输入输出,以及其他的守护进程交互。
3. 全分布模式(Fully Distributed Mode)
Hadoop运行在一个集群上。
下面是我搭建Hadoop环境的过程。我安装的是单机模式与伪分布模式。
首先要为ubuntu安装ssh服务
安装SSH、配置SSH无密码登陆
集群、单节点模式都需要用到 SSH 登陆(类似于远程登陆,你可以登录某台 Linux 主机,并且在上面运行命令),Ubuntu 默认已安装了 SSH client,此外还需要安装 SSH server:
sudo apt-get install openssh-server
在终端登录:
ssh 用户名@虚拟机ip地址
此时会有SSH首次登陆提示,输入 yes 。然后按提示输入密码,这样就登陆到本机了。
输入密码
但这样登陆是需要每次输入密码的,若配置成SSH无密码登陆比较方便。首先退出刚才的 ssh,就回到了我们原先的终端窗口,然后利用 ssh-keygen 生成密钥,并将密钥加入到授权中:
1 exit # 退出刚才的 ssh localhost
2 cd ~/.ssh/ # 若没有该目录,请先执行一次ssh localhost
3 ssh-keygen -t rsa # 会有提示,都按回车就可以
4 cat ./id_rsa.pub >> ./authorized_keys # 加入授权
此时再用 ssh localhost 命令,无需输入密码就可以直接登陆了。
安装Java环境
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update # 更新资源列表
sudo apt-get install oracle-java8-installer
接着配置 JAVA_HOME 环境变量,我在~/.bashrc中进行设置:
sudo vim ~/.bashrc
在文件最前面添加如下单独一行(=号前后不能有空格):
export JAVA_HOME=/usr/lib/jvm/java-8-oracle
之后,接着还需要让该环境变量生效,执行如下代码:
sudo vim ~/.bashrc
检查Java是否安装成功,与Java的环境变量是否正确配置:
whereis java
或
echo $JAVA_HOME
java -version
有正确的显示Java的路径则为正确
或
有正确的显示JDK版本则为正确
之后开始安装Hadoop
去Hadoop官网下载你需要的版本
我安装的Hadoop 2.6.4
添加环境变量
sudo tar -zxf ~/Downloads/hadoop-2.6.4.tar.gz -C /usr/local # 解压到/usr/local中
cd /usr/local/
sudo mv ./hadoop-2.6.0/ ./hadoop # 将文件夹名改为hadoop
sudo chown -R hadoop ./hadoop # 修改文件权限
配置变量:在/usr/local/hadoop/etc/hadoop/hadoop-env.sh文件中添加Java_Home:
# The java implementation to use.
export java_HOME=/user/lib/jvm/java-8-oracle
在~/.bashrc文件里,添加HADOOP_HOME环境变量:
#HADOOP VARIABLES STARTexport JAVA_HOME=/usr/lib/jvm/java-8-oracleexport HADOOP_INSTALL=/usr/local/hadoopexport PATH=$PATH:$HADOOP_INSTALL/binexport PATH=$PATH:$HADOOP_INSTALL/sbinexport HADOOP_MAPRED_HOME=$HADOOP_INSTALLexport HADOOP_COMMON_HOME=$HADOOP_INSTALLexport HADOOP_HDFS_HOME=$HADOOP_INSTALLexport YARN_HOME=$HADOOP_INSTALLexport HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/nativeexport HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib"
#HADOOP VARIABLES END
刷新更新使之生效:source ~/.bashrc
Hadoop单机配置
Hadoop 默认模式为非分布式模式,无需进行其他配置即可运行。非分布式即单 Java 进程,方便进行调试。现在我们可以执行例子来感受下 Hadoop 的运行。
Hadoop 附带了丰富的例子,运行:
/usr/local/hadoop/bin/hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar
Hadoop伪分布式配置
Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode,同时,读取的是 HDFS 中的文件。
Hadoop 的配置文件位于/usr/local/hadoop/etc/hadoop/中,伪分布式需要修改2个配置文件 core-site.xml 和 hdfs-site.xml 。Hadoop的配置文件是 xml 格式,每个配置以声明 property 的 name 和 value 的方式来实现。
修改配置文件 core-site.xml :
sudo vi /usr/local/hadoop/etc/hadoop/core-site.xml
修改如下:
同样的,修改配置文件 hdfs-site.xml:
sudo gedit /usr/local/hadoop/etc/hadoop/hdfs-site.xml
配置完成后,执行 NameNode 的格式化(注意不要多次格式化,否则会出问题):
/usr/local/hadoop/bin/hdfs namenode -format
成功的话,会看到 “successfully formatted” 和 “Exitting with status 0” 的提示,若为 “Exitting with status 1” 则是出错。
之后启动
/sur/local/hadoop/sbin/start-dfs.sh
用jps命令查看是否启动成功,显示如下,成功配置。如没有NameNode、DataNode,则没有配置成功,检查配置:
成功启动后,可以访问 Web 界面 http://localhost:50070 查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件。
结束