很懒,只想转载
文章一:
hadoop的三种运行模式区别及配置详解
转自:https://blog.csdn.net/qq_26442553/article/details/78710170
基于hadoop进行开发时,有时候,会被hadoop的三种运行模式搞混,也会被hadoop集群有哪些配置弄得晕头转向,因为看不同的文档有不同的配置方法。所以要先弄明白hadoop的运行模式,以及对应模式的有哪些必须配置,尤为重要,做到心中有数。
首先配置hadoop的组件,均可以利用XML文件进行配置,四个配置文件:core-site.xml文件用于配置通用属性(common),hdfs-site.xml文件用于HDFS的属性配置,mapred-site.xml文件用于配置MapReduce属性,yarn-site.xml用于YARN的配置。这些文件都存储在hadoop安装目录下的etc/hadoop子目录中(当然实际配置时也可以将etc/hadoop目录及其文件复制到另外一个位置,这样做的好处是将配置设置和安装文件隔离开。如果这样做的话,需要在环境变量中将HADOOP_CONF_DIR设置成指向那个新目录,或者在启动守护进程时使用–config配置选项)。其中。以上四个配置文件系统都有默认设置,分别保存在share/doc子目录下的4个HTML文件中,core-defalut.xml等等。
Hadoop的三种运行模式 :
1.独立(本地)运行模式:无需任何守护进程,所有的程序都运行在同一个JVM上执行。在独立模式下调试MR程序非常高效方便。所以一般该模式主要是在学习或者开发阶段调试使用 。
2.伪分布式模式: Hadoop守护进程运行在本地机器上,模拟一个小规模的集群,换句话说,可以配置一台机器的Hadoop集群,伪分布式是完全分布式的一个特例。
3.完全分布式模式:Hadoop守护进程运行在一个集群上。
注意:所谓分布式要启动守护进程 ,即:使用分布式hadoop时,要先启动一些准备程序进程,然后才能使用比如start-dfs.sh start-yarn.sh。而本地模式不需要启动这些守护进程
三种模式的集群必须配置信息:
下面详细分析配置三种模式的“集群”所需要的必须配置。可以配置完,体验一把,就可以主观地感受三种之间的区别。
组件名称 | 属性名称 | 本地模式 | 伪分布式 | 完全分布式 |
Common | fs.defaultFs | file:///(默认) | hdfs://localhost/ | hdfs://nanmenode |
HDFS | dfs.replication | N/A | 1 | 3(默认) |
MapReduce | mapreduce.framework.name | local(默认) | yarn | yarn |
Yarn | yarn.resoucemanager.hostname yarn.nodemanager.auxservice | N/A N/A | localhost mapreduce_shuffle | resoucemanager maperduce_shuffle |
注意:在本地模式下,将使用本地文件系统和本地MapReduce运行器。在分布式模式下,将启动HDFS和YARN守护进程。
文章二:
Hadoop架构介绍——Hadoop的三种运行模式
转自:https://blog.csdn.net/u013063153/article/details/53115216
三种模式:
-单机模式
-伪分布式模式
-完全分布式模式
单机模式
-默认模式。
-不对配置文件进行修改。
-使用本地文件系统,而不是分布式文件系统。
-Hadoop不会启动NameNode、DataNode、JobTracker、TaskTracker等守护进程,Map()和Reduce()任务作为同一个进程的不同部分来执行的。
-用于对MapReduce程序的逻辑进行调试,确保程序的正确。
伪分布式模式
-在一台主机模拟多主机。
-Hadoop启动NameNode、DataNode、JobTracker、TaskTracker这些守护进程都在同一台机器上运行,是相互独立的Java进程。
-在这种模式下,Hadoop使用的是分布式文件系统,各个作业也是由JobTraker服务,来管理的独立进程。在单机模式之上增加了代码调试功能,允许检查内存使用情况,HDFS输入输出,以及其他的守护进程交互。类似于完全分布式模式,因此,这种模式常用来开发测试Hadoop程序的执行是否正确。
-修改3个配置文件:core-site.xml(Hadoop集群的特性,作用于全部进程及客户端)、hdfs-site.xml(配置HDFS集群的工作属性)、mapred-site.xml(配置MapReduce集群的属性)
-格式化文件系统
完全分布式模式
-Hadoop的守护进程运行在由多台主机搭建的集群上,是真正的生产环境。
-在所有的主机上安装JDK和Hadoop,组成相互连通的网络。
-在主机间设置SSH免密码登录,把各从节点生成的公钥添加到主节点的信任列表。
-修改3个配置文件:core-site.xml、hdfs-site.xml、mapred-site.xml,指定NameNode和JobTraker的位置和端口,设置文件的副本等参数
-格式化文件系统
伪分布式示例:
1.core-site.xml修改
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost</value>
</property>
</configuration>
2.对hdfs-site.xml修改(主要是用来指定集群中数据块的副本系数)
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
3.对mapred-site.xml修改
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:8021</value>
</property>
</configuration>
4.对文件系统进行格式化
hadoop namenode -format
5.启动守护进程
bin文件下
运行start-all.sh
启动HDFS和MapReduce的守护进程
至此,NameNode、DataNode、JobTracker、TaskTracker等守护进程启动。
完全分布式模式示例:
假设有3台主机,其中1台主节点,2台从节点。
主节点和从节点配置相同。
1.core-site.xml修改
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.56.11:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/test/haddoop-data/tmp</value>//临时文件夹
</property>
</configuration>
2.对hdfs-site.xml修改(主要是用来指定集群中数据块的副本系数)
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/home/test/hadoop-data/hafs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/test/hadoop-data/hafs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
3.对mapred-site.xml修改
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>192.168.56.11:9001</value>
</property>
</configuration>
4.对配置文件下的conf/slaves进行编辑(将从节点的IP写入)
localhost
192.168.56.12
192.168.56.13
5.设置SSH免密码登录
ssh-keygen
将公钥密令追加到信任授权列表中
cat /home/test/.ssh/id_rsa.pub >>authorized_keys
6.在分节点上进行操作
将主节点的公钥复制到分节点上:
scp test(这个是计算机用户名)@192.168.56.11:home/test/.ssh/id_rsa.pub /home/test/.ssh
将主节点上的Hadoop复制到分节点上:
scp -r test@192.168.56.11:/opt/hadoop-1.2.1 /opt/
将拷贝来的公钥文件添加到信任列表中
cat /home/test/.ssh/id_rsa.pub >>/home/test/.ssh/authorized_keys
7.格式化HDFS主节点
hadoop namenode -format
8.启动
/opt/hadoop-1.2.1/bin/start-dfs/sh