hadoop运行模式
- 本地模式
- 伪分布式模式
- 完全分布式模式
阿里云定制2.7.2版本
本地模式
https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html
单机模式案例
1.案例一
1
2
3
4
5
6
7查找给定文件的正则匹配对象grep
By default, Hadoop is configured to run in a non-distributed mode,as a single Java process. This is useful for debugging.
The following example copies the unpacked conf directory to use as input and then finds and displays every match of the given regular expression. Output is written to the given output directory.
$ mkdir input
$ cp etc/hadoop/*.xml input
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar grep input output 'dfs[a-z.]+'
$ cat output/*2.案例二
1
2
3
4
5
6
7
8
9
10wordcount案例 手写wordCount案例
大数据框架都需要有输入路径和输出路径
1.创建输入分析路径
mkdir input
2.在input文件夹中创建两个文件
touch wcinput00001
touch wcinput00002
3.使用hadoop中的wordcount分析input文件夹
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount input output
指定案例中使用的分析代码为wordcount,指定输入路径和输出路径注意可以对一个文件单独分析
伪分布式模式
按照集群配置,但是只是一个机器一个hadoop
https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html
修改core-site.xml
1.配置namenode的地址
1
2
3
4
5
6<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
这里如果是真的集群,就需要指定localhost为主节点的ip
hdfs://h100:90002.指定hadoop运行时产生的文件的存储目录
1
2
3
4
5<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop/data/tmp</value>
</property>
需要在指定路径下创建文件注意:指定了core-site.html协议之后hadoop采用的文件存储不在是本地的file:////
变为了hdfs://所以这时执行本地案例会报错
https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/core-default.xml
ctrl f搜索hadoop.tmp.dir
发现默认路径是/tmp/hadoop-${user.name}
在系统的tmp目录下创建一个带当前用户名的路径,我们把它改为自己的路径进行储存。
/opt/module/hadoop/data/tmp
系统tmp会自动清空并且存在权限问题
配置hadoop-env.sh
- 修改JAVA_HOME
1
2export JAVA_HOME=$PATH:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64/jre
分布式必须配置JAVA_HOME的详细地址
配置hdfs-site.xml
- 1.指导hdfs副本的数量(主从数量)
默认副本是三个,指的就是在三台机器上存储同一个数据,任何一台节点挂掉都还有两份,
而且挂掉之后,如果有其它节点还会把其它子节点拿上来使用(始终保持副本数为3)但如果只
有一台服务器就只会保存一份,如果你逐渐增加节点它就会立刻备份你的节点1
2
3
4<property>
<name>dfs.replication</name>
<value>1</value>
</property>
启动集群
1.格式化namenode
第一次启动时格式化,以后就不要格式化了,格式化会把集群上的数据全部清空1
bin/hdfs namenode –format
2.启动namenode
1
2
3
4
5sbin/hadoop-daemon.sh start 启动hadoop守护进程
可以启动namenode和datanode
这里hadoop3.3使用bin/hdfs –daemon start namenode代替
启动后jps查看java进程
想格式化之前先查看jps关掉进程namenode和datanode然后将data和logs删掉3.启动datanode
1
2bin/hdfs –daemon start datenode
https://blog.csdn.net/QQB67G8COM/article/details/833824774.关闭防火墙
1
2
3
4systemctl stop firewalld.service
开放端口命令:firewall-cmd --zone=public --add-port=8088/tcp --permanent
关闭端口命令:firewall-cmd --zone= public --remove-port=50070/tcp --permanent
重载配置命令:firewall-cmd –reload5.jps和使用hadoop干活
发现namenode和datanode都已经起来,可以干活了。怎么干活呢?- 1.hadoop给你提供了一个web登录页面
- 2.h101:9870或10.167.218.161:9870
- 3.这里的端口号3.1以上为9870,以下为50070
- 1.overview为整个集群的介绍介绍了版本 唯一id 空间大小默认10GB 使用空间大小
- 2.datanodes数据节点介绍数据节点的个数和每个数据节点的信息
- 3.datanode volume failures失败的时候在这里查看,写报告
- 4.snapshot快照
- 5.startup progress显示开启启动处理的一些进程,开机处理的事务
- 6.重点utillities
1.browse directory
根目录
1 | 如何在其中创建路径和使用对应路径文件命令? |
注意事项
1.查看logs日志
1
cd logs,一旦出现问题第一时间查看datanode-hadoop01.log
2.为什么不能经常格式化namenode
1
2
3
4
5
6
7
8
9
10
11cd /opt/module/hadoop/data/tmp/dfs
name存储的namenode的数据
data文件就是存储的集群上实实在在的数据
cd name/current/
cat VERSION
有集群的唯一标识
NAMENODE:clusterID=CID-45074509-2b20-437e-a0c0-ea59dbcd00fb
cd ../../data/current/
cat VERSION
DATANODE:clusterID=CID-45074509-2b20-437e-a0c0-ea59dbcd00fb
NAMENODE和DATANODE必须有相同的集群id,他们之间需要通过这个id交互通讯。如果你没事儿格式化namenode就会导致集群id变化导致namenode和datanode不认识。
所以当要格式化namenode时要把存储集群id的文件都删除
启动yarn和mapreduce
分析
- 1.配置集群在yarn上运行MR
RESOURCE MANAGER 集群资源调度的老大
NODE MANAGER 单节点资源调度的老大 - 2.启动,测试集群增删改查(集群搭建好后一定要测试,功能测试和性能测试)
- 3.在yarn上执行wordcount
执行步骤
- 1.配置集群
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
291.配置yarn-env.sh
JAVA_HOME
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-0.el7_8.x86_64/
2.配置yarn-site.xml
1.配置nodemanager获取数据方式
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
这里采用了洗牌的算法赋予reduce获取数据资源的方式
2.指定resourceManager放在哪个服务器上
<property>
<name>yarn.resourcemanager.hostname</name>
<value>h101</value>
</property>wq
3.配置mapred-env.sh
遇到env就配置JAVA_HOME
4.配置mapred-site.xml.templete
1.指定MR运行在yarn上
<propery>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
The default number of map tasks per job. Ignored when mapreduce.framework.name is "local".
默认是本地运行
启动集群
- 1.启动namenode datanode jps
- 2.启动resourcemanager nodemanager
- 3.0版本以下sbin/yarn-daemon.sh start resourcemanager
- 3.0版本以上bin/yarn –daemon start resourcemanager
bin/yarn –daemon start nodemanager
运行jar包wordcount
删除目录文件
bin/hdfs dfs –rm –r /user/c/output
hadoop3.0以上的server变量参数不再共享,需要手动设置
In Hadoop 3, YARN containers do not inherit the NodeManagers’ environment variables. Therefore, if you want to inherit NodeManager’s environment variables (e.g. HADOOP_MAPRED_HOME), you need to set additional parameters (e.g. mapreduce.admin.user.env and yarn.app.mapreduce.am.env).
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.0.jar wordcount /user/c/input /user/c/output
簡單來說HADOOP_MAPRED_HOME=HADOOP_HOME,但必須額外設定HADOOP_MAPRED_HOME。
查看 h101:9870
h101:8088查看datanode节点
history点不进去是因为服务没有开
四.配置历史服务器
为了查看程序的历史运行情况,需要配置一下历史服务器,具体步骤如下:
1.配置mapred-site.xml
2.启动历史服务器
sbin/mr-jobhistory-daemon.sh start historyserver
bin/mapred –daemon start historyserver
日志聚集开启
应用运行完成以后,将程序运行日志信息上传到HDFS系统上,可以方便的查看程序运行详情,方便调试。
注意:
开启日志聚集功能需要重新启动NodeManager、ResourceManager、HistoryManager
1.停止三大manager
bin/mapred –daemon stop historyserver
bin/yarn –daemon stop nodemanager
bin/yarn –daemon stop resourcemanager
2.配置yarn-site.xml
3.重启三大manager
4.删除wordcount重新运行
bin/hadoop jar share/ ……
wordcount //// ////
配置信息详解
可以通过以下网站左下角配置文件获取详细配置信息(或者去对应的jar包查找)
https://hadoop.apache.org/docs/stable/
1.core-default.xml
1.fs.defaultFS namenode的名称和端口号
2.hadoop.tmp.dir数据存储的路径
2.hdfs-default.xml
1.dfs.replication 副本数
3.yarn-default.xml 开启node resource manager
1.yarn.nodemanager.aux-services nodemanager采用的算法
mapreduce_shuffle
2.yarn.resourcemanager.hostname nodemanager的服务器名称
3.yarn.log-aggregation-enable 开启日志文件
4.yarn.log-aggregation.retain-seconds 日志默认的保留天数
4.mapred-default.xml
1.mapreduce.framework.name yarn
mapreduce默认是local运行,这里配置为用yarn服务器运行
2.yarn.app.mapreduce.am.env
3.mapreduce.map.env
4.mapreduce.reduce.env
配置mapreduce的map和reduce和yarn的mapreduce的运行环境
5.mapreduce.jobhistory.address
配置历史访问地址
6.mapreduce.jobhistory.webapp.address
配置历史web的访问地址