hadoop分布式配置
一、前面的部分见伪分布式配置。
二、实现SSH无密码登录远程主机(只在源主机上配置)
1. scp authorized_keys slave2:~/.ssh/
scp '/home/user/.ssh/authorized_keys' 192.168.0.5:~/.ssh/
注意:以上scp命令表示把authoriezd_keys远程复制到对应主机的相应目录下。单引号可以不加。slave2是目的主机的名字,需要在源主机的/etc/hosts下配置slave2以及对应的IP地址 192.168.0.5。不配置时可以直接用IP地址表示。 authorized_keys是用于进行无密码登录远程主机的公钥,在伪分布式配置中生成。
然后使用ssh slave2验证是否可以无密码登录。另外注意提前对每台主机进行改名,即在/etc/hostname下修改主机名。
三、修改hosts文件(每台主机上都配置,分机只需配置源主机和当前分机的名字和IP即可)
1.sudo gedit /etc/hosts 添加上每台主机名字和地址的映射。
192.168.0.4 aklixiaoyao
192.168.0.2 slave1
192.168.0.5 slave2
四、修改hadoop文件(要在每台机器上都改)
1.修改hdfs-site.xml文件,改为2,表示分布式
configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/user/hadoop/tmp/</value>
</property>
</configuration>
2.修改conf/masters:(源主机,主机)(每台机器上都配置,分机和源主机都配置)
aklixiaoyao(主机名)
3.修改 conf/slaves: (目的主机,分机)(每台机器上都配置,分机只配置源主机和当前分机的名字即可)
slave1
slave2
4. 修改conf/core-site.xml: (每台机器都配置,注意其中必须填写源主机的名字aklixiaoyao)
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://aklixiaoyao:9000</value>
</property>
</configuration>
5.修改conf/mapred-site.xml:(每台机器都配置,注意其中必须填写源主机的名字aklixiaoyao)
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>aklixiaoyao:9001</value>
</property>
</configuration>
五、启动hadoop
1.使用hadoop命令,bin/hadoop/start-all.sh启动hadoop.
2.在主机(源主机)执行jps命令,出现如下结果表示成功
7671 NameNode
7920 SecondaryNameNode
8097 Jps
8006 JobTracker
3.在分机(目的主机)执行jps命令,出现如下结果表示成功
5192 DataNode
5392 Jps
5321 TaskTracker
注意:如果在源主机上未出现namenode,则原因可能是重启机器时候tmp文件夹清空内容了,目前发现的方法是删除tmp/hadoop-user文件夹,然后执行hadoop命令格式化hadoop文件系统:
bin/hadoop namenode-format.
然后重新启动hadoop即可。
为了防止重启机器时候tmp文件夹清空内容了,可在hdfs-site.xml下创建临时目录:
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/user/software/hadoop-0.20.2/tmp/</value>
</property>
</configuration>