云计算系列(2)初始HDFS与MapReduce
前言
上节课主要是完成了Hadoop的安装,这次主要完成以下内容
-
配置HDFS
-
web端查看HDFS文件系统
-
配置yarn
-
web端查看yarn系统
-
配置mapreduce
-
运行MapReduce的WordCount 程序
上次课完成到如下图的状态
还需要改善一下,就是我们在root用户下解压安装他的拥有者是数字不是root
通过chown命令更改一下拥有者
chown -R root:root /opt/wdp
运行一下hadoop命令有如下提示说明hadoop可以用
Hadoop运行模式
(1)本地模式(默认模式):是否启动进程----没有,在几台机器上安装的—1台,
不需要启用单独进程,直接可以运行,测试和开发时使用。
(2)伪分布式模式:是否启动进程----需要,在几台机器上安装的—1台
等同于完全分布式,只有一个节点。
(3)完全分布式模式:是否启动进程----需要,在几台机器上安装的—多台
多个节点一起运行。
HDFS是什么
HDFS(Hadoop Distributed File System),它是一个文件系统,用于存储文件,通过目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。
HDFS的设计适合一次写入,多次读出的场景,且不支持文件的修改。适合用来做数据分析,并不适合用来做网盘应用。
我们用HDFS而不是本地存储因为HDFS是分布式存储,你一个人的主机往往存储量很有限
一个namenode管多个datanode,每个datanode里面有多个block,每个block大小为128M
这种架构主要由四个部分组成,分别为 HDFS Client、 NameNode、 DataNode 和 SecondaryNameNode。下面我们分别介绍这四个组成部分。
1)Client:就是客户端。
(1)文件切分。文件上传 HDFS 的时候, Client 将文件切分成一个一个的 Block,然后进行存储。
(2)与 NameNode 交互,获取文件的位置信息。
(3)与 DataNode 交互,读取或者写入数据。
(4) Client 提供一些命令来管理 HDFS,比如启动或者关闭 HDFS。
(5) Client 可以通过一些命令来访问 HDFS。
2)NameNode:就是master,它是一个主管、管理者。
(1)管理 HDFS 的名称空间。
(2)管理数据块(Block)映射信息
(3)配置副本策略
(4)处理客户端读写请求。
3)DataNode:就是 Slave。 NameNode 下达命令, DataNode 执行实际的操作。
(1)存储实际的数据块。
(2)执行数据块的读/写操作。
4)Secondary NameNode:并非 NameNode 的热备。当 NameNode 挂掉的时候,它并不能马上替换 NameNode 并提供服务。
(1)辅助 NameNode,分担其工作量。
(2)定期合并 Fsimage 和 Edits,并推送给 NameNode。
(3)在紧急情况下,可辅助恢复 NameNode。
1.本地模式运行官方wordcount文件
在wdp文件夹下新建一个datain文件夹
在datain文件夹下新建一个aa.txt文件
然后vi命令进入aa.txt文件
按i进入编辑模式,然后输入以下内容,注意以Tab键分隔
输入完成后Esc+:+wq保存离开
(一个小技巧,按下Esc键后,yy复制,p粘贴)
然后进入到hadoop路径下
bin,sbin文件夹与启动有关
etc文件夹与环境有关
lib文件夹是库
share文件夹下的hadoop下的mapreduce下有我们要用的demo
运行下面这个命令
hadoop jar hadoop-mapreduce-examples-2.7.6.jar wordcount /opt/wdp/datain/aa.txt /opt/wdp/dataout
首先起map和reduce
由于文件很小一共18个词是所以map和reduce都很快完成
通过上图箭头指示表示计算成功
红色箭头所指文件中保存了计算结果
cat命令查看文件内容会看到不同字符串出现次数
2.伪分布式模式配置安装
在本地模式的基础上配置HDFS伪分布式
(1)配置集群
(a)配置:hadoop-env.sh
上节课已完成
(b)配置:core-site.xml
进入上图路径
vi命令进入箭头所指文件,在configuration中插入下面内容
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop100:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/wdp/hadoop/data/tmp</value>
</property>
注意箭头所指为自己的主机名
(c)配置:hdfs-site.xml
步骤同上
<!-- 指定HDFS副本的数量 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
(2)启动集群
(a)格式化namenode(第一次启动时格式化,以后就不要总格式化)只在第一台机器里格式化
hdfs namenode -format
如上图箭头说明格式化成功
(b)启动namenode
hadoop-daemon.sh start namenode
(c)启动datanode
hadoop-daemon.sh start datanode
或者用下面一条命令代替(b)与(c)
start-dfs.sh
输入三轮yes与密码
(3)查看集群
(a)查看是否启动成功
输入命令jps
(b)查看产生的log日志
当前目录:/opt/wdp/hadoop/logs
jps命令下没谁看谁的log,看以log结尾的
vi进去,shift+g跳转到最后一行
INFO表示无误
(c)web端查看HDFS文件系统
http://172.16.50.100:50070/dfshealth.html#tab-overview
3.在HDFS上运行MapReduce的WordCount 程序
输入命令hdfs会给出提示
输入命名
hdfs dfs -mkdir /data
把本地路径/opt/wdp/datain/aa.txt文件推到HDFS
hdfs dfs -put /opt/wdp/datain/aa.txt /data
可以看到上传成功
进入到hadoop的share的hadoop的mapreduce目录
此时再次运行wordcount案例
注:我们在格式化之后,会自动到hdfs而非本地路径中找输入文件
输入以下命令
hadoop jar hadoop-mapreduce-examples-2.7.6.jar wordcount /data/aa.txt /out
4.YARN上运行MapReduce程序
YARN的作用是调度,比如启多少个map,多少个reduce,怎么优化
1)在集群的基础上配置Yarn:
(1)配置yarn-env.sh中的JAVA_HOME
首先进入如下路径
vi yarn-env.sh
export JAVA_HOME=/opt/wdp/jdk/
更改如上图,然后保存退出
(2)配置yarn-site.xml 主从结构
vi yarn-site.xml
<!-- reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop100</value>
</property>
(3)配置:mapred-env.sh
配置一下JAVA_HOME
vi mapred-env.sh
export JAVA_HOME=/opt/wdp/jdk/
(4)配置: (对mapred-site.xml.template重新命名为) mapred-site.xml
mv mapred-site.xml.template mapred.site.xml
vi mapred.site.xml
<!-- 指定mr运行在yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
2)启动Yarn Hadoop spark flink
(1)启动resourcemanager
sbin/yarn-daemon.sh start resourcemanager
(2)启动nodemanager
sbin/yarn-daemon.sh start nodemanager
用下面命令代替上面两行
start-yarn.sh
3)Yarn的操作
(1)yarn的浏览器页面查看
http://172.16.50.100:8088/cluster
5.完全分布式
如果进行了之前的步骤只需更改slave文件就行
文章来源:https://www.toymoban.com/news/detail-435362.html
在slaves文件中加入主机名即可文章来源地址https://www.toymoban.com/news/detail-435362.html
到了这里,关于云计算系列(2)初识HDFS与MapReduce的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!