作者简介:大家好我是小唐同学(๑><๑),好久不见,为梦想而努力的小唐又回来了,让我们一起加油!!!
个人主页:小唐同学(๑><๑)的博客主页
目前再学习大数据,现在在初级阶段-刚学Hadoop,若有错误,请指正
目录
一,集群部署规划
(1)NameNode和SecondaryNameNode不要安装在同一台服务器
(2)ResourceManager也很消耗内存,不要和NameNode,SecondaryNamenode配置在同一台机器上
二,配置文件说明
置文件和自定义配置文件
(1)默认配置文件有四种对应Hadoop的四大组件
(2)自定义配置文件:
core-site.xml , hdfs-site.xml , yarn-site.xml , mapred-site.xml
这四个配置文件存放在$HADOOP_HOME/etc/hadoop这个路径上,用户可以根据项目需求重新进行修改配置。($HADOOP_HOME为Hadoop的安装路径)
三,配置集群:
(1)配置核心文件:
配置core-site.xml
<configuration>
<!--指定NameNode的地址-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop102:8020</value>
</property>
<!--指定hadoop数据的存储目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-3.1.3/data<value>
</property>
</configuration>
配置hdfs-site.xml
<configuration>
<!--nn web fangwen dizhi -->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop102:9870</value>
</property>
<!--2nn web fangwen dizhi -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop104:9868</value>
</property>
</configuration>
<configuration>
<!--指定MR走shuffle-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>
mapreduce_shuffle
</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>
hadoop103
</value>
</property>
<property>
<name>yarn.nodemanager.env-whitelist<name>
<value>JAVA_HOME,HADOOP_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
</configuration>
<configuration>
<!--指定MapReduce程序运行在Yarn上-->
<property>
<name>
mapreduce.framework.name
</name>
<value>
yarn
</value>
</property>
</configuration>
配置完成后在集群上分发配置好的Hadoop配置文件
上述集群配置完成后,在群起集群之前需要配置workers文件
先切换到Hadoop的目录下
cd /opt/module/hadoop-3.1.3
切换到Hadoop的文件夹下
cd etc/hadoop/
vim workers
上述命令进入workers文件下(文件不允许有空格和空行)
有几个节点就配置几个名称
配置完毕后需要分发一下 分别配置给其他集群内部的服务器
四,格式化节点:
(1)如果集群是第一次启动,需要初始化(格式化)NameNode,在格式化的过程中我遇到了报错,通过阅读报错信息,重新配置了四个自定义配置文件(建议报错先认真阅读)
hdfs namenode -format
上述格式化完成
五,启动集群:
启动集群在sbin目录下(在Hadoop的安装目录下)
启动HDFS:
启动完毕后用命令jps(jps命令在Hadoop的安装路径下执行,是java提供的一个显示当前所有java进程pid的命令)
可以看到跟我们的集群规划相同
搜索 hadoop102:9870可以看到hdfs存储的数据信息
在配置了ResourceManager的节点(hadoop103)启动YARN
可以看到三个进程符合集群规划
搜素 hadoop103:8088可以看到yarn的资源调度网页
六,测试集群:
上传文件到集群:
(1)上传小文件:
上传带内容的文件到wcinput
(2)上传大文件:
回到根部录下可以看到有添加的数据,但是这只是个链接,方便展示,实际存储在datanode节点
刚开始初始化节点的时候只有name,现在存入数据后出现了data
数据存储的目录:
/opt/module/hadoop-3.1.3/data/dfs/data/current/BP-2091296116-192.168.10.102-1677829450991/current/finalized/subdir0/subdir0
查看文件内容:
查看小文件直接cat即可
查看大文件:
cat blk_1073741826>>tmp.tar.gz和cat blk_1073741827>>tmp.tar.gz是把这两个拼接成一个jdk压缩包,然后解压发现就是上传的jdk压缩包,所以可以确定hdfs实际上内容存储的位置就是在这里。这里为什么会把jdk的压缩包分为两部分呢?原因就是在hadoop里存储的容量是128MB为一个块,然后jdk的压缩包有180MB,所以一个块存不下,需要两个块,注意块的序号是从0开始的
Hadoop是具有高可用的,所以会有多个备份,不测试显示3分备份,所以在hadoop103,hadoop104上同样的路径有同样的数据