Hadoop相关知识点

这篇具有很好参考价值的文章主要介绍了Hadoop相关知识点。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


一、主要命令

  • 开启防火墙 sudo ufw enable
  • 关闭防火墙 sudo ufw disable
  • 查看防火墙状态 sudo ufw status
  • 修改主机名 sudo vi /etc/hostname
  • 修改映射 sudo vi /etc/hosts (考题)
  • 建立文件夹 mkdir 文件夹名字
  • 删除文件夹 rm -rf 递归删除文件夹向下穿透,其下所有文件、文件夹都会被删除 rm -f 强制删除文件 rm -r 递归删除文件
  • 解压文件夹 tar -zxvf 文件名 -C ~/解压到的文件路径
  • 文件重命名 mv 旧文件名 新文件名
  • 修改主机名的文件位置 /etc/hostname
  • 使配置环境变量生效 source ~/.bashrc
  • 修改环境变量的 vi ~/.bashrc
  • 查看具体的某个文件用cat
  • 查看目录用 ls
  • 重启ssh服务器 service sshd restart
  • 启动ssh sudo service ssh start
  • sudo是必须执行的命令
  • -i 表示覆盖的意思

二、配置虚拟机

2.1 设置静态ip

查看当前ip:ifconfig
进入到netplan文件夹 cd /etc/netplan
查看文件目录,找到需要修改的文件 ls
进行修改ip sudo vi 00-installer-config.yaml
将设置的网络应用 sudo netplan apply
再次查看ip ip已经更换

2.2 修改主机名及映射

修改主机名 sudo vi /etc/hostname 修改后记得重启
修改映射 sudo vi /etc/hosts (考题)

2.3 修改映射

sudo vi /etc/hosts 将ip地址和主机名的映射添加到文件中192.168.xx.xxx single
使用文本编辑器打开 C:\Windows\System32\drivers\etc\host 文件并在文件末尾添加以下配置并保存退出 192.168.xx.xxx single

2.4 单机模式

  • 没有HDFS
  • 只能测试MapReduce程序
  • MapReduce处理的是本地的Linux的文件数据
  • 只需要修改hadoop-env.sh配置文件

2.5 伪分布式

  • 格式化HDFS的命令: hdfs namenode -format

启动hadoop集群的命令

  • start-all.sh或
  • 启动dfs命令: start-dfs.sh
  • 启动yarn命令: start-yarn.sh
  • 启动yarn之后会有哪些服务?

ResourceManage(8088)、NodeManager(8042)

  • 启动hdfs之后会有哪些服务?

Namenode 、 DataNode、 SecondaryNamenode

  • 启动所有服务的命令: start-all.sh
  • 查看yarn、web页面的端口号

查看yarn的端口号:8088
查看hdfs端口号:50070(通过web看)

  • 查看集群启动进程
    jps
    yarn的中文名(Yet Another Resource Negotiator):资源调度与分配框架

  • 控制从节点运行的服务器:workers(3.0hadoop)slaves(2.0hadoop)

  • NameNode(名称结点)的职责

A. 维护HDFS集群的目录树结构:NameNode负责存储和管理文件系统的命名空间,包括目录、文件和其属性等信息。
B. 维护HDFS集群的所有数据块的分布、副本数和负载均衡:NameNode记录每个数据块的位置和副本信息,并负责管理数据块的复制和迁移,以实现数据的可靠性和负载均衡。
C. 响应客户端的所有读写数据请求:NameNode接收客户端的读写请求,并将请求转发到适当的DataNode进行数据读取或写入操作。
D.NameNode负责管理数据块和处理元数据。

  • Namenode无法访问时:
  • 默认数据块大小:64mb 128mb 128mb
  • 要存下700m需要6块数据块:一块为128
  • namenode保存的两个文件:edits文件(文件的更新操作,记录操作日志)fsimage文件(修改信息 时间 控制访问权限 hdfs的元信息)
  • DataNode(数据结点)职责

1.存储数据块block
2.根据namenode的指令对block进行创建、复制、删除等操作
3.datanode和namenode进行心跳通信,接受namenode指令
4.定期向namenode汇报自身存储的block列表及健康状态
5.负责为客户端发起的读写请求提供服务

  • block是hdfs文件系统中最小的存储单位
    SSH免密登录原理
    非对称加密算法(rsa)、公钥加密(给别人)、私钥解密(给自己)
    生成密钥对:ssh-keygen -t
    将公钥copy给serverB:ssh-copy-id -i
    在主机上登录子机:ssh 子机名

2.6 完全分布式

  • 分发命令:scp -r /home/hadoop/hadoop-2.7.4 node2:/home/hadoop

三、初识Hadoop

  • 大数据的特征:大量、真实、多样、低价值密度、高速
  • hadoop起源的三篇论文:NDFS、MapReduce(分而治之,并行计算)、HDFS(分布式文件系统)->源于谷歌的GFS论文
  • hadoop处理的是离线数据!
  • 元数据(MetaData):记录hdfs文件系统的相关信息,包括文件系统的目录结构 文件名 文件路径 文件大小等。
  • Hadoop的优缺点(简答题):

高扩展性: 增加集群的存储和计算能力
低成本: 利用多台廉价计算机,分布式系统处理
高效性: 离线并行动态计算,提高计算效率
高可靠性: 维护数据副本(3个),可有效防止数据丢失
高容错性:可转移到其他计算机上运行

缺点

不适合处理小文件:为了解决大型数据集的处理问题
无法实时计算:核心是执行离线计算的引擎
安全性较低存储和网络传输方面缺乏对数据的加密

场景:

适合:大数据分析、离线分析
不适合:少量数据、复杂数据、在线分析

  • HDFS是Hadoop生态圈的基石,主要负责hadoop集群数据的存储和读取
  • 大数据处理的意义:对未来事物发展规律做出预测,对之前的数据进行归纳和总结。
  • 第二名称节点的作用:辅助namenode合并fsimage文件和edits文件 将合并结果发送给namenode,帮助主节点namenode进行元数据备份和恢复

四、三种模式的区别

4.1、单机模式与伪分布式模式的区别

单机模式

运行在单个计算机中
所有Hadoop组件(如HDFS和YARN)都在本地运行,并且没有网络通信
在单机模式下,Hadoop使用本地文件系统来存储数据。

伪分布式模式

Hadoop在一台计算机上模拟了一个分布式环境。
Hadoop服务(如HDFS和YARN)运行在单个计算机上,但它们通过网络进行通信和协作。
文件系统被配置为HDFS,而不是本地文件系统,数据被存储在HDFS中

4.2、特点

Hadoop相关知识点,hadoop,大数据,分布式

4.3、配置文件的差异

4.3.1、单机模式

Hadoop相关知识点,hadoop,大数据,分布式

4.3.2、伪分布式模式

Hadoop相关知识点,hadoop,大数据,分布式

4.3.3、完全分布式模式

Hadoop相关知识点,hadoop,大数据,分布式

五、问答题

Hadoop相关知识点,hadoop,大数据,分布式

(1)ifconfig
(2)scp -r /home/hadoop/hadoop-2.7.4 node2:/home/hadoop
(3)hdfs namenode -format
(4)start-dfs.sh 和 start-yarn.sh

Hadoop相关知识点,hadoop,大数据,分布式

(1)hdfs dfs -mkdir /hd123
(2)hdfs dfs -touch data.txt
(3)hdfs dfs -ls /hd123
(4)hdfs dfs -appendToFile test.txt /hd123/data.txt
(5)hdfs dfs -cat /hd2112054139/data.txt
(6)hdfs dfs -get /hd2112054139/data.txt

根据HDFS的块大小为128MB,存储300MB的文件需要多少个数据块。

计算方法如下:
文件大小 / 块大小 = 数据块数量
300MB / 128MB ≈ 2.34
根据向上取整规则,需要3个数据块来存储300MB的文件。
所以,需要3个数据块来存储300MB的文件。

六、shell访问hdfs(通过HDFS*Shell命令)

  • 格式化HDFS
    hdfs namenode -format
  • 创建目录
    hdfs -dfs -mkdir /hd2112054139
  • 级联的创建目录
    hdfs dfs -mkdir -p /hd2112054139/a/b/c 使用-p时,如果父目录不存在,会自动创建
  • 查看目录
    hdfs dfs -ls /hd211205139
  • 级联的查看目录
    hdfs dfs -ls -R /hd2112054139
  • 将本地文件上传到HDFS中:hdfs dfs -put 文件名 文件目录 或 hdfs dfs -copyFromLocal b.txt /usr/opt/data
  • 将本地文件下载(复制):hdfs dfs -get 文件目录 本地文件目录
  • 追加数据

-appendToFile命令:将所有给定本地文件的内容追加到hdfs文件,hdf文件不存在,则创建该文件
hdfs dfs -appendToFile d.txt /usr/opt/data/a.txt

  • 在hdfs中文件复制到同一个目录下:hdfs dfs -cp /data1.txt /data2.txt
  • 查看文件夹大小:hdfs dfs -du -s 文件夹名
  • 查看文件大小:hdfs dfs -du 文件名
  • hdfs中删除文件:hdfs dfs -rm -r 文件路径名
  • hdfs中统计文件:hdfs dfs -count 文件路径名(显示:目录个数、文件个数、文件总计大小、输入路径)
  • 合并目录下的文件并下载到本地:hdfs dfs -getmerge /hd123 ~/input/merge.txt,
    并在本地查看内容:cd 本地文件名 cat merge.txt
  • 查看文件内容:
#-cat命令:将文件内容显示出来(适合小文件)
hdfs dfs -cat /usr/opt/data/a.txt
#-haed命令:查看文件前1KB的内容
hdfs dfs -head /usr/opt/data/a.txt
#-tail命令:查看文件最后1KB的内容
hdfs dfs -tail /usr/opt/data/a.txt
#-tail -f命令:可以动态显示文件中追加的内容
#在Linux系统中
tail -f 1.txt 
#hdfs
hdfs dfs -tail -f /usr/opt/data/a.txt
  • HDFS中block默认保存3份
  • 一个datanode上只有一个数据块的备份

6.1、问答题

1.根据要求写出HDFS shell命令

  • 在HDFS上创建名为test的目录(此目录在主目录下)
    hdfs dfs -mkdir ~/test
  • 将本地的文件file上传至test目录下
    hdfs dfs -put /input/file.txt /test
  • 将本地的文件file内容追加至test目录下的file1.txt中
    hdfs dfs -appendToFile file.txt /test/file1.txt
  • 查看test的目录信息.
    hdfs dfs -ls /test

2.这三台操作系统为Ubutun 18.04机器(机器名分别是master(192.168.22.101)、slave(192.168.30.102)、slave2(192.168.22.103))部署Hadoop完全分布式环境,master上位Namenode节点,三台机器已经实现免密登录。实现下面功能需要输入什么Linux命令或者操作进行什么操作?

  • 在主机master生成密钥的命令是什么?
    ssh-keygen -t
  • 从master,通过ssh登录到slave2
    ssh slave2
  • 在master上,格式化HDFS
    hdfs namenode -format’
  • 启动YARN
    start-yarn.sh
  • 该Hadoop集群运行时,使用哪儿个命令查看集群启动进程
    jps

6.2、注意

hdfs dfs -put ~/input/file.txt /test 和 hdfs dfs -put /input/file.txt /test 的区别在于文件的来源路径。

hdfs dfs -put ~/input/file.txt /test 中的/input/file.txt表示当前用户的主目录下的input/file.txt文件。波浪号()在这里代表当前用户的主目录。
hdfs dfs -put /input/file.txt /test中的/input/file.txt表示根目录下的input/file.txt文件。
所以,两个命令的主要区别在于文件来源的路径。第一个命令将从当前用户的主目录下复制file.txt文件到HDFS中的/test目录,而第二个命令将从根目录下的/input目录中复制file.txt文件到HDFS中的/test目录。

七、Zookeeper

  • namenode存储的元数据的信息有哪些?

1.文件和目录的命名空间:NameNode维护了整个文件系统的目录结构,包括文件和目录的名称、层次结构和路径。
2. 文件的块信息:NameNode记录了文件被分成的数据块(block)的信息,包括每个数据块的ID、大小和位置。
3. 数据块的副本位置:NameNode维护了每个数据块的副本位置信息,包括哪些数据节点(DataNode)存储了该数据块的副本。
4. 文件和目录的权限和属性:NameNode存储了文件和目录的权限(例如所有者、组、权限模式)以及其他属性(例如创建时间、修改时间)。
5. 数据节点的健康状态:NameNode跟踪和管理数据节点的健康状态,包括数据节点的存活状态、容量利用率等。
6. 数据节点的心跳和块报告:NameNode接收来自数据节点的心跳信号和块报告,用于监控数据节点的状态和数据块的完整性。

  • hdfs的联邦机制解决的问题是什么?
  1. 存储容量扩展:HDFS联邦机制允许将多个独立的HDFS集群组合成一个逻辑上的大型文件系统。每个集群称为一个命名空间,多个命名空间可以通过联邦机制进行组合,从而扩展整个文件系统的存储容量。
  2. 负载均衡:通过联邦机制,HDFS可以将数据块分布在多个命名空间中,从而实现负载均衡。不同的命名空间可以部署在不同的物理节点上,可以根据节点的负载情况来动态地分配数据块,使得整个文件系统的负载更加均衡。
  3. 故障容错:联邦机制提供了更高的容错性。如果一个命名空间发生故障,其他命名空间仍然可以正常工作,因为数据块可以在多个命名空间中进行备份。
  4. 简化管理:通过联邦机制,可以将多个独立的HDFS集群管理为一个逻辑实体,简化了管理和维护工作。管理员可以对整个联邦文件系统进行统一的管理操作,而无需逐个管理每个独立的集群。
  • zookeeper的一个应用场景是高可用机制。
  • 启动zookeeper的命令:zkServer.sh start
  • 进入zookeeper客户端的命令:zkCli.sh
  • 创建持久节点:create /myNode myData
  • 创建顺序节点:create -s /myNode myData
  • hadoop的联邦机制用不到zookeeper
  • zookeeper只有1个leader,只要有leader就会有单点故障
  • zookeeper的follower可以参与投票。
  • 在ZooKeeper中,主要有三种角色:Leader(领导者)、Follower(跟随者)和Observer(观察者)。
  • leader可以处理事务请求。
  • Follower节点还参与Leader选举过程,并在Leader节点故障时选举新的Leader。
  • Observer节点可以接收客户端的读请求,并将写请求转发给Leader节点。与Follower节点不同的是,Observer节点不参与投票和决策,因此对集群的性能没有负面影响
  • 客户端可以连接到zookeeper集群中任一一台机器
  • zookeeper服务端默认的对外服务端口是2181
  • zookeeper生产环境一般采用奇数台(且大于1)台机器组成集群。(投票大于一半时)
  • tickTime指的是心跳时间的间隔
  • hdfs高可用集群中有一个active状态的namenode
  • initLimit指的是LF初始通信时限 集群中的follower服务器 (F)与leader服务器 (L)之间 初始连接 时能容忍的最多心跳数(tickTime的数量)
  • zookeeper的节点类型有临时节点、持久节点、顺序节点
  • 持久节点和临时节点的区别?

持久节点(Persistent Node):

  1. 持久节点在创建后将一直存在,直到显式删除。
  2. 即使创建该节点的客户端断开连接,持久节点也会一直保留在ZooKeeper中。
  3. 其数据和状态会被持久化存储,不受客户端连接状态的影响。
  4. 其子节点(如果有)也是持久节点,需要用户手动删除。

临时节点(Ephemeral Node):文章来源地址https://www.toymoban.com/news/detail-738971.html

  1. 临时节点在创建它的客户端与ZooKeeper之间的连接断开后会被自动删除。
  2. 当创建该节点的客户端与ZooKeeper断开连接时,临时节点会被删除,无论是客户端主动断开还是发生了网络故障。
  3. 临时节点通常用于表示临时性的状态或临时会话。
  4. 其数据和状态不会被持久化存储,只存在于客户端连接期间。
  5. 其子节点(如果有)也是临时节点,并且在父节点被删除时一同被删除。

7.1、znode

  • znode的类型在创建时被指定,一旦创建就无法改变
  • znode主要有两种类型,分别是临时节点和永久节点
  • zonde保存的数据不能超过1MB.
  • zookeeper种的每个znode都有一个唯一的路径标识。
  • 能改变zookeeper服务器状态的操作称为事务的操作。
  • 2888是ZooKeeper中用于Leader选举通信和协调的端口,每个服务器都可以配置一个唯一的2888端口,用于与其他服务器建立连接和进行通信。

八、Hive

到了这里,关于Hadoop相关知识点的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 数据结构之单链表的相关知识点及应用

    数据结构之单链表的相关知识点及应用

     找往期文章包括但不限于本期文章中不懂的知识点: 个人主页 :我要学编程(ಥ_ಥ)-CSDN博客 所属专栏 :数据结构 目录 链表的概念及结构 链表与顺序表的区别与优劣势 链表的分类 单链表的实现 单链表中增加节点  单链表中尾插数据  打印单链表中节点的数据  单链表中

    2024年04月15日
    浏览(14)
  • 分布式高级知识点

    Paxos 是一种分布式一致性算法,用于在分布式系统中达成共识。它可以保证,即使在存在节点故障的情况下,系统也能就某个值达成一致。 Paxos 算法的基本思想是,首先选出一个协调者(leader)。协调者负责向其他节点发送提案(proposal)。其他节点收到提案后,会对其进行

    2024年02月03日
    浏览(12)
  • 【字节面试】Fail-fast知识点相关知识点

    【字节面试】Fail-fast知识点相关知识点

    字节面试,问到的一个小知识点,这里做一下总结,其实小编之前有一篇文章,已经对此有过涉及,不过这里知识专项针对于问题,把这个知识点拎出来说一下。 什么是Fail-fast机制? Hashmap是否拥有Fail-fast机制? ConcurrentModificationException异常原因和解决方法是什么? 哪些你常

    2024年01月22日
    浏览(15)
  • DAC相关知识点

    1.回放数据64bit的数据来源有两个地方: A——ROM波形数据表(数据来源可由dds产生或者matlab产生,本实际项目选择由dds产生的数据:通过写地址出来相应频率的波形)。 B——预留的接口给客户用来回访他们的I/Q数据 (64bit数据一般是4组16bit的IQ拼接的{i0,q0,i1,q1})。 2.6

    2024年02月12日
    浏览(9)
  • JVM相关知识点

    Java可以跨平台的原因是因为它使用了Java虚拟机(JVM)作为中间层。Java源代码首先被编译成字节码,然后由JVM解释执行或即时编译成本地机器代码。这样,在不同的操作系统上,只需要安装适合该操作系统的JVM,就可以运行相同的Java程序。JVM提供了一个抽象的执行环境,使得

    2024年02月08日
    浏览(9)
  • ThreadLocal相关知识点

    ThreadLocal是Java中的一个类,它提供了一种线程局部变量的机制。它的作用是,为每个线程创建一个独立的变量副本,各个线程之间互不干扰。简单来说,ThreadLocal为多线程环境下的线程提供了一种线程私有的数据存储方式。 使用ThreadLocal可以避免多线程中的数据共享和竞争条

    2024年02月11日
    浏览(10)
  • Linux相关知识点

    Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。 Linux内核 是一个Linux系统的内核,而不是一个操作系统 Linux操作系统 红帽操

    2024年02月11日
    浏览(10)
  • http相关知识点

    http相关知识点

    一张网页实际上可能会有多种元素组成,这也就说明了网页需要多次的http请求。 可由于http是基于TCP的,而TCP创建链接是有代价的,因此频繁的创建链接会导致效率降低 为了防止这种情况,就需要两端主机都具备支持长连接的功能,将大份的资源使用一条链接就包含,也就是

    2024年02月13日
    浏览(10)
  • java相关知识点

    1.String和StringBuffer如何互相转化 StringBuffer buffer = new StringBuffer(string); String string = buffer.toString();  2.如何实现两个数组内容的拷贝  3.如何去除字符串首尾空格 str.trim()  4.字符串和字符数组如何相互转换 字符串转字符数组:str.toCharArray(); 字符数组转字符串:strs.valueOf(char[] ch)  

    2023年04月23日
    浏览(14)
  • SpringMVC相关知识点

    传统开发中的控制层: 接收请求参数 request.getParameter 封装实体 new 实体类调用其set方法 访问业务层 接收访问结果 指派页面 通过request和response对象进行页面跳转 将共有行为进行抽取成DispatcherServlet【SpringMVC内部集成】,通过Spring-MVC.xml配置文件去配置。 Spring: 获取请求参数

    2024年02月16日
    浏览(9)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包