千家信息网

Hadoop完全分布式配置

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,一、首先说一下,Hadoop有三种运行模式。第一个是独立(或本地)运行模式:无需运行任何守护进程,所有程序都在一个同一个JVM上执行。第二个是伪分布模式:Hadoop守护进程运行在本地机器上,模拟一个
千家信息网最后更新 2024年09月22日Hadoop完全分布式配置
 一、首先说一下,Hadoop有三种运行模式。第一个是独立(或本地)运行模式:无需运行任何守护进程,所有程序都在一个同一个JVM上执行。第二个是伪分布模式:Hadoop守护进程运行在本地机器上,模拟一个小规模的集群。第三个是全分布模式,也就是通常所说的完全分布式模式:Hadoop守护进程运行在一个集群上。  下面简单介绍下完全分布式的配置: 首先准备三台机器,系统公共配置部分: 系统信息:[root@hadoop1 ~]# cat /etc/redhat-releaseCentOS release 6.7 (Final)[centos@hadoop1 ~]$ uname -r2.6.32-573.el6.x86_64[root@hadoop1 ~]# uname -mx86_64 公共操作用户:centoscentos用户在/etc/sudoers中的公共配置:[root@hadoop1 ~]# grep centos /etc/sudoerscentos ALL=(ALL) NOPASSWD: ALL 环境变量如下:[root@hadoop1 ~]# tail -16 /etc/profile#javaJAVA_HOME=/home/centos/download/jdkPATH=$JAVA_HOME/bin:$PATHCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport JAVA_HOMEexport CLASSPATH#hadoopHADOOP_HOME=/home/centos/download/hadoopPATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbinexport PATH 主机IP域名映射如下:[root@hadoop1 ~]# cat /etc/hosts10.0.0.101 hadoop110.0.0.102 hadoop210.0.0.103 hadoop3  主节点IP为:[root@hadoop1 ~]# ifconfig | awk -F '[ :]+' 'NR==2{print $4}'10.0.0.101从节点IP分别为:[root@hadoop2 ~]# ifconfig | awk -F '[ :]+' 'NR==2{print $4}'10.0.0.102[root@hadoop3 ~]# ifconfig | awk -F '[ :]+' 'NR==2{print $4}'10.0.0.103 Java版本[root@hadoop1 ~]# java  -versionjava version "1.8.0_65"Java(TM) SE Runtime Environment (build1.8.0_65-b17)Java HotSpot(TM) 64-Bit Server VM (build25.65-b01, mixed mode) Hadoop版本[root@hadoop1 ~]# hadoop versionHadoop 2.7.3Subversionhttps://git-wip-us.apache.org/repos/asf/hadoop.git -r baa91f7c6bc9cb92be5982de4719c1c8af91ccffCompiled by root on 2016-08-18T01:41ZCompiled with protoc 2.5.0From source with checksum2e4ce5f957ea4db193bce3734ff29ff4This command was run using/home/centos/download/hadoop-2.7.3/share/hadoop/common/hadoop-common-2.7.3.jar   二、配置ssh首先在三台机器上的家目录分别执行下述生成密钥对脚本,这样的话,三台机器的centos之间就可以免密码登录、免密码传输文件等操作。[centos@hadoop1 ~]$ ll createssh.sh-rwxr-xr-x 1 centos centos 51 May 14 11:05createssh.sh[centos@hadoop1 ~]$ cat createssh.sh#!/bin/shssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa 然后在三台机器上的家目录分别执行下述分发公钥[centos@hadoop1 ~]$ ll fen.sh-rwxr-xr-x 1 centos centos 142 May 14 12:14fen.sh[centos@hadoop1 ~]$ cat fen.sh#!/bin/shssh-copy-id -i ~/.ssh/id_rsa.pub centos@hadoop1ssh-copy-id -i ~/.ssh/id_rsa.pub centos@hadoop2ssh-copy-id -i ~/.ssh/id_rsa.pub centos@hadoop3 #上述只是在执行的时候会输入yes和系统用户密码,其他在执行的时候就不会再次输入密码了。执行SSH的目的是,比如在配置好完全分布式的时候,主节点会自动吊起从节点的日志并且往里面写入数据,此时SSH的密钥对就起作用了。 #经常碰到的坑,要配置三台机器家目录中.ssh的权限为700,而且要配置家目录中.ssh目录中的authorized_keys权限为644.[centos@hadoop1 ~]$ chmod 700 .ssh[centos@hadoop1 ~]$ chmod 644  .ssh/authorized_keys  三、重点的配置文件内容 #三台机器共同配置[centos@hadoop1 ~]$ grep JAVA_HOME download/hadoop/etc/hadoop/hadoop-env.sh# The only required environment variable isJAVA_HOME.  All others are# set JAVA_HOME in this file, so that it iscorrectly defined onexport JAVA_HOME=/home/centos/download/jdk   #JAVA环境变量要在这再配置一下 [centos@hadoop1 ~]$ cat download/hadoop/etc/hadoop/core-site.xml                      fs.defaultFS               hdfs://hadoop1        [centos@hadoop1 ~]$ cat download/hadoop/etc/hadoop/hdfs-site.xml                      dfs.replication                2#副本数,对应从节点数        [centos@hadoop1 ~]$ cat download/hadoop/etc/hadoop/mapred-site.xml                      mapreduce.framework.name                yarn         [centos@hadoop1 ~]$ cat download/hadoop/etc/hadoop/yarn-site.xml                      yarn.resourcemanager.hostname               hadoop1                             yarn.nodemanager.aux-services               mapreduce_shuffle        #注意这里只配置从节点的域名[centos@hadoop1 ~]$ cat download/hadoop/etc/hadoop/slaveshadoop2hadoop3  四、启动hadoop #下述命令只在主节点hadoop1中执行!#首先执行格式化命令[centos@hadoop1 ~]$ hadoop namenode -format #然后启动hadoop[centos@hadoop1 ~]$ start-all.sh #查看启动进程#主节点执行,名称节点只会存在于主节点中,包括文件名称等内容。[centos@hadoop1 ~]$ jps2736 SecondaryNameNode2961 Jps2889 ResourceManager2539 NameNode  #从节点执行,数据节点只会存在于从节点,是真正存放数据的地方。[centos@hadoop2 ~]$ jps2322 NodeManager2234 DataNode2380 Jps [centos@hadoop3 ~]$ jps2481 DataNode2646 Jps2569 NodeManager  #临时文件都生成在了根目录下的/tmp目录下[centos@hadoop1 ~]$ ll /tmp/total 32drwxrwxr-x 3 centos centos 4096 May 1414:05 hadoop-centos-rw-rw-r-- 1 centos centos    5 May 14 14:06 hadoop-centos-namenode.pid-rw-rw-r-- 1 centos centos    5 May 14 14:06hadoop-centos-secondarynamenode.piddrwxr-xr-x 2 centos centos 4096 May 1414:06 hsperfdata_centosdrwxrwxr-x 3 centos centos 4096 May 1414:06 Jetty_0_0_0_0_50070_hdfs____w2cu08drwxrwxr-x 3 centos centos 4096 May 1414:06 Jetty_0_0_0_0_50090_secondary____y6aanvdrwxrwxr-x 4 centos centos 4096 May 1414:06 Jetty_hadoop1_8088_cluster____.jtly5k-rw-rw-r-- 1 centos centos    5 May 14 14:06yarn-centos-resourcemanager.pid
0