Master机器主要配置NameNode和JobTracker的角色,负责总管分布式数据和分解任务的执行;Salve机器配置DataNode和TaskTracker的角色,负责分布式数据存储以及任务的执行。
在进行Hadoop集群配置中,需要在"/etc/hosts"文件中添加集群中所有机器的IP与主机名,这样Master与所有的Slave机器之间不仅可以通过IP进行通信,而且还可以通过主机名进行通信。JDK(Java集成开发环境)和hadoop的安装、配置。
MapReduce:"任务的分解与结果的汇总"。用于执行MapReduce任务的机器角色有两个:一个是JobTracker;另一个是TaskTracker,JobTracker是用于调度工作的,TaskTracker是用于执行工作的。一个Hadoop集群中只有一台JobTracker(位于Master中)。
MapReduce框架负责处理了并行编程中分布式存储、工作调度、负载均衡、容错均衡、容错处理以及网络通信等复杂问题,把处理过程高度抽象为两个函数:map和reduce,map负责把任务分解成多个任务,reduce负责把分解后多任务处理的结果汇总起来。
Hadoop配置实例:具体过程
1.网络、主机配置:在所有主机上配置其主机名
/etc/hosts:将集群中所有主机的主机名和对应ip地址加入所有机器的hosts文件中,以便集群之间可以用主机名进行通信和验证。
2.配置ssh无密码登录
3.java环境安装
集群所有机器都要安装jdk,jdk版本:jdk1.7.0_45,并配置好环境变量:/etc/profile:
# set java environment
export JAVA_HOME=/usr/java/jdk1.7.0_45
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
source /etc/profile 使其生效
4.hadoop安装和配置:所有机器都要安装hadoop,hadoop版本:hadoop-1.2.1
4.1 安装:tar zxvf hadoop-1.2.1.tar.gz ; mv hadoop-1.2.1 /usr/hadoop;
将文件夹hadoop的权限分配给hadoop用户。
4.2 hadoop环境变量:#set hadoop path
export HADOOP_HOME=/usr/hadoop
export PATH=$PATH :$HADOOP_HOME/bin
在"/usr/hadoop"创建"tmp"文件夹:mkdir /usr/hadoop/tmp
4.3 配置hadoop
1)配置hadoop-env.sh:
# set java environment
export JAVA_HOME=/usr/java/jdk1.7.0_45
2)配置core-site.xml文件:
3)配置hdfs-site.xml文件
4)配置mapred-site.xml文件
5)配置masters文件:加入的为secondarynamenode的ip地址
6)配置slaves文件(Master主机特有):添加datanode节点的主机名或ip地址。
ps:可以先在master安装并配置好,然后通过scp -r /usr/hadoop root@服务器ip:/usr/,将Master上配置好的hadoop所在文件夹"/usr/hadoop"复制到所有的Slave的"/usr"目录下。然后在各自机器上将hadoop文件夹权限赋予各自的hadoop用户。并且配置好环境变量等。
5 启动和验证
5.1 格式化HDFS文件系统
在Master上使用hadoop用户进行操作:
hadoop namenode -format
ps:只需一次,下次启动不再需要格式化,只需start-all.sh
5.2 启动hadoop:
在启动前关闭集群中所有机器的防火墙,不然会出现datanode开后又自动关闭:
service iptables stop
使用下面命令启动:
start-all.sh
启动hadoop成功后,在Master 中的tmp 文件夹中生成了dfs 文件夹,在Slave中的tmp 文件夹中均生成了 dfs 文件夹和mapred 文件夹。
5.3 验证hadoop:
(1)验证方法一:用"jps"命令
(2)验证方式二:用"hadoopdfsadmin -report")验证
6 网页查看:访问":50030"
Hadoop使用端口说明
默认端口 设置位置 描述信息
8020 namenode RPC交互端口
8021 JT RPC交互端口
50030 mapred.job.tracker.http.address JobTrackeradministrative web GUI
JOBTRACKER的HTTP服务器和端口
50070 dfs.http.address NameNode administrative web GUI