错误记录

错误记录

image-20230909090430240

  1. 错误

    1. 描述

      1
      HDFS集群卡顿
    2. 原因

      1
      加载混乱
    3. 解决方案

      1
      2
      3
      4
      5
      先启动主结点,再启动从结点
      - Master
      - node1
      - node2
      - node3
  2. 错误

    1. 描述

      1
      id乱码
    2. 原因

      1
      id以数字开头了
    3. 解决方案

      1
      2
      3
      4
      在id前面加入_

      # id命名规则
      字母数字下划线,数字不能开头
  3. 错误

    1. 描述

      1
      2
      3
      # 更改location后,数据没有和表一起迁移
      # 内部表修改表路径
      # 外部表修改表路径
    2. 解决方案

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      需要配合其他方式迁移数据
      1、移动hdf中的文件(cut & patse)
      2、通过hdfs命令迁移

      # 内部表
      1、设置新路径
      alter table tb_test set location 'hdfs://user/tset'
      2、移动文件地址
      hdfs dfs -mv 源文件路径 新文件路径

      # 外部表
      1、删除旧表
      drop table 表名;(删除元数据)
      2、移动文件到新路径
      hdfs dfs -mv 源文件路径 新文件路径
      3、新建表,并指定为新路径
      create external table 表名()loaction '新路径';
      4、恢复元数据
      msck repaire table 表名;
  4. 错误

    1. 描述

      1
      datanode写数据时,为什么不用并行操作
    2. 解决方案

      1
      2
      3
      4
      5
      6
      7
      Datanode写数据时通常不会使用并行操作的主要原因是为了维护数据的一致性和可靠性。Datanode是Hadoop分布式文件系统(HDFS)中的一部分,负责存储和管理数据块。在写入数据时,如果多个并行操作同时进行,可能会导致数据的不一致性,即数据块的写入顺序被打乱或者存在冲突。

      使用并行操作可能会引发以下问题:
      写入冲突:如果多个并行操作试图同时写入同一个数据块,可能导致数据的部分或全部丢失,或者产生不一致的数据副本。
      顺序问题:HDFS强调数据块的顺序写入,以保证数据的完整性和读取性能。如果允许并行操作,可能会打乱数据块的顺序,导致数据的读取错误或性能下降。
      元数据更新:并行操作可能涉及到元数据的更新,例如记录文件的大小、时间戳等信息。如果多个操作同时进行,可能会引发元数据的不一致性问题。
      为了避免这些问题,HDFS采用了串行的写入方式,即每次只有一个操作可以写入数据。这样可以确保数据的一致性和可靠性。
  5. 错误

    1. 描述

      1
      datanode写数据时,为什么一定要收到副本的应答再接收下一个packet
    2. 解决方案

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      Datanode写数据时一定要收到副本的应答再接收下一个数据包是为了确保数据的正确复制和保持一致性。在Hadoop分布式文件系统(HDFS)中,数据被划分成多个数据块,并在多个Datanode上进行复制存储,以提高数据的可靠性和容错性。

      当客户端向Datanode写入数据时,数据会被分成多个数据包进行传输。Datanode在接收每个数据包后,会将其写入本地磁盘并将数据块复制到其他的Datanode上。在这个过程中,Datanode需要等待每个数据包的副本节点完成数据写入并发送应答,表示数据已经成功复制到副本节点上,然后才会接收下一个数据包。

      主要原因如下:

      数据一致性:通过等待副本的应答,Datanode可以确保每个数据包在多个节点上的正确复制。如果Datanode没有收到副本的应答,它可以尝试将数据包复制到其他节点,直到满足数据复制的要求。这样可以保持数据的一致性,避免数据包在不同节点上的不一致状态。
      容错性:通过在多个节点上存储数据的副本,HDFS可以提供容错能力。如果某个节点发生故障或数据丢失,可以使用副本节点上的数据进行恢复,确保数据的可靠性和可用性。等待副本的应答可以确保至少有一个节点成功复制了数据包,增加了系统的容错性。
      流控制:等待副本的应答还可以帮助控制数据写入的速率,防止数据流量过大导致网络拥塞或节点负载过重。通过等待副本的应答,Datanode可以根据副本节点的处理能力和网络状况来调整数据写入的速度,以保持系统的稳定性和性能。
      因此,通过要求收到副本的应答再接收下一个数据包,Datanode能够确保数据的正确复制、一致性、容错性,并帮助控制数据写入的速率,从而提供高度可靠的数据存储和管理。