Hadoop完全分布模式配置详解
2012-04-24 08:52
555 查看
Hadoop集群的安装有三种支持模式: 单机模式:默认情况下,Hadoop被配置成以非分布式模式运行的一个独立Java进程。 伪分布式模式:Hadoop可以在单节点上以所谓的伪分布式模式运行,此时每一个Hadoop守护进程都作为一个独立的Java进程运行。 完全分布式模式:在集群中所有机器节点上安装必须软件。 本文实现完全分布式模式的安装,如下: 硬件环境: 三台电脑 hadoop-1:172.20.213.200(master) Red Hat Enterprise Linux Server release 5.3 (Tikanga) x86_64 hadoop-2:172.20.213.199(slave) Red Hat Enterprise Linux Server release 5.3 (Tikanga) x86_64 hadoop-3:172.20.213.201(slave) Red Hat Enterprise Linux Server release 5.4 (Tikanga) i386 对 于Hadoop来说,在HDFS看来,节点分为Namenode 和Datanode,其中Namenode只有一个,Datanode可以是很多;在 MapReduce看来,节点又分为Jobtracker和 Tasktracker,其中Jobtracker只有一个,Tasktracker可以是很多。 所以通常有两台master,一台作为NameNode,一台作为JobTracker,剩下的都为slaves,同时当做DataNode和 TaskTracker使用. 当然也可以将NameNode和JobTracker都放在一台master上面. 这里让hadoop-1做为master和Jobtracker,hadoop-1,hadoop-2和hadoop-3作为DataNode和TaskTracker 1.配置各主机IP,主机名,如上。 2. 修改hosts文件,要确保每台机器的主机名和IP地址之间能正确解析,如果该台机器作Namenode用,则需要在hosts文件中加上集群中所有机器 的IP地址及其对应的主机名,如果该台机器作Datanode用,则只需要在hosts文件中加上本机IP地址和Namenode机器的IP地址。 [hpfl@hadoop-1 ~]$ cat /etc/hosts # Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost ::1 localhost6.localdomain6 localhost6 172.20.213.200 hadoop-1 hadoop-1 172.20.213.199 hadoop-2 hadoop-2 172.20.213.201 hadoop-3 hadoop-3 3.Hadoop要求所有机器上hadoop的部署目录结构要相同,并且都有一个相同的用户名的帐户。 分别在三台机器上新增用户hpfl,密码123456,主目录是/home/hpfl usradd hpfl ; passwd hpfl 4.SSH 集群的启动是从NameNode开始的,于是DataNode的运行需要NameNode的远程调用,Hadoop使用ssh命令远程运行DataNode节点。SSH需要配置为无密码公钥认证的方式。 [hpfl@hadoop-1 ~]$ssh-keygen -t rsa 这 个命令将为hadoop-1上的用户hpfl生成其密钥对,询问其保存路径时直接回车采用默认路径,当提示要为生成的密钥输入passphrase的时 候,直接回车,也就是将其设定为空密码。生成的密钥对id_rsa,id_rsa.pub,默认存储在/home/hpfl/.ssh目录下;然后将 id_rsa.pub的内容复制到每个机器(也包括本机)的/home/hpfl/.ssh /authorized_keys文件中,如果机器上已经有authorized_keys这个文件,就在文件末尾加上id_rsa.pub中的内容,如 果没有authorized_keys这个文件,直接复制过去就行. [hpfl@hadoop-1 ~]$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys [hpfl@hadoop-1 .ssh]$ scp authorized_keys hadoop-2:/home/hpfl/.ssh/ [hpfl@hadoop-1 .ssh]$ scp authorized_keys hadoop-3:/home/hpfl/.ssh/ 输入 yes 来继续。这会把该服务器添加到已知主机的列表中 The authenticity of host ‘hadoop-2(172.22.213.199)’ can’t be established. RSA key fingerprint is 03:e0:30:cb:6e:13:a8:70:c9:7e:cf:ff:33:2a:67:30. Are you sure you want to continue connecting (yes/no)? 这里会提示输入密码,输入hadoop账号密码就可以了。 改变各主机上的 authorized_keys 文件的许可权限: [hpfl@hadoop-1 .ssh]$chmod 644 authorized_keys 检查下是否配置成功,从hadoop-1机器上ssh到hadoop-2和hadoop-3,如果不需要输入密码则配置成功,如果还需要请检查上面的配置是否正确。 1. [hpfl@hadoop-1 ~]$ ssh hadoop-1 2. [hpfl@hadoop-1 ~]$ ssh hadoop-2 3. [hpfl@hadoop-1 ~]$ ssh hadoop-3 注意:整个过程中只涉及到创建密钥,复制公钥,添加公钥内容,没有更改配置文件,实际上配置文件/etc/ssh/sshd_config中开启了公钥验证 { RSAAuthentication yes PubkeyAuthentication yes } 至此,namenode能无密码验证登陆每个datanode。 5、JDK 下载JDK,由于两台64位,下载jdk-6u21-linux-x64.bin,一台32位,下载jdk-6u21-linux-i586.bin 安装jdk1.6.0_21到/usr/java/下 然后: 编辑三台机器的/etc/profile,增加如下内容 export JAVA_HOME=/usr/java/jdk1.6.0_21 export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin 另外,由于redhat 自带 java 解释器,需要建立软链接到/usr/bin/下替换gij的链接 命令为: ln –s –f /usr/java/jdk1.6.0_21/bin/java /usr/bin/java ln –s –f /usr/java/jdk1.6.0_21/bin/javac /usr/bin/javac 6、hadoop配置 将下载好的hadoop-0.21.0.tar.gz 放到 /home/hpfl/hadoopInstall/目录下, (1) tar zxvf hadoop-0.21.0.tar.gz #解压文件 为了方便升级,建立软链接并且将配置文件与安装目录分离 [hpfl@hadoop-1 ~]$ln -s hadoop-0.21.0 hadoop [hpfl@hadoop-1 ~]$mkdir /home/hpfl/hadoop-config hadoop/conf /下hadoop-env.sh ,core-site.xml,hdfs-site.xml,mapred-site.xml masters,slaves六个文件copy到/home/hpfl/hadoopInstall/hadoop-config中 指定环境变量 $HADOOP_CONF_DIR指向该目录。 [hpfl@hadoop-1 ~]$ echo 'export HADOOP_CONF_DIR=$HOME/HadoopInstall/hadoop-config/' >> .bashrc 在/etc/profile中设置PATH变量 export HADOOP_HOME=/home/hpfl/hadoopInstall/hadoop export PATH=$PATH:$HADOOP_HOME/bin (2) 配置 (a)编辑conf/hadoop-env.sh文件,至少需要将JAVA_HOME设置为Java安装根路径。 (b)配置core-site.xml <configuration> <property> <name>hadoop.tmp.dir</name> <value>/home/hpfl/tmp/</value> (注意,请先在hpfl目录下建立tmp文件夹) </property> <!-- file system properties --> <property> <name>fs.default.name</name> <value>hdfs://hadoop-1:9000</value> </property> </configuration> (c)配置hdfs-site.xml <configuration> <property> <name>dfs.replication</name> <value>3</value> (replication 是数据副本数量,默认为3,datanode 少于3台就会报错) </property> </configuration> <property> <name>dfs.name.dir</name> <value>/home/hpfl/name/</value> #hadoop的name目录路径 </property> <property> <name>dfs.data.dir</name> <value>/home/hadoop/data/</value> #hadoop的data目录路径 </property> dfs.name.dir是NameNode持久存储名字空间及事务日志的本地文件系统路径。当这个值是一个逗号分割的目录列表时,nametable数据将会被复制到所有目录中做冗余备份。 dfs.data.dir是DataNode存放块数据的本地文件系统路径,逗号分割的列表。当这个值是逗号分割的目录列表时,数据将被存储在所有目录下,通常分布在不同设备上。 dfs.replication是数据需要备份的数量,默认是3,如果此数大于集群的机器数会出错。 注意:此处的name1、name2、data1、data2目录不能预先创建,hadoop格式化时会自动创建,如果预先创建反而会有问题。 (d)配置mapred-site.xml <configuration> <property> <name>mapred.job.tracker</name> <value>hadoop-1:9001</value> </property> </configuration> 配置masters和slaves来设置主从结点,注意最好使用主机名,并且保证机器之间通过主机名可以互相访问,每个主机名一行。 (e)配置masters文件,加入namenode的ip地址(其实是配置第二名称节点的位置) hadoop-1 (f)配置slaves文件, 加入所有datanode的ip地址 hadoop-1 hadoop-2 hadoop-3 (3)将配置好的hadoop打包 cd /home/hadoop tar -czf hadoop-0.21.0.tar.gz ~/hadoopInstall/ scp -r hadoop-0.21.0.tar.gz hadoop-2:~/ scp -r hadoop-0.21.0.tar.gz hadoop-3:~/ 复制到各从机后解开,确保目录结构与master机一致 7.测试 格式化HDFS hadoop namenode -format 格式化namenode 启动停止HDFS start-all.sh(或start-dfs.sh start-mapred.sh) stop-all.sh(或stop-dfs.sh stop-mapred.sh) 简单操作HDFS hadoop fs –mkdir testdir hadoop fs –put *.* *.* hadoop fs -ls 故障诊断 (1) 执行 $ bin/start-all.sh 启动 Hadoop 进程后,会启动5个 java 进程, 同时会在 /tmp 目录下创建五个 pid 文件记录这些进程 ID 号。通过这五个文件,可以得知 namenode, datanode, secondary namenode, jobtracker, tasktracker 分别对应于哪一个 Java 进程。当感觉Hadoop 工作不正常时,可以首先查看这5个 java 进程是否在正常运行。 (2) 使用 web 接口。访问 http://localhost:50030 可以查看 JobTracker 的运行状态。访问 http://localhost:50060 可以查看 TaskTracker 的运行状态。访问 http://localhost:50070 可以查看 NameNode 以及整个分布式文件系统的状态,浏览分布式文件系统中的文件以及 log 等。注意要更新客户端的hosts文件,参考hadoop-1的hosts文件 (3) 查看 ${HADOOP_HOME}/logs 目录下的 log 文件,namenode, datanode, secondary namenode, jobtracker, tasktracker 各有一个对应的 log 文件,每一次运行的计算任务也有对应用 log 文件。分析这些 log 文件有助于找到故障原因。
相关文章推荐
- Hadoop的完全分布模式配置——以普通用户'hadoop'启动
- HBase入门笔记(三)-- 完全分布模式Hadoop集群安装配置
- 完全分布模式hadoop集群安装配置之二 添加新节点组成分布式集群
- 完全分布模式hadoop集群安装配置之二 添加新节点组成分布式集群
- Hadoop2.6.2完全分布式集群HA模式安装配置详解
- Hadoop2.6.2完全分布式集群HA模式安装配置详解
- Linux环境Hadoop完全分布模式安装详解
- Hadoop2.6.2完全分布式集群HA模式安装配置详解
- hadoop0.20.2完全分布模式安装和配置
- 完全分布模式hadoop集群安装配置之一安装第一个节点
- Centos6.4 +Hadoop 1.2.1集群完全分布模式配置
- HBase入门笔记(三)-- 完全分布模式Hadoop集群安装配置
- hadoop安装与配置(完全分布模式)
- 独立模式、伪分布模式、hbase和hadoop HA(高可用)完全分布式模式。集成配置
- hadoop学习笔记之完全分布模式安装
- 配置Hadoop分布模式并运行Wordcount示例
- Hadoop2.2.0伪分布模式配置
- 虚拟机CentOS环境下Hadoop伪分布模式的安装与配置问题总结
- Hadoop的伪分布和完全分布安装配置过程
- win7使用伪分布模式配置Hadoop2.2