Hadoop全分布模式环境搭建
1. 准备三台PC,一个主节点,两个从节点
master(NameNode、SecondaryNameNode、JobTracker、DataNode、TaskTracker)
slave1(DataNode、TaskTracker)
slave2(DataNode、TaskTracker)
2. 修改主机名
vim /etc/hostname(分别给每一台主机指定主机名)
3. 修改主机名到IP的映射
vim /etc/hosts(分别给每一台主机指定主机名到IP地址的映射)
192.168.1.200 master
192.168.1.201 slave1
192.168.1.202 slave2
4. 新建用户和组
三台PC都要新建用户和组,新建的用户专门用来运行Hadoop,这样Hadoop就跟其它程序有了一个隔离,新增的用户的权限相对也有限,可以设置hadoop用户专用的环境变量,这样可以把配置局限到用户范围内,不会对其它用户造成干扰。
addgroup hadoop
adduser--ingroup hadoop hadoop
5. 配置SSH,使得master可以免登陆登录slave节点:
在master上面执行
ssh-keygen -t rsa(密码为空,路径默认)
该命令会在用户主目录下创建 .ssh 目录,并在其中创建两个文件:id_rsa 私钥文件,是基于RSA 算法创建,该私钥文件要妥善保管,不要泄漏。id_rsa.pub 公钥文件,和 id_rsa 文件是一对,该文件作为公钥文件,可以公开。
把公钥追加到本机的authorized_keys文件中
cat .ssh/id_rsa.pub >> .ssh/authorized_keys
把公钥追加到其他主机的authorized_keys文件中
ssh-copy-id -i .ssh/id_rsa.pub hadoop@slave1
ssh-copy-id -i .ssh/id_rsa.pub hadoop@slave2
6. 测试是否可以在master上面通过ssh免密码登录本机、slave1和slave2
ssh master
ssh slave1
sshslave2
7. 下载hadoop并解压到/home/hadoop/
下载地址(选择需要的版本):http://archive.apache.org/dist/hadoop/core/
解压:tar -xzvf hadoop-1.2.1.tar.gz
8. 在/home/hadoop/.bashrc 中追加:
export PATH=/home/hadoop/hadoop-1.1.2/bin:$PATH
9. 配置Hadoop运行参数,conf目录
masters
把localhost替换为 :master
slaves
删除localhost,加入三行:
master
slave1
slave2
hadoop-env.sh
任意位置加上:export JAVA_HOME=/usr/local/java/jdk1.7.0_25
core-site.xml:
<configuration>
<!-- 指定 NameNode 的 IP 地址和端口号 -->
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<!-- 指定Hadoop的临时文件目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/tmp</value>
</property>
</configuration>
hdfs-site.xml:
<configuration>
<!-- NameNode的元数据,hdfs会把元数据冗余复制到这个目录下 -->
<property>
<name>dfs.name.dir</name>
<value>/home/hadoop/dfs/filesystem/name</value>
</property>
<!-- NameNode的操作日志 -->
<!-- 建议把dfs.name.dir和dfs.name.edits.dir配置成相同的值,
以来提高NameNode的效率 -->
<property>
<name>dfs.edits.dir</name>
<value>/home/hadoop/dfs/filesystem/edits</value>
</property>
<!-- DataNode的数据目录,hdfs会把数据存在这个目录下 -->
<property>
<name>dfs.data.dir</name>
<value>/home/hadoop/dfs/filesystem/data</value>
</property>
<!-- 数据备份的副本数 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
mapred-site.xml:
<configuration>
<!-- 指定 JobTracker 的 IP 地址和端口号 -->
<property>
<name>mapred.job.tracker</name>
<value>master:9001</value>
</property>
<!-- 每一个TaskTracker同时运行的map任务数 -->
<property>
<name>mapred.tasktracker.map.tasks.maximum</name>
<value>4</value>
</property>
<!-- 每一个TaskTracker同时运行的reduce任务数 -->
<!-- 将其设置为节点的核数目或者数目减1比较合适,此时的运行效率最高。 -->
<property>
<name>mapred.tasktracker.reduce.tasks.maximum</name>
<value>4</value>
</property>
<!-- 在作业运行期间存储共享文件的目录 -->
<property>
<name>mapred.system.dir</name>
<value>/home/hadoop/mapreduce/system</value>
</property>
<!-- MapReduce产生的临时数据(map输出数据)存放目录 -->
<property>
<name>mapred.local.dir</name>
<value>/home/hadoop/mapreduce/local</value>
</property>
</configuration>
10. 复制Hadoop文件到其他节点
scp -r/home/hadoop/hadoop-1.2.1 hadoop@slave1:/home/hadoop/hadoop-1.2.1
scp -r/home/hadoop/hadoop-1.2.1 hadoop@slave2:/home/hadoop/hadoop-1.2.1
11. 格式化名称节点并启动集群
hadoop namenode –format
12. 启动集群并查看WEB管理界面
start-all.sh
访问 http://localhost:50030 可以查看 JobTracker 的运行状态
访问 http://localhost:50060 可以查看 TaskTracker 的运行状态
访问 http://localhost:50070 可以查看 NameNode 以及整个分布式文件系统的状态,浏览分布式文件系统中的文件以及 log 等
13. 停止集群
stop-all.sh停止集群