网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
两个集群逻辑上分离没有依赖 互不影响,物理上在一起,部署在一台服务器上
两个集群都是标准的主从架构集群
1.关闭防火墙,避免部分端口用不了
systemctl stop firewalld.service # 关闭防火墙
systemctl disable firewalld.service # 关闭开机防火墙自启动
systemctl status firewalld.service # 查看防火墙状态
2.免密认证
ssh -keygen回车
ssh-copy-id ip或者主机名字
ssh-copy-id node1
ssh node1 # 验证
exit # 退出
3.同步时间
yum -y install ntpdate
ntpdate ntp4.aliyun.com
4.创建部分目录进行区分data和server
data放数据。server放安装的jdk等软件
mkdir -p /export/server
mkdir -p /export/data/hdfs
mkdir -p /export/data/tmp
mkdir -p /export/data/hdfs/name
mkdir -p /export/data/hdfs/data
5.在Hadoop-env.sh配置jdk的路径和hadoop的路径
例如:export JAVA_HOME=/export/server/jdk-1.8
export HADOOP=/export/server/hadoop-3.3.4
6.配置core-site.sh,yarn-site.xml,mapred-site.xml,hdfs-site.xml,workers
7start-all.sh启动集群测试
hadoop内置执行脚本
一键启停集群在hadoop/sbin/下执行:
start-dfs.sh
stop-dfs.sh
单独启停某进程
hadoop-daemon.sh (start |status |stop ) (namenode | resourcemanager| datanode |secondarynamenode)
例如:hadoop-daemon.sh start datanode
3.hdfs基本操作
路径区分:
linux: /export/server
hdfs: /export/server
如何区分?
通过协议头区分
linux:file://
hdfs:hdfs://
如上:
linux:file:///export/server
hdfs:hdfs://ip:8020//export/server
一般不使用,要避免bug或者必须的情况下使用
1.创建文件夹
hadoop fs [ mkdir -p path]
或者 hdfs dfs [mkdir -p path]
hadoop fs mkdir -p file
2.查看文件夹
hadoop fs -ls -h -R
hdfs dfs -ls -h -R
3.上传文件到hdfs指定目录下
hadoop fs -put -f -p linux路径 hadoop路径
hdfs dfs -put -f -plinux路径 hadoop路径
4.查看文件内容
hadoop fs -cat | more :借助管道查看大数据
hdfs dfs -cat | more
5.下载文件
hadoop fs -get linux路径 hadoop路径
hdfs dfs -get linux路径 hadoop路径
6.拷贝hdfs文件可以改名
hadoop fs -cp hadoop路径/名字1 hadoop路径/名字2
hdfs dfs -sp hadoop路径 hadoop路径
7.追加内容
linux使用vim增删改查,而hdfs只能追加,和删除,不能修改某一行等
hdfs dfs -appendToFile linux路径 hdfs路径
hadoop fs -appendToFile linux路径 hdfs路径
8.移动和改名
hdfs dfs -mv [-p] hdfs路径 hdfs路径
hadoop fs -mv [-p] hdfs路径 hdfs路径
9.hdfs删除
回收站默认关闭,默认在/user/用户(hadoop)/.Trash
hdfs dfs -rm [-r] [-f] hdfs路径
hadoop dfs -rm [-r] [-f] hdfs路径
4.HDFS客户端-Jetbrians产品插件
了解在Jetbrians安装使用bigdatatools 产品插件,使用Big Data Tools插件帮助我们方便的操作HDFS,比如idea,pycharm
安装过程:pycharm为例
在设置中——>Plugins(插件)——>marketplace(市场)——>搜索Big Data Tools然后点击安装,在重新启动即可
5.HDFS
hdfs的主从架构:namenode和datanode
5.1存储原理
分布式存储:把文件一分为多份,存入不同服务器,每个节点存储文件的一部分
标准单位:block块,每一块默认256MB
假如有1.5G的文件存入有3台机器的完全分布式系统中,那么原理就是将1.5G文件按block块的大小分为6个block块,每台机器上存储2个块,为了防止某台机器上的块数据丢失,在hdfs上有多副本存储机制,会在其他服务器上有可修改备份,来提高文件的安全性。
1.长久默认设置
hdfs-site.xml中配置副本数量:
dfs.replication 3
2.临时设置
在上传文件时使用:hadoop fs -D dfs.replication=2 -put Linux文件 Hadoop路径
已上传地文件使用:hadoop fs -setrep [-R] 2 文件路径
5.2 fsck命令
fsck检查文件副本数
hdfs fsck path[-files -blocks]
5.3NameNode元数据
- edits
- fsimage
namenode基于edits来记录每次操作,包括时间,路径,什么什么操作的记录,类似于日志
fsimage记录某个时间节点前的当前文件全部文件状态和信息,维护整个文件的数据。
fsimage是又SecondaryNameNode将edits合并得到的,以便于NameNode使用
5.4HDFS数据的读写流程
NameNode权限:可读可写审核
数据写入流程:
1.客户端向NameNode发起请求
2.Namenode审核权限和空间等条件,如果满足条件就允许写入,告知客户端可以写入的DataNode地址
3.客户端向给出的Datanode地址发送数据包
4.接受到数据包的Datanode向其他Datanode发送副本
5.写入完成之后客户端通知NameNode,Namenode做元数据记录工作
6.达到一定量或者到一定时间节点之后有SecondaryNameNode合并为fsimage。
数据读取流程:
1.客户端向NameNode发起访问请求
2.NameNode审核权限,满足条件,则给客户端返回此文件的block列表
3.客户端拿到block列表之后找Datanode读取文件。
注意:namenode不负责数据写入和读取,之负责元数据记录和权限审批,客户端直接给datanode写入或者读取数据。客户端会找网络距离最近的Datanode写入或者读取。
6.分布式计算概述
分布式计算:以分布式的形式完成数据统计,得到需要的数据。提高服务器组合来提高解决大数据的能力。
分散——汇总模式:将数据分为多片,各种完成自己的任务,得出结果汇总给其他服务器。
中心调度——分步执行模式:将一个节点作为中心调度管理者,将任务划分为几个具体步骤,管理者安排每个机器执行步骤,得出结果数据。
6.1MapReduce概述
mapreduce是Hadoop的分布式计算组件之一,mapreduce提供了两个编程接口,map和reduce
map完成分散的功能,对数据进行分布式处理。
reduce完成汇总的功能,对数据完成汇总的任务。
假设有4台服务器执行mapreduce,可以3台机器机器分散,然后一台机器汇总。
6.2YARN概述
一般情况下,MarReduce是基于YARN运行的。
yarn是HADOOP的一个组件,是分布式资源调度,管控整个分布式集群的资源调度使用。yarn为运行的任务分配资源,提高资源利用率。
6.3YARN架构
6.3.1 核心架构
YARN的主从架构: ResourceManager和NodeManager
ResourceManager:整个集群资源调度的管理者,负责协调各个服务器的资源调度。
NodeManager:单个服务器资源调度的管理者,负责协调单个服务器的资源调度。
6.3.2 YARN的辅助架构 (了解)
ProxServer应用代理:作为RM的一部分运行,但是可以独立运行,提高安全性
在yarn-site.xml中配置yarn.web.address配置。
jobHistory:将分散在容器中的日志汇集到hdfs中,记录运行日志并提供WEB UI站点1提供用户使用浏览器查看。
6.4MapReduce&YANR的部署
6.4.1 yarn的部署
yarn.site.xml
yarn.nodemanager.aux-services mapreduce_shuffle
yarn.log.server.urlhttp://test1:19888/jobhistory/logs
yarn.web-proxy.addresstest1:8089proxy server hostname and port
yarn.log-aggregation-enabletrueConfiguration to enable or disable log aggregation
yarn.nodemanager.remote-app-log-dir/tmp/logsConfiguration to enable or disable log aggregation
yarn.resourcemanager.scheduler.classorg.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler
yarn.resourcemanager.hostname test1 yarn.nodemanager.env-whitelist JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME yarn.webapp.ui2.enable true yarn.nodemanager.vmem-check-enabled false
yarn.nodemanager.log-dirs/data/nm-log
yarn.nodemanager.log.retain-seconds10800
yarn.nodemanager.resource.memory-mb 2048
yarn-env.sh
export JAVA_HOME=/export/server/jdkexport HADOOP_HOME=/export/server/hadoopexport HADOOP_CONF_DIR= H A D O O P _ H O M E / e t c / h a d o o p e x p o r t H A D O O P _ L O G _ D I R = HADOOP\_HOME/etc/hadoopexport HADOOP\_LOG\_DIR= HADOOP_HOME/etc/hadoopexportHADOOP_LOG_DIR=HADOOP_HOME/logs
6.4.2 Mapreduce的配置文件
mared-env.sh
export JAVA_HOME=/export/server/jdk
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
_DIR= H A D O O P _ H O M E / e t c / h a d o o p e x p o r t H A D O O P _ L O G _ D I R = HADOOP\_HOME/etc/hadoopexport HADOOP\_LOG\_DIR= HADOOP_HOME/etc/hadoopexportHADOOP_LOG_DIR=HADOOP_HOME/logs
6.4.2 Mapreduce的配置文件
mared-env.sh
export JAVA_HOME=/export/server/jdk
[外链图片转存中…(img-vcANWEQI-1715574127399)]
[外链图片转存中…(img-Lv5B3phA-1715574127400)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!