在单机来模拟Hadoop基于分布式运行,最终通过在本机创建多个线程来模拟。主要就是实现运行Hadoop自带的WordCount这个例子,具体实现过程将在下面详细叙述。
(PS:因为我是一个新手,刚接触Hadoop不久,在学习Hadoop过程中遇到很多问题,特别将自己的实践过程写得非常详细,为更多对Hadoop感兴趣的朋友提供尽可能多的信息,仅此而已。)
模拟Linux环境配置
使用cygwin来模拟Linux运行环境,安装好cygwin后,配置好OpenSSH以后才能进行下面的操作。
Hadoop配置
首先进行Hadoop配置:
1、conf/hadoop-env.sh文件中最基本需要指定JAVA_HOME,例如我的如下:
export JAVA_HOME="D:\Program Files\Java\jdk1.6.0_07"
如果路径中存在空格,需要使用双引号。
2、只需要修改conf/hadoop-site.xml文件即可,默认情况下,hadoop-site.xml并没有被配置,如果是基于单机运行,就会按照hadoop-default.xml中的基本配置选项执行任务。
将hadoop-site.xml文件修改为如下所示:
<?xml version="1.0"?> <!-- Put site-specific property overrides in this file. --> <configuration>
<?xml-stylesheet type="text/xsl" href="https://www.linuxidc.com/configuration.xsl"?>
<property>
<name>fs.default.name</name>
<value>localhost:9000</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
实现过程
1、认证配置
启动cygwin,同时使用下面的命令启动ssh:
$ net start sshd
如图所示:
接着,需要对身份加密认证这一部分进行配置,这也是非常关键的,因为基于分布式的多个Datanode结点需要向Namenode提供任务执行报告信息,如果每次访问Namenode结点都需要密码验证的话就麻烦了,当然我要说的就是基于无密码认证的方式的配置,可以参考我的其他文章。
生成RSA公钥的命令如下:
$ ssh-keygen
生成过程如图所示:
上面执行到如下步骤时需要进行设置:
Enter file in which to save the key (/home/SHIYANJUN/.ssh/id_rsa):
直接按回车键即可,按照默认的选项将生成的RSA公钥保存在/home/SHIYANJUN/.ssh/id_rsa文件中,以便结点之间进行通讯认证。
继续执行,又会提示进行输入选择密码短语passphrase,在如下这里:
Enter passphrase (empty for no passphrase):
直接按回车键,而且一定要这么做,因为空密码短语就会在后面执行过程中免去结点之间通讯进行的认证,直接通过RSA公钥(事实上,我们使用的是DSA认证,当然RSA也可以进行认证,继续看后面)认证。
RSA公钥主要是对结点之间的通讯信息加密的。如果RSA公钥生成过程如上图,说明正确生成了RSA公钥。
接着生成DSA公钥,使用如下命令:
$ ssh-keygen -t dsa
生成过程与前面的RSA类似,如图所示: