单机模式(standalone

Hadoop的默认模式。当首次解压 Hadoop的源码包时, Hadoop无法了解硬件安装环境,便保守地选择了最小配置。在这种默认模式下所有 3个 XML文件均为空。当配置文件为空时, Hadoop会完全运行在本地。因为不需要与其他节点交互,单机模式就不使用 HDFS,也不加载任何 Hadoop的守护进程。该模式主要用于开发调试 MapReduce程序的应用逻辑。

伪分布模式( Pseudo-DistributedMode

Hadoop,其中所有的守护进程都运行在同一台机器上。该模式在单机模式之上增加了代码调试功能,允许你检查内存使用情况, HDFS输入输出,以及其他的守护进程交互。

全分布模式( FullyDistributed Mode

Hadoop守护进程运行在一个集群上。

一.ubuntu平台上安装JDK

1.将下载好的tar.gz 文件解压到一个文件夹下。


hadoop单机伪分布式配置实验分析及小结 hadoop单机和伪分布_hadoop


2.然后,配置环境变量。方法如下:

   打开终端输入

sudo gedit /etc/profile



hadoop单机伪分布式配置实验分析及小结 hadoop单机和伪分布_ubuntu_02



输入密码后可以看到:



hadoop单机伪分布式配置实验分析及小结 hadoop单机和伪分布_mapreduce_03

配置环境变量(在profile文件到最后加上这些代码):


#set java environment    
    
JAVA_HOME=/home/hadoop/java/jdk1.8.0_05         
    
export CLASSPATH=$JAVA_HOME/lib:$CLASSPATH    
    
export PATH=$JAVA_HOME/bin:$PATH



如下图:

hadoop单机伪分布式配置实验分析及小结 hadoop单机和伪分布_集群_04


上面到JAVA_HOME的值是我机器上jdk的文件路径。


hadoop单机伪分布式配置实验分析及小结 hadoop单机和伪分布_ubuntu_05

最后保存文件即可。

为了是环境变量生效,需要注销一下当前用户,重新登录后在终端中输入(验证是否配置成功)

java -version



hadoop单机伪分布式配置实验分析及小结 hadoop单机和伪分布_hdfs_06



二.部署hadoop之单机模式与伪分布式模式

1. 将下载好的hadoop解压,重新命名为hadoop(这是为了方便以后到操作)。




hadoop单机伪分布式配置实验分析及小结 hadoop单机和伪分布_ubuntu_07

进入etc/hadoop文件夹下,在hadoop-env.sh文件中做修改,在第25行左右到位置中有export JAVA_HOME=*******这样到字样,修改JAVA_HOME的值为你机器中jdk到文件路径即可,这里到值和/etc/profile是相同的。


hadoop单机伪分布式配置实验分析及小结 hadoop单机和伪分布_hdfs_08


现在就可以进行单机模式了(省略)。

2. 伪分布式模式配置


这里需要修改etc/hadoop文件夹中到2个文件(现在可以不启动yarn)。分别是core-site.xml、hdfs-site.xml 两个文件

/home/hadoop/hadoop...,红色部分,系统用户名不同,相应的路径也不同,这里的用户是hadoop)

core-site.xml


<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/home/hadoop/hadoop/tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>


同样的,修改配置文件  hdfs-site.xml :


<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/home/hadoop/hadoop/tmp/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/home/hadoop/hadoop/tmp/dfs/data</value>
    </property>
</configuration>


这样就配置好hadoop了,由于haoop不同结点间到通信是用的ssh,所以我们还需要安装ssh

在ubnuntu下直接在终端中输入




sudo apt-get install openssh-server


hadoop单机伪分布式配置实验分析及小结 hadoop单机和伪分布_集群_09



如果提示找不到源,更新ubuntu到软件中心即可

sudo apt-get update



这样就安装完成了ssh。下面需要设置免密钥登录ssh了。输入下面两行代码即可:



ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa     
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys



hadoop单机伪分布式配置实验分析及小结 hadoop单机和伪分布_mapreduce_10



这样以后登录本地ssh就不需要密码了。

这里稍微解释一下:ssh-keygen代表生成密钥;-t(注意区分大小写)表示指定生成的密钥类型,dsa是dsa密钥认证的意思,即密钥类型;-P用于提供密语;-f指定生成的密钥文件。然后把id_dsa.pub(公钥)追加到授权的key里面去。


完成了部署。



三.运行wordcount例子

(1)首先格式化namenode并,开启hadoop相关进程(一般启动前把tmp里面的文件全部删除)



bin/hdfs namenode -format
sbin/start-dfs.sh


(2)查看所有进程

hadoop单机伪分布式配置实验分析及小结 hadoop单机和伪分布_hdfs_11



(3)把本地到hadoop/input (自己建立的)文件夹中到文件上传到hdfs文件系统到input文件夹下


bin/hdfs dfs -mkdir /input    
bin/hdfs dfs -put input/* /input


hadoop单机伪分布式配置实验分析及小结 hadoop单机和伪分布_hdfs_12



查看文件是否上传到hdfs


bin/hdfs dfs -ls /input


hadoop单机伪分布式配置实验分析及小结 hadoop单机和伪分布_hdfs_13




bin/hdfs dfs -cat /input/word



hadoop单机伪分布式配置实验分析及小结 hadoop单机和伪分布_集群_14


(4)下面即可运行wordcount了

bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar wordcount /input /output



hadoop单机伪分布式配置实验分析及小结 hadoop单机和伪分布_集群_15



(5)查看结果可用下面这条命令


bin/hdfs dfs -cat /output/*



hadoop单机伪分布式配置实验分析及小结 hadoop单机和伪分布_mapreduce_16


也可以将运行结果取回到本地:

rm -r ./output    # 先删除本地的 output 文件夹(如果存在)
bin/hdfs dfs -get /output ./output     # 将 HDFS 上的 output 文件夹拷贝到本机
cat ./output/*


hadoop单机伪分布式配置实验分析及小结 hadoop单机和伪分布_hadoop_17



Hadoop 运行程序时,输出目录不能存在,否则会提示错误 "org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://localhost:9000/user/hadoop/output already exists" ,因此若要再次执行,需要执行如下命令删除 output 文件夹:



bin/hdfs dfs -rm -r output



(6)关闭进程


sbin/stop-dfs.sh