Hadoop NameNode、DataNode热迁移方案

Hadoop迁移namenode 由于集群中namenode节点的资源太小,想将其中一个datanode跟namenode互换。集群中还安装有hive,impala,主要修改两个地方: 1. namenode元数据 2. hive数据库 3. 将hadoop和hive的配置文件同步到impala 一、namenode元数据 NameNode主要被用来管理整个分布式文件系统的命名空间(是目录和文件)的元数据信息,同 阅读详情

面试:你懂什么是分布式系统吗?Redis分布式锁都不会?>>>   hot3.png

最近我们生产环境的Hadoop集群需要调整几台服务器,具体转换关系如下:

datanode92.bi -> namenode02.bi
namenode01.bi(old) -> datanode19.bi
namenode02.bi -> datanode20.bi

最终目标为:

  • 将datanode92.bi、namenode01.bi服务器上的DataNode服务下线
  • 由于namenode02.bi服务器配置较低,因此将namenode02.bi服务器上的NameNode服务下线,将其迁移到配置更高的datanode92.bi服务器上
  • 利用闲置资源,将老的空闲的namenode01.bi(old)服务器调整为DataNode服务器
  • 调整完后,增加datanode19.bi、datanode20.bi两个服务器名称

一、DataNode下线

1、在namenode01上,添加退役节点的IP到黑名单,/usr/local/hadoop-2.6.3/etc/hadoop/dfs.exclude文件添加如下需要下线的服务器主机名称:

datanode92.bi
namenode01.bi

2、配置hdfs-site.xml:

<property>
    <name>dfs.hosts.exclude</name>
    <value>/usr/local/hadoop-2.6.3/etc/hadoop/dfs.exclude</value>
</property>

3、切换到/usr/local/hadoop-2.6.3/bin目录下,执行如下命令,刷新NN节点,不需要重启NN服务:

./hdfs dfsadmin -refreshNodes

执行命令后,需要及时查看NameNode日志验证命令是否执行成功,hadoop-hadoop-namenode-namenode01.bi.log输出日志如下:

Refresh nodes successful for namenode01.bi.10101111.com/10.216.2.25:8020
Refresh nodes successful for namenode02.bi.10101111.com/10.216.5.2:8020

4、查看spaceX,观察状态在decommisstion in progress的节点:

同时,还要查看需要进行拷贝的block副本数,也就是Number of Under-Replicated Blocks这个指标的值:

5、当所有要退役的节点状态都为Decommissioned,且Number of Under-Replicated Blocks数值为0,表明数据迁移工作已经完成

6、从slaves文件中清空退役节点

7、DN下线完成后,spaceX报磁盘满的警告,经过查看整个集群空间使用量及剩余量信息,证实可以忽略此警告:

(1)警告信息:

(2)磁盘剩余量17.46%:

二、NameNode迁移

1、停止服务:

  • 停止namenode02.bi上的 namenode、zkfc、journalnode、resourcemanager 服务,使namenode02.bi上的修改记录数据和元数据不再更新:
/usr/local/hadoop-2.6.3/sbin/hadoop-daemon.sh stop namenode
/usr/local/hadoop-2.6.3/sbin/hadoop-daemon.sh stop zkfc
/usr/local/hadoop-2.6.3/sbin/hadoop-daemon.sh stop journalnode
  • 停止Hive服务:查出hiveserver2和metastore的进程号,直接kill

2、通知运维更新网络信息:

  • 更新DNS信息
  • 修改主机名称,datanode92.bi的主机名称修改为namenode02.bi的主机名称,并同步更新Hadoop集群服务器的host文件、slaves文件

3、拷贝数据:

  • 将NameNode的整个Hadoop目录拷贝到目标机器的/usr/local路径下
  • 将/data/dfs的元数据拷贝到目标机器的/data/dfs路径下
scp -r dfs hadoop@datanode92.bi:/data/dfs/
  • 将/usr/local/apache-hive-1.2.1-bin拷贝到目标机器的/usr/local路径下

4、启动服务:

(1)检查配置文件,在目标机器上启动namenode、zkfc、journalnode服务。以下是NameNode服务启动后的块汇报日志,可以看到大量带有BlockStateChange关键字的日志,这样的日志打印没完成,就证明NameNode没有完全正常,不能对外提供服务,日志如下:

2019-03-12 16:20:43,795 INFO BlockStateChange: BLOCK* addStoredBlock: blockMap updated: 10.216.5.26:50010 is added to blk_2880883080_1896501829{blockUCState=UNDER_CONSTRUCTION, primaryNodeIndex=-1, replicas=[ReplicaUnderConstruction[[DISK]DS-2297011b-a18a-449b-b795-248b44d082eb:NORMAL:10.216.5.26:50010|FINALIZED]]} size 0
2019-03-12 16:20:43,795 INFO BlockStateChange: BLOCK* addStoredBlock: blockMap updated: 10.216.4.21:50010 is added to blk_2880883080_1896501829{blockUCState=UNDER_CONSTRUCTION, primaryNodeIndex=-1, replicas=[ReplicaUnderConstruction[[DISK]DS-2297011b-a18a-449b-b795-248b44d082eb:NORMAL:10.216.5.26:50010|FINALIZED], ReplicaUnderConstruction[[DISK]DS-e5c6c2d5-81ae-45ee-a204-f3e3313756fe:NORMAL:10.216.4.21:50010|FINALIZED]]} size 0
2019-03-12 16:20:43,795 INFO BlockStateChange: BLOCK* addStoredBlock: blockMap updated: 10.216.5.40:50010 is added to blk_2880883080_1896501829{blockUCState=UNDER_CONSTRUCTION, primaryNodeIndex=-1, replicas=[ReplicaUnderConstruction[[DISK]DS-2297011b-a18a-449b-b795-248b44d082eb:NORMAL:10.216.5.26:50010|FINALIZED], ReplicaUnderConstruction[[DISK]DS-e5c6c2d5-81ae-45ee-a204-f3e3313756fe:NORMAL:10.216.4.21:50010|FINALIZED], ReplicaUnderConstruction[[DISK]DS-0e5e6e27-8744-4e6a-8006-690f6e099676:NORMAL:10.216.5.40:50010|FINALIZED]]} size 0
2019-03-12 16:20:43,795 INFO BlockStateChange: BLOCK* addStoredBlock: blockMap updated: 10.216.2.21:50010 is added to blk_2880883081_1896501830{blockUCState=UNDER_CONSTRUCTION, primaryNodeIndex=-1, replicas=[ReplicaUnderConstruction[[DISK]DS-b4850b87-338c-45cc-b917-b6250aa70370:NORMAL:10.216.2.21:50010|FINALIZED]]} size 0
2019-03-12 16:20:43,795 INFO BlockStateChange: BLOCK* addStoredBlock: blockMap updated: 10.216.4.4:50010 is added to blk_2880883081_1896501830{blockUCState=UNDER_CONSTRUCTION, primaryNodeIndex=-1, replicas=[ReplicaUnderConstruction[[DISK]DS-b4850b87-338c-45cc-b917-b6250aa70370:NORMAL:10.216.2.21:50010|FINALIZED], ReplicaUnderConstruction[[DISK]DS-fa7fa32c-91bb-47a3-a559-2fc31f74cdec:NORMAL:10.216.4.4:50010|FINALIZED]]} size 0
2019-03-12 16:20:43,795 INFO BlockStateChange: BLOCK* addStoredBlock: blockMap updated: 10.216.5.48:50010 is added to blk_2880883081_1896501830{blockUCState=UNDER_CONSTRUCTION, primaryNodeIndex=-1, replicas=[ReplicaUnderConstruction[[DISK]DS-b4850b87-338c-45cc-b917-b6250aa70370:NORMAL:10.216.2.21:50010|FINALIZED], ReplicaUnderConstruction[[DISK]DS-fa7fa32c-91bb-47a3-a559-2fc31f74cdec:NORMAL:10.216.4.4:50010|FINALIZED], ReplicaUnderConstruction[[DISK]DS-df7f2d4a-0b76-46ee-9e30-d42921ba825a:NORMAL:10.216.5.48:50010|FINALIZED]]} size 0
2019-03-12 16:20:43,795 INFO BlockStateChange: BLOCK* addStoredBlock: blockMap updated: 10.216.4.21:50010 is added to blk_2880883082_1896501831{blockUCState=UNDER_CONSTRUCTION, primaryNodeIndex=-1, replicas=[ReplicaUnderConstruction[[DISK]DS-e5c6c2d5-81ae-45ee-a204-f3e3313756fe:NORMAL:10.216.4.21:50010|FINALIZED]]} size 0
2019-03-12 16:20:43,795 INFO BlockStateChange: BLOCK* addStoredBlock: blockMap updated: 10.216.4.19:50010 is added to blk_2880883082_1896501831{blockUCState=UNDER_CONSTRUCTION, primaryNodeIndex=-1, replicas=[ReplicaUnderConstruction[[DISK]DS-e5c6c2d5-81ae-45ee-a204-f3e3313756fe:NORMAL:10.216.4.21:50010|FINALIZED], ReplicaUnderConstruction[[DISK]DS-2c37fdd9-9d89-493c-bb0d-b915b9fd0476:NORMAL:10.216.4.19:50010|FINALIZED]]} size 0
2019-03-12 16:20:43,795 INFO BlockStateChange: BLOCK* addStoredBlock: blockMap updated: 10.216.4.41:50010 is added to blk_2880883082_1896501831{blockUCState=UNDER_CONSTRUCTION, primaryNodeIndex=-1, replicas=[ReplicaUnderConstruction[[DISK]DS-e5c6c2d5-81ae-45ee-a204-f3e3313756fe:NORMAL:10.216.4.21:50010|FINALIZED], ReplicaUnderConstruction[[DISK]DS-2c37fdd9-9d89-493c-bb0d-b915b9fd0476:NORMAL:10.216.4.19:50010|FINALIZED], ReplicaUnderConstruction[[DISK]DS-91a83f26-10a5-4456-94ec-460d5a428990:NORMAL:10.216.4.41:50010|FINALIZED]]} size 0
2019-03-12 16:20:43,796 INFO BlockStateChange: BLOCK* addStoredBlock: blockMap updated: 10.216.2.34:50010 is added to blk_2880883083_1896501832{blockUCState=UNDER_CONSTRUCTION, primaryNodeIndex=-1, replicas=[ReplicaUnderConstruction[[DISK]DS-5540b823-7606-432a-98c9-a8d84c2c3e72:NORMAL:10.216.2.34:50010|FINALIZED]]} size 0
2019-03-12 16:20:43,796 INFO BlockStateChange: BLOCK* addStoredBlock: blockMap updated: 10.216.2.8:50010 is added to blk_2880883083_1896501832{blockUCState=UNDER_CONSTRUCTION, primaryNodeIndex=-1, replicas=[ReplicaUnderConstruction[[DISK]DS-5540b823-7606-432a-98c9-a8d84c2c3e72:NORMAL:10.216.2.34:50010|FINALIZED], ReplicaUnderConstruction[[DISK]DS-110ef02a-b044-41bf-9d65-f5fdaa76b959:NORMAL:10.216.2.8:50010|FINALIZED]]} size 0
2019-03-12 16:20:43,796 INFO BlockStateChange: BLOCK* addStoredBlock: blockMap updated: 10.216.4.8:50010 is added to blk_2880883083_1896501832{blockUCState=UNDER_CONSTRUCTION, prima849 INFO BlockStateChange: BLOCK* addStoredBlock: blockMap updated: 10.216.5.14:50010 is added to blk_2880883130_1896501879{blockUCState=UNDER_CONSTRUCTION, primaryNodeIndex=-1, replicas=[ReplicaUnderConstruction[[DISK]DS-e80ba307-0231-4811-92af-33fac386ea09:NORMAL:10.216.5.14:50010|FINALIZED]]} size 0
2019-03-12 16:20:43,863 INFO org.apache.hadoop.hdfs.server.namenode.FSEditLogLoader: replaying edit log: 132651/150565 transactions completed. (88%)
2019-03-12 16:20:43,879 INFO BlockStateChange: BLOCK* addStoredBlock: blockMap updated: 10.216.4.38:50010 is added to blk_2880883136_1896501885{blockUCState=UNDER_CONSTRUCTION, primaryNodeIndex=-1, replicas=[ReplicaUnderConstruction[[DISK]DS-9dec2025-66f8-4b4a-a197-e56751b284d5:NORMAL:10.216.4.38:50010|FINALIZED]]} size 0
2019-03-12 16:20:43,893 INFO BlockStateChange: BLOCK* addStoredBlock: blockMap updated: 10.216.5.5:50010 is added to blk_2880883140_1896501889{blockUCState=UNDER_CONSTRUCTION, primaryNodeIndex=-1, replicas=[ReplicaUnderConstruction[[DISK]DS-45cbbbda-e17f-4835-bf47-7487c3b3a456:NORMAL:10.216.5.5:50010|FINALIZED]]} size 0
2019-03-12 16:20:43,893 INFO BlockStateChange: BLOCK* addStoredBlock: blockMap updated: 10.216.5.16:50010 is added to blk_2880883140_1896501889{blockUCState=UNDER_CONSTRUCTION, primaryNodeIndex=-1, replicas=[ReplicaUnderConstruction[[DISK]DS-45cbbbda-e17f-4835-bf47-7487c3b3a456:NORMAL:10.216.5.5:50010|FINALIZED], ReplicaUnderConstruction[[DISK]DS-32c95765-9f02-4863-8ba2-f1fecf2e0872:NORMAL:10.216.5.16:50010|FINALIZED]]} size 0
2019-03-12 16:20:43,893 INFO BlockStateChange: BLOCK* addStoredBlock: blockMap updated: 10.216.2.20:50010 is added to blk_2880883140_1896501889{blockUCState=UNDER_CONSTRUCTION, primaryNodeIndex=-1, replicas=[ReplicaUnderConstruction[[DISK]DS-45cbbbda-e17f-4835-bf47-7487c3b3a456:NORMAL:10.216.5.5:50010|FINALIZED], ReplicaUnderConstruction[[DISK]DS-32c95765-9f02-4863-8ba2-f1fecf2e0872:NORMAL:10.216.5.16:50010|FINALIZED], ReplicaUnderConstruction[[DISK]DS-32001683-8bf1-4ae1-baf4-0efd7d117c94:NORMAL:10.216.2.20:50010|FINALIZED]]} size 0
2019-03-12 16:20:43,904 INFO BlockStateChange: BLOCK* addStoredBlock: blockMap updated: 10.216.4.38:50010 is added to blk_2880883143_1896501892{blockUCState=UNDER_CONSTRUCTION, primaryNodeIndex=-1, replicas=[ReplicaUnderConstruction[[DISK]DS-9dec2025-66f8-4b4a-a197-e56751b284d5:NORMAL:10.216.4.38:50010|FINALIZED]]} size 0
2019-03-12 16:20:43,905 INFO BlockStateChange: BLOCK* addStoredBlock: blockMap updated: 10.216.2.23:50010 is added to blk_2880883144_1896501893{blockUCState=UNDER_CONSTRUCTION, primaryNodeIndex=-1, replicas=[ReplicaUnderConstruction[[DISK]DS-68b7e245-3c92-4f81-95fe-dcb87e2453a8:NORMAL:10.216.2.23:50010|FINALIZED]]} size 0
2019-03-12 16:20:43,905 INFO BlockStateChange: BLOCK* addStoredBlock: blockMap updated: 10.216.5.22:50010 is added to blk_2880883144_1896501893{blockUCState=UNDER_CONSTRUCTION, primaryNodeIndex=-1, replicas=[ReplicaUnderConstruction[[DISK]DS-68b7e245-3c92-4f81-95fe-dcb87e2453a8:NORMAL:10.216.2.23:50010|FINALIZED], ReplicaUnderConstruction[[DISK]DS-6b7b44fb-539f-4a1c-a867-1a0d7fe77972:NORMAL:10.216.5.22:50010|FINALIZED]]} size 0
2019-03-12 16:20:43,912 INFO BlockStateChange: BLOCK* addStoredBlock: blockMap updated: 10.216.5.14:50010 is added to blk_2880883145_1896501894{blockUCState=UNDER_CONSTRUCTION, primaryNodeIndex=-1, replicas=[ReplicaUnderConstruction[[DISK]DS-e80ba307-0231-4811-92af-33fac386ea09:NORMAL:10.216.5.14:50010|FINALIZED]]} size 0
2019-03-12 16:20:43,912 INFO BlockStateChange: BLOCK* addStoredBlock: blockMap updated: 10.216.2.22:50010 is added to blk_2880883145_1896501894{blockUCState=UNDER_CONSTRUCTION, primaryNodeIndex=-1, replicas=[ReplicaUnderConstruction[[DISK]DS-e80ba307-0231-4811-92af-33fac386ea09:NORMAL:10.216.5.14:50010|FINALIZED], ReplicaUnderConstruction[[DISK]DS-7f939532-7a64-4700-815d-65afeab75c63:NORMAL:10.216.2.22:50010|FINALIZED]]} size 0
2019-03-12 16:20:43,917 INFO BlockStateChange: BLOCK* addStoredBlock: blockMap updated: 10.216.2.22:50010 is added to blk_2880883147_1896501896{blockUCState=UNDER_CONSTRUCTION, primaryNodeIndex=-1, replicas=[ReplicaUnderConstruction[[DISK]DS-7f939532-7a64-4700-815d-65afeab75c63:NORMAL:10.216.2.22:50010|FINALIZED]]} size 0
2019-03-12 16:20:43,919 INFO BlockStateChange: BLOCK* addStoredBlock: blockMap updated: 10.216.5.14:50010 is added to blk_2880883151_1896501900{blockUCState=UNDER_CONSTRUCTION, primaryNodeIndex=-1, replicas=[ReplicaUnderConstruction[[DISK]DS-e80ba307-0231-4811-92af-33fac386ea09:NORMAL:10.216.5.14:50010|RBW]]} size 0
2019-03-12 16:20:43,919 INFO BlockStateChange: BLOCK* addStoredBlock: blockMap updated: 10.216.5.3:50010 is added to blk_2880883152_1896501901{blockUCState=UNDER_CONSTRUCTION, primaryNodeIndex=-1, replicas=[ReplicaUnderConstruction[[DISK]DS-bffbb1b4-09d5-486c-8493-13953032e792:NORMAL:10.216.5.3:50010|FINALIZED]]} size 0
2019-03-12 16:20:43,924 INFO BlockStateChange: BLOCK* addStoredBlock: blockMap updated: 10.216.5.5:50010 is added to blk_2880883158_1896501907{blockUCState=UNDER_CONSTRUCTION, primaryNodeIndex=-1, replicas=[ReplicaUnderConstruction[[DISK]DS-45cbbbda-e17f-4835-bf47-7487c3b3a456:NORMAL:10.216.5.5:50010|FINALIZED]]} size 0
2019-03-12 16:20:43,936 INFO BlockStateChange: BLOCK* addStoredBlock: blockMap updated: 10.216.5.14:50010 is added to blk_2880883160_1896501909{blockUCState=UNDER_CONSTRUCTION, primaryNodeIndex=-1, replicas=[ReplicaUnderConstruction[[DISK]DS-e80ba307-0231-4811-92af-33fac386ea09:NORMAL:10.216.5.14:50010|FINALIZED]]} size 0
2019-03-12 16:20:43,947 INFO BlockStateChange: BLOCK* addStoredBlock: blockMap updated: 10.216.5.3:50010 is added to blk_2880883164_1896501913{blockUCState=UNDER_CONSTRUCTION, primaryNodeIndex=-1, replicas=[ReplicaUnderConstruction[[DISK]DS-bffbb1b4-09d5-486c-8493-13953032e792:NORMAL:10.216.5.3:50010|FINALIZED]]} size 0
2019-03-12 16:20:43,957 INFO BlockStateChange: BLOCK* addStoredBlock: blockMap updated: 10.216.2.20:50010 is added to blk_2880883165_1896501914{blockUCState=UNDER_CONSTRUCTION, primaryNodeIndex=-1, replicas=[ReplicaUnderConstruction[[DISK]DS-32001683-8bf1-4ae1-baf4-0efd7d117c94:NORMAL:10.216.2.20:50010|FINALIZED]]} size 0
2019-03-12 16:20:43,957 INFO BlockStateChange: BLOCK* addStoredBlock: blockMap updated: 10.216.2.21:50010 is added to blk_2880883165_1896501914{blockUCState=UNDER_CONSTRUCTION, primaryNodeIndex=-1, replicas=[ReplicaUnderConstruction[[DISK]DS-32001683-8bf1-4ae1-baf4-0efd7d117c94:NORMAL:10.216.2.20:50010|FINALIZED], ReplicaUnderConstruction[[DISK]DS-b4850b87-338c-45cc-b917-b6250aa70370:NORMAL:10.216.2.21:50010|FINALIZED]]} size 0
2019-03-12 16:20:43,957 INFO BlockStateChange: BLOCK* addStoredBlock: blockMap updated: 10.216.4.48:50010 is added to blk_2880883166_1896501915{blockUCState=UNDER_CONSTRUCTION, primaryNodeIndex=-1, replicas=[ReplicaUnderConstruction[[DISK]DS-cc0c9e65-7223-4a96-9066-544d069b4f7c:NORMAL:10.216.4.48:50010|FINALIZED]]} size 0
2019-03-12 16:20:43,957 INFO BlockStateChange: BLOCK* addStoredBlock: blockMap updated: 10.216.2.23:50010 is added to blk_2880883167_1896501916{blockUCState=UNDER_CONSTRUCTION, primaryNodeIndex=-1, replicas=[ReplicaUnderConstruction[[DISK]DS-68b7e245-3c92-4f81-95fe-dcb87e2453a8:NORMAL:10.216.2.23:50010|FINALIZED]]} size 0
2019-03-12 16:20:43,960 INFO BlockStateChange: BLOCK* addStoredBlock: blockMap updated: 10.216.4.38:50010 is added to blk_2880883169_1896501918{blockUCState=UNDER_CONSTRUCTION, primaryNodeIndex=-1, replicas=[ReplicaUnderConstruction[[DISK]DS-9dec2025-66f8-4b4a-a197-e56751b284d5:NORMAL:10.216.4.38:50010|FINALIZED]]} size 0
2019-03-12 16:20:43,960 INFO BlockStateChange: BLOCK* addStoredBlock: blockMap updated: 10.216.2.39:50010 is added to blk_2880883171_1896501920{blockUCState=UNDER_CONSTRUCTION, primaryNodeIndex=-1, replicas=[ReplicaUnderConstruction[[DISK]DS-645de8ff-8245-4bc8-b21b-0a1f05190d90:NORMAL:10.216.2.39:50010|FINALIZED]]} size 0
2019-03-12 16:20:43,960 INFO BlockStateChange: BLOCK* addStoredBlock: blockMap updated: 10.216.2.9:50010 is added to blk_2880883179_1896501928{blockUCState=UNDER_CONSTRUCTION, primaryNodeIndex=-1, replicas=[ReplicaUnderConstruction[[DISK]DS-9056dc2d-4567-4539-991b-f0c24bcf190d:NORMAL:10.216.2.9:50010|FINALIZED]]} size 0

也可以通过HDFS的Web UI的startup界面看到NameNode加载元数据的进度,当startup页面显示100%时,表明NameNode加载元数据完成:

(2)启动Hive服务:

#启动hiveserver2
nohup hive --service hiveserver2 &
#启动metastore
nohup hive --service metastore &

5、启动resourcemanager

6、去掉namenode01里的exclude配置

三、DataNode上线

1、通知运维修改服务器主机名称,并更新host:

namenode01.bi(old) -> datanode19.bi
namenode02.bi -> datanode20.bi

2、在/usr/local/hadoop-2.6.3/etc/hadoop/dfs.include文件中添加新节点名称:

datanode19.bi
datanode20.bi

3、在hdfs-site.xml文件中添加属性:

<property>
    <name>dfs.hosts</name>
    <value>/usr/local/hadoop-2.6.3/etc/hadoop/dfs.include</value>
</property>

4、在NN上刷新节点,不需要重启NN服务:

hdfs dfsadmin -refreshNodes

5、在slaves文件中添加新节点主机名,并同步更新到所有集群服务器:

datanode19.bi
datanode20.bi

6、单独在新节点的机器上启动新节点上的DataNode:

/usr/local/hadoop-2.6.3/sbin/hadoop-daemon.sh start datanode

四、问题记录及参考资料

NameNode热迁移方案

如何在不影响hadoop集群正常运行的情况下迁移主控节点[namenode]

Jps介绍以及解决jps无法查看某个已经启动的java进程问题

PIN限幅二极管在接收机中的应用 本文介绍了接收机保护限幅器的工作原理及应用,重点阐述了PIN二极管在雷达收发机中的关键作用。文章指出,限幅器能有效保护接收机灵敏元件免受大功率信号损害,主要通过反射而非耗散功率来实现保护功能。文章详细分析了PIN二极管的层结构特性及其阻抗变化机制,解释了多级限幅器的设计原理(包括清理级和粗限幅器的配合使用),并介绍了通过添加检波二极管降低阈值水平的方法。最后指出,实际应用中限幅器通常采用3级或更少的设计。 阅读详情

相关推荐

PLC编程标准之争:IEC61131与IEC61499核心区别与选型指南

在工业自动化领域,PLC编程长期依赖IEC61131标准,它定义了梯形图、结构化文本等语言,通过周期扫描机制保证确定性执行。然而,随着工业4.0和分布式控制场景的兴起,IEC61499以事件驱动模型打破传统范式,让功能块能跨设备协同,实现更灵活的柔性产线和模块化系统。理解两者在程序结构、数据交互、部署方式和实时性上的差异,是选型与工程落地的关键。本文从基础概念出发,剖析执行模型与架构演进,结合一线调试经验,帮助工程师在传统PLC与下一代标准之间做出理性决策。

weixin_27014595的博客 267

hadoop hdfs datanode 数据迁移

定位思路        先将集群停止,然后准备好新的存储目录,再将数据复制到新的目录中,重启集群。 处理步骤        假设HDFS的默认安装目录为“/dfs/dn”,需要移动目录到“/home/dfs/dn”中。        1.登录cdh manager,停止hdfs集群        2.在home目录下创建 dfs/dn 目录        cd /home      ...

槿之 4205

ESP32 CAM使用教程(入门级)

串口被占用,可以关闭其他使用到串口的界面;先将手机也连上wifi,然后使用手机浏览器打开这个IP地址,注意手机连接的wifi需要和开发板的wifi一致,也就是程序里自己修改的那个wifi,否则无法打开IP地址;将开发板连接到电脑,点击点击工具→端口,然后选择自己实际接的COM口,不清楚COM口的可以打开电脑设备管理器查看一下,插拔设备看看哪个COM口会刷新就是哪个COM口;安装好esp32库之后,点击工具→开发板→esp32→AI Thinker ESP32-CAM,型号要仔细找找,不要选错了;

qq_34426854的博客 2万+

如何在不影响hadoop集群正常运行的情况下迁移主控节点[namenode]

目前大部分使用的hadoop集群都是2.x版本的了,这个版本比 hadoop 1.0 添加了namenode 的HA ,解决了namenode单点的问题。但是还是会有紧急情况发生 【比如 两个互为主备的namenode 节点中的某一个节点硬件损坏了】本文描述的过程就是如何把一个datanode节点变成namenode节点在不关掉集群的情况下。【eplacing a name node in an e

leone911的博客 2149

CANopen PDO 配置實戰:3步完成0x1800-0x1A00物件字典映射與事件觸發

本文详细解析CANopen PDO配置实战,通过3个关键步骤完成0x1800-0x1A00对象字典映射与事件触发设置。重点介绍COB-ID位域解析、映射参数配置及事件触发优化,帮助工程师实现工业自动化设备间毫秒级实时数据交换,提升系统通信效率。

weixin_33709609的博客 379

【Arduino 101】五分钟搞懂PID控制算法

【Arduino 101】五分钟搞懂PID控制算法物料清单尺寸接线 文章目录物料清单尺寸接线 物料清单 Arduino Uno x 1 超声波模块(HC-SR04)x 1 舵机(Tower Pro MG996R)x 1 舵机供电: 5V 稳压管(LM7805) x 1 , 滤波电容 (0.33uF, 0.1uF) x 2, 9V 电池 x 1 滑轨:泡沫板 支架:乐高 滚动物体:胶带(Up试过网球,但是测距模块的表现不理想) 尺寸 接线 ...

机器人工坊 1万+

Hadoop- Namenode经常挂掉 IPC's epoch 9 is less than the last promised epoch 10

如题出现Namenode经常挂掉 IPC's epoch 9 is less than the last promised epoch 10, 2019-01-03 05:36:14,774 INFO org.apache.hadoop.hdfs.StateChange: BLOCK* allocate blk_1073741949_1131{UCState=UNDER_CONS...

weixin_34242819的博客 929

25 - GRACE Mascon数据缺失月份数据插值

本篇基于文章的相关内容和文章公开的奇异谱分析(SSA)插值算法程序包,对grace Mascon数据种缺失的月份进行 插值 ,总结了使用程序包的相关过程,可以将该程序应用到其他数据处理插值计算中。

weixin_43339605的博客 1842

IT-hadoop--杀死hadoop进程后,重启自动修复

2016-09-05 18:03:38,890 INFO org.apache.hadoop.hdfs.server.namenode.FSImage: Start loading edits file /home/hadoop/dfs/name/current/edits_0000000000000379085-0000000000002392935 2016-09-05 18:03:38,89

zhuimuzhuimu的博客 3163

MATLAB基础应用精讲-【强化学习】Actor - Critic 算法(附python代码实现)

这种架构结合了策略梯度方法(Policy - Gradient Methods)和价值函数估计方法(Value Function Estimation Methods)的优点。在强化学习中,智能体(Agent)需要通过与环境(Environment)的交互来学习最优的行为策略,以获得最大的累积奖励(Cumulative Reward)。

qq_36130719的博客 361

FLUENT Meshing Watertight Geometry工作流入门 - 9 生成体网格

总结一下我们学到的东西。讨论体积网格的重要性,并了解生成体积网格的不同方法。还了解体积网格质量的重要性,并学习如何改进它。

B_etter_Man的博客 1万+

Hadoop运维记录系列(十六)

应了一个国内某电信运营商集群恢复的事,集群故障很严重,做了HA的集群Namenode挂掉了。具体过程不详,但是从受害者的只言片语中大概回顾一下历史的片段。Active的namenode元数据硬盘满了,满了,满了...上来第一句话就如雷贯耳。运维人员发现硬盘满了以后执行了对active namenode的元数据日志执行了 echo "" &gt; edit_xxxx-xxxx...第二句话如五雷轰顶...

weixin_34202952的博客 269

推荐系统[九]项目技术细节讲解z2:搜索Query理解[Term Weight、Query 改写、同义词扩写]和语义召回技术

在 pooling 方法上,我们也尝试过不同层 pooling,或者在多层上增加 attention 聚合 BERT 多层结果,效果和最后一层所有 token 做 average pooling 相当。损失函数方面,在排序阶段使用pairwise比 pointwise 损失函数的效果会更好。

丨汀、的博客 1109

Hadoop云上部署全流程:从云主机规划到NameNode高可用

大数据生态中,Hadoop作为分布式存储与计算的基础框架,其部署模式正从物理机房快速转向云上。云主机弹性扩容、按需付费的特性,使集群搭建周期从数周缩短至数小时,同时降低了学习与运维门槛。本文面向课程设计、中小规模生产及集群迁移场景,系统梳理云上部署的选型、资源规划、版本搭配等要点,并以多节点手工集群为例,逐步演示从基础环境初始化、核心配置文件修改到整合ZooKeeper实现NameNode高可用(HA)的完整过程。同时,针对HDFS扩容、数据均衡、备份监控等日常运维操作提供实用建议,并整理高频故障排查速查表

weixin_29050271的博客 208

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

YARN架构本质:分布式操作系统内核深度解析

YARN并非传统意义的资源调度器,而是面向大数据工作负载的分布式操作系统内核——它抽象并管控内存、CPU等底层资源,提供进程级隔离(Container)、用户态自治运行环境(ApplicationMaster)及跨节点状态协同机制。其核心原理源于操作系统内核设计思想,通过RM/NM/AM三体解耦实现资源管理与任务逻辑分离,技术价值在于支撑Spark/Flink/TensorFlow等多引擎共享同一资源池,并保障细粒度资源分配、数据本地性与强隔离性。典型应用场景涵盖金融批处理、实时风控与AI训练等PB级混合负

weixin_30654419的博客 387

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Hadoop3:NameNode和DataNode多目录配置(扩充磁盘的技术支持)

Hadoop

Brave_heart4pzj的博客 1380

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

cdh5 hdfs中转移namenode从一台机器到另一台机器

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33989058的博客 1709

hdfs集群数据迁移/DataNode节点维护/集群重命名--小结

hdfs 数据迁移 数据节点维护 集群重命名操作

lixia0417mul2的博客 598

hadoop问题排查

因为太久没用了,执行。

woshidalao12138的博客 1430

【转】最近搞Hadoop集群迁移踩的坑杂记

http://ju.outofmemory.cn/entry/237491   Overview 最近一段时间都在搞集群迁移。最早公司的hadoop数据集群实在阿里云上的,机器不多,大概4台的样子,据说每个月要花7000多。从成本的角度,公司采购了4台2手服务器(E5-2420 v2 * 2+96G内存)在办公室自己搭数据集群。虽然说机房条件艰苦,没空调就算了,还有暖气呢,但是机器还是挺不错...

weixin_34249678的博客 305

hadoop集群迁移

hadoop集群迁移

luo981695830的博客 1554

MySQL将数据库从一台服务器备份到另一台服务器

我们在做项目的时候可能会遇到这种需求要将之前的服务器上的数据备份到一个新的数据库。我就遇到这种情况,如果将远程服务器的数据库备份到本地然后又从本地上传到另一台服务器,这样显然是不行的,因为一个项目的数据库是很大的,这样要弄到猴年马月。有一个简单的方法就是使用scp命令直接将data目录复制到另一台。 scp命令的实际应用概述: (1) 复制文件: 命令格式: scp local_file remo...

Hi_alan的博客 8605

Hadoop数据传输:如何将数据移入和移出Hadoop?

企业在项目中完全使用Hadoop之前,数据移动是必须解决的事情之一。如何将数千台主机日志数据放入Hadoop?从关系型或者No/NewSQL系统以及Hadoop中获取数据的最有效方法是什么?如何将Hadoop中生成的Luce...

cuizhu6079的博客 1932

从Hive的日志文件超大引出磁盘满问题并追踪出NameNode 安全模式的问题与处理

目录 发现NameNode安全模式问题 初步判断是磁盘满导致安全模式 NameNode安全模式解释 补充解释 尝试重启DataNode 重启NameNode 总结 发现NameNode安全模式问题 一次偶然的机会,准备看下Hive的版本,发现无法执行hive脚本,发现Hive命令无法正常进入hive命令行,报错信息如下: ls: cannot access /usr...

JacksonKing的专栏 2064

Hadoop系列(一)——身体是革命的本钱 HDFS体系结构(NameNode、DataNode)详解

hadoop文件读取实例中yarn的作用是什么样的? 要想理解hadoop文件读取的过程,除了理解YARN还需要提前了解一下hadoop 中NameNode和DataNode的原理和功能。 NameNode NameNode在内存中保存着整个文件系统(hdfs)的名字空间(namespace)和文件数据块的地址映射(Blockmap)。整个HDFS可存储的文件数受限于NameNode的内存大小。 它的功能如下: NameNode负责文件元数据信息的操作以及处理客户端的请求 NameNode管理HDFS文件

BigData_Hubert的博客 8220

Hadoop迁移Namenode

个人小站,正在持续整理中,欢迎访问:http://shitouer.cn 小站博文地址:Hadoop迁移Namenode 一.前提及方案 操作版本:社区版 Hadoop-1.0.3,其他版本不保证 之前HBase没有考虑压缩,经过一段时间的研究和测试,打算在HBase中全面采用snappy压缩库。但是在节点上配置snappy时,发现其要求glibc版本在2.5+,而当前系统Cen...

depe16540458的博客 257
上一篇: kafka-connect-hive sink插件实现要点小结
下一篇: ZooKeeper节点数据量限制引起的Hadoop YARN ResourceManager崩溃原因分析
Viking_bird
博客等级 码龄11年 92粉丝 183原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值