三种运行模式
hadoop分为三种运行模式,分别为单机模式、伪分布式模式和完全分布式模式
需要调整hadoop-env.sh文件
1 | 设置JAVA_HOME(设置为自己的JAVA_HOME位置) |
单机模式(Standalone)
默认情况下为单机模式可以用来开发和调试
不需要对配置文件进行修改,使用的是本地的文件系统,Hadoop不会启动NameNode、DataNode、JobTracker、TaskTracker等守护线程,Map()和Reduce()任务作为同一个进程的不同部分来执行
wordcount示例
使用wordcount例子来演示一下hadoop,注意不需要改任何的配置文件
1 | hadoop-mapreduce-examples-3.3.0.jar该jar包为hadoop的一些示例代码 wordcount表示调用的是该jar包下的WordCount主类 wcinput为输入目录 wcoutput为输出目录 |
输入目录中的文件内容
1 | hadoop |
输出结果
1 | hadoop 3 |
伪分布式模式(Pseudo-Distributed)
Hadoop在本地机器模拟一个集群,需要修改core-site.xml(作用于全部进程及客户端)、hdfs-site.xml(配置HDFS集群的工作属性)、mapred-site.xml(配置MapReduce集群的属性)
hdfs配置测试
配置文件
core-site.xml
1 | <configuration> |
hdfs-site.xml
1 | <configuration> |
启动
第一次启动的时候需要格式化,之后就不要格式化了(格式化之后所有的数据就没了)
1 | hadoop namenode -format |
注意:在format过程中 要注意不要频繁地reformat namnode(格式化命令为 hdfs namenode -format)的ID信息。format过程中选择N(否)就是了。因为在每次hdfs namenode -format时都会为NameNode生成namespaceID,在hadoop.tmp.dir目录下的dataNode还是保留上次的namespaceID,因为namespaceID不一致,导致DataNode无法启动
1 | 启动namenodes和datanodes |
启动完之后使用jps来查看是否存在NameNode和DataNode
1 | jps |
访问localhost:9870可以查看hdfs的web页面
如果是3.X以下的对应的端口是50070
操作hdfs
1 | 在hdfs中创建目录 |
wordcount示例
再次操作一下wordcount的例子
1 | hadoop-mapreduce-examples-3.3.0.jar该jar包为hadoop的一些示例代码 wordcount表示调用的是该jar包下的WordCount主类 /test/wordcount/wcinput为输入目录(代表的是在hdfs上的目录位置) /test/wordcount/wcoutput为输出目录(代表的是在hdfs上的目录位置) |
此时在/test/wordcount/wcoutput目录下就会有这次执行的结果
yarn配置测试
yarn要在hdfs配置启动好的基础上进行配置
配置文件
mapred-site.xml
1 | <!-- 指定在哪运行计算,默认是local --> |
yarn-site.xml
1 | <!-- nodemanager执行任务的方式 --> |
启动
注意:要在hdfs启动的基础上进行启动
1 | sbin/start-yarn.sh |
启动之后使用jps查看,需要存在NodeManager和ResourceManager
可以使用localhost:8088来查看ResourceManager的web页面
wordcount示例
1 | bin/hadoop jar /usr/local/Cellar/hadoop/3.3.0/libexec/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.0.jar wordcount /test/wordcount/wcinput /test/wordcount/yarn_wcoutput |
此时在/test/wordcount/yarn_wcoutput目录下就会有这次执行的结果
完全分布式集群模式(Full-Distributed)
Hadoop运行在一个集群上,各主机间设置SSH免密码登录,把各从节点生成的公钥添加到主节点的信任列表,修改core-site.xml、hdfs-site.xml、maperd-site.xml,指定NameNode和JobTraker的位置和端口,设置文件的副本等参数
配置
首先是hdfs的NameNode和SecondaryNameNode不要放在一台服务器上,这两个占用的内存基本是1:1,然后是yarn的ResourceManager要避开上述的NameNode和SecondaryNameNode,放在另一台服务器上
core-site.xml
1 | <configuration> |
hdfs-site.xml
1 |
|
yarn-site.xml
1 | <!-- nodemanager执行任务的方式 --> |
mapred-site.xml
1 | <!-- 指定在哪运行计算,默认是local --> |
节点文件配置 在etc/hadoop/workers文件配置各个节点的主机名(这个文件里配置的是datanode节点)
1 | hadoop1 |
注意要配置ssh认证
启动集群
启动hdfs
1 | /sbin/start-dfs.sh |
在NameNode所在机器上启动
启动yarn
1 | /sbin/start-yarn.sh |
在resourcemanager所在机器上启动