一、运行模式
首先,认识一下hadoop的运行模式,即以下三种:
1>单机模式
在单节点运行,直接使用本地文件系统的运行方式,一般用于调试。
2>伪分布式模式
在单节点上同时启动NameNode、DataNode、JobTracker、TaskTracker、SecondaryNameNode等5个进程,各个节点模拟分布式运行的运行模式。
3>完全分布式模式
多节点分别启动NameNode、DataNode、JobTracker、TaskTracker、SecondaryNameNode等5个进程,各个节点分布式运行的运行模式。
注:以上NameNode、DataNode、JobTracker、TaskTracker、SecondaryNameNode为低版本hadoop的守护进程;高版本hadoop的守护进程为:NameNode、ResourceManager、SecondaryNameNode、DataNode、NodeManager。
二、守护进程
1> NameNode,管理文件的元数据。
2> ResourceManager,YARN中master节点的代理,负责节点上任务的分配与合并,与NodeManager的通信等。
3> SecondaryNameNode,定期备份NameNode的信息快照,NameNode宕机时该节点可切换为NameNode。
4> DataNode,存储实际数据的节点,负责把HDFS数据块读写到本地文件系统。
5> NodeManager,YARN中每个slave节点的代理,负责单节点上的计算,与ResourceManager的通信,Container的资源使用(内存、CPU等)以及追踪节点健康状况等。
三、搭建集群
1. 修改/etc/hosts文件配置域名IP映射,查看防火墙状态:/etc/init.d/iptables status,关闭防火墙:/etc/init.d/iptables stop,关闭防火墙自启动:chkconfig iptables off。
2. 配置hadoop用户。
3. 安装JAVA JDK套件,修改/etc/profile文件配置JAVA环境变量,使其即时生效:source /etc/profile。
4. 安装SSH套件,配置master(namenode)节点无密码访问slaves节点。
1> 生成公-私秘钥对:ssh-keygen -t rsa -f ~/.ssh/id_rsa。
2> 开启sshd服务,检查sshd服务状态:service sshd status,开启sshd服务:service sshd start,开启sshd服务自启动:chkconfig --add sshd; chkconfig sshd on。
3> 配置无密码登录:ssh-copy-id [email protected](复制master节点的id_rsa.pub至自己以及各个slave节点的authorized_keys文件)。
5. 安装HADOOP套件,修改hadoop配置文件(hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml、slaves)
1> 修改hadoop-env.sh文件,配置JAVA_HOME变量,倘若配置文件放在非/etc/hadoop/目录,则需要配置HADOOP_CONF_DIR变量。
2> 修改core-site.xml文件。
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://master-hadoop:9000</value> </property> <property> <name>io.file.buffer.size</name> <value>131072</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/huangpengbo/Software/hadoop/tmp</value> </property> </configuration>
3> 修改hdfs-site.xml文件。
<configuration> <property> <name>dfs.namenode.secondary.http-address</name> <value>master-hadoop:9001</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>/home/huangpengbo/Software/hadoop/hdfs/name</value> <description>NameNode Config</description> </property> <property> <name>dfs.datanode.data.dir</name> <value>/home/huangpengbo/Software/hadoop/hdfs/data</value> <description>DataNode Config</description> </property> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> </configuration>
4> 修改mapred-site.xml文件,将mapred-site-template.xml修改为mapred-site.xml。
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>master-hadoop:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>master-hadoop:19888</value> </property> </configuration>
5> 修改yarn-site.xml文件。
<property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>master-hadoop:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>master-hadoop:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>master-hadoop:8031</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>master-hadoop:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>master-hadoop:8088</value> </property>
6> 修改slaves文件,低版本还需修改masters文件。
hostname-slave1 hostname-slave2 ... hostname-slaven
6. 分发hadoop到各个slave节点。
7. 格式化namenode:hadoop namenode -format。
8. 在master节点启动HADOOP的各个deamon进程,${HADOOP_HOME}/sbin/start-all.sh
9. 使用jps验证各个deamon进程是否开启。
注:
防火墙问题解决:http://blog.csdn.net/liuxinghao/article/details/40121945