(必看圖文)Hadoop集群安裝及MapReduce應用(手把手詳解版)

前言

? ? ? ?隨著大數據時代的到來,處理和分析海量數據已成為企業和科研機構不可或缺的能力。Hadoop,作為開源的分布式計算平臺,因其強大的數據處理能力和良好的可擴展性,成為大數據處理領域的佼佼者。本圖文教程旨在幫助讀者理解Hadoop集群的安裝過程,并通過MapReduce應用實例,深入體驗Hadoop在大數據處理中的強大功能。

? ? ? ?在正式進入Hadoop集群安裝之前,我們將簡要介紹Hadoop的核心組件——HDFS(Hadoop Distributed File System)和MapReduce。HDFS提供了分布式存儲能力,使得數據可以存儲在集群中的多個節點上,從而實現高容錯性和高吞吐量。而MapReduce則是一種編程模型,用于處理大規模數據集,其獨特的“Map”和“Reduce”兩個階段使得數據處理任務可以并行執行,大大提高了處理效率。

? ? ? ?通過本教程的學習,讀者將能夠掌握Hadoop集群的搭建方法,理解MapReduce編程模型的基本原理,并通過實際案例體驗Hadoop在大數據處理中的強大能力。

安裝OpenEuler系統

選擇Installer oenEuler? 20.03-LTS

選擇默認磁盤分區

配置網絡

選擇ipv4 setting

填寫IP地址(手動配置地址必須遵守Vmware WorkStation的基本配置)

查看地址配置信息

開始安裝

配置root賬戶密碼

置root賬戶密碼

通過此部署依次部署4臺,并通過ssh登錄

為每一臺配置yum源地址

cd /etc/yum.repos.d/

vi openEulerOS.repo

配置華為Yum源地址。

[openEuler-source]name=openEuler-sourcebaseurl=https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/source/enabled=1gpgcheck=1gpgkey=https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/source/RPM-GPG-KEY-openEuler[openEuler-os]name=openEuler-osbaseurl=https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/OS/x86_64/enabled=1gpgcheck=1gpgkey=https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/OS/x86_64/RPM-GPG-KEY-openEuler[openEuler-everything]name=openEuler-everythingbaseurl=https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/everything/x86_64/enabled=1gpgcheck=1gpgkey=https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/everything/x86_64/RPM-GPG-KEY-openEuler[openEuler-EPOL]name=openEuler-epolbaseurl=https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/EPOL/x86_64/enabled=1gpgcheck=0

清楚現有并生成新的緩存

安裝實驗所需工具 vim tar (4臺都安裝)

yum install -y vim? tar

基礎配置

此部分配置Hadoop各節點使其符合軟件安裝的要求,內容比較多,除了教程中給出的步驟,如果是物理服務器等需要另外設置時間同步,因為華為云已經同步了時間,所以此處不加上相應的配置過程,如感興趣,請自行查資料完成。下面操作以node01為例,進行相應的配置

1.1.1.1 修改主機名

注意:如果主機名不是對應的node01、node2、node3、node4,則需要分別將四個節點的主機名進行修改,四臺均需要修改,此處以node01為例子。如果你在購買的時候已經設置好主機名,則不需要修改,可忽略此步驟。

方式一:使用hostname命令,直接命名主機名(但是此種設置重啟后會變回原來的,可不操作):

>? hostname node01>? bash

方式二:修改/etc/hostname文件(修改好后重啟,發生修改已生效):

>? vim /etc/hostname

# 修改完畢后,效果如下:

>? cat /etc/hostnamenode01>? reboot

方式三(統一采用這種):此外,還有一種更加簡便的辦法,直接執行后就可以了,不需要重啟:

>? hostnamectl set-hostname node01>? bash

以下是修改結果:

步驟 1??修改hosts配置文件

使用命令vim /etc/hosts,為node01-4四個節點增加內網IP與節點主機名的映射,確保各節點之間可以使用主機名作為通信的方式。

>? vim /etc/hosts# 需刪除自己的主機名映射到127.0.0.1的映射,如node01為:127.0.0.1?????? node01?? node01此行務必刪除!# 加入以下內容如下:(注意IP地址必須是自己的IP地址)192.168.28.31?? node01192.168.28.32?? node02192.168.28.33?? node03192.168.28.34?? node04

呈現結果如下:

1.1.1.2 關閉防火墻

執行下面命令查看防火墻狀態:

>? systemctl status firewalld

如果發現默認是已經禁用的,所以不需要關閉了。如果是開啟的,則需要在node01-4四個節點執行如下命令關閉防火墻:

>? systemctl stop firewalld>? systemctl disable firewalld

4個節點均執行此命令:

1.1.1.3 配置ssh互信

????????? 步驟 1????? 生成id_rsa.pub 文件

各節點執行 ssh-keygen -t rsa 命令后,連續回車三次后生成/root/.ssh/id_rsa.pub 文件

?步驟 1????? 匯總id_rsa.pub

各個節點執行cat /root/.ssh/id_rsa.pub命令,我們需要將密鑰進行匯總,思路是先將node2、node3、node4的密鑰拷貝到node01,在node01進行匯總,然后將匯總好的文件分發到node2、node3、node4,這樣的話,每個節點就有了彼此的密鑰,達到互相免密碼登錄的效果。

將node2的密鑰拷貝到node01(在node2執行):

> scp ~/.ssh/id_rsa.pub root@node01:~/.ssh/id2

執行的時候可能輸入“yes”,并且需要輸入node01的服務器密碼。

將node3的密鑰拷貝到node01(在node3執行):

> scp ~/.ssh/id_rsa.pub root@node01:~/.ssh/id3

執行的時候可能輸入“yes”,并且需要輸入node01的服務器密碼。

將node4的密鑰拷貝到node01(在node4執行):

> scp ~/.ssh/id_rsa.pub root@node01:~/.ssh/id4

執行的時候可能輸入“yes”,并且需要輸入node01的服務器密碼。

查看一下是否拷貝完成(在node01執行):

> ll ~/.ssh

發現node2、node3、node4的密鑰都拷貝到node01上了:

繼續進行匯總:

> cd ~/.ssh> cat id2 id3 id4 >> authorized_keys此外,還要將node01的密鑰也放進去:> cat id_rsa.pub >> authorized_keys查看匯總后的文件authorized_keys,發現已經有四臺機器的密鑰了:> cat authorized_keys

最后,需要將此文件分發到node02、node03、node04:

> scp authorized_keys root@node02:~/.ssh/> scp authorized_keys root@node03:~/.ssh/> scp authorized_keys root@node04:~/.ssh/

步驟 1????? 驗證測試

每個節點分別 ssh node01~node4,選擇 yes 后,確保能夠互相免密碼登錄。

兩兩相互測試

????????? 步驟 1????? 安裝JDK,在 node01~node04

1. 下載jdk8,或者通過上傳本地安裝文件

> wget https://mirrors.huaweicloud.com/java/jdk/8u192-b12/jdk-8u192-linux-x64.tar.gz

(此次演示node01,02-04都需要執行)

2. 解壓jdk

> mkdir –p /usr/lib/jvm/

> tar -zxvf jdk-8u192-linux-x64.tar.gz -C /usr/lib/jvm/

> mv? /usr/lib/jvm/jdk1.8.0_192?? /usr/lib/jvm/java

3. 配置環境變量

執行指令vim /etc/profile,編輯環境變量文件,在文件末尾添加下面內容

>? vim /etc/profileexport JAVA_HOME=/usr/lib/jvm/javaexport PATH=$PATH:$JAVA_HOME/binexport CLASSPATH=.:%JAVA_HOME%/lib/dt.jar:%JAVA_HOME%/lib/tools.jar

示例子如下:

使環境變量生效

> source /etc/profile

?5. 驗證java環境

> java –version

出現以下信息表示jdk安裝成功

java version "1.8.0_192"

Java(TM) SE Runtime Environment (build 1.8.0_192-b12)

Java HotSpot(TM) 64-Bit Server VM (build 25.192-b12, mixed mode)

上面驗證通過,下面的步驟可以不用執行

6. 環境變量拷至bashrc文件,使每次打開shell都生效,編輯/etc/bashrc,在文件末尾添加下面內容 (可選)

>vim /etc/bashrc

export JAVA_HOME=/usr/lib/jvm/java

export PATH=$PATH:$JAVA_HOME/bin

export CLASSPATH=.:%JAVA_HOME%/lib/dt.jar:%JAVA_HOME%/lib/tools.jar

1.1.1.4 創建必要的目錄

> mkdir -p /home/modules/data/buf/

> mkdir -p /home/test_tools/

> mkdir -p /home/nm/localdir

注意:四臺服務器都需要操作。

1.2.1 下載軟件包

????????? 步驟 1????? 獲取Hadoop軟件包

node01找到下載好的Hadoop軟件包,放到home目錄,或者從本地上傳安裝文件

> wget https://archive.apache.org/dist/hadoop/common/hadoop-2.8.3/hadoop-2.8.3.tar.gz

1.2.1 搭建Hadoop集群

1.2.1.1 查看解壓目錄

在node01上準備hadoop組件

> tar -zxvf hadoop-2.8.3.tar.gz -C /home/modules

> ls /home/modules/? | grep hadoop

hadoop-2.8.3

1.2.1.2 修改配置文件

????????? 步驟 1????? 配置hadoop-env.sh

在node010上執行命令:

> vim /home/modules/hadoop-2.8.3/etc/hadoop/hadoop-env.sh

修改JAVA_HOME路徑為ECS已經默認裝好了JDK路徑

export

=/usr/lib/jvm/java

步驟 1????? 預配置core-site.xml

在node01上執行命令+

> vim /home/modules/hadoop-2.8.3/etc/hadoop/core-site.xml

在<configuration>與</configuration>之間填入以下內容,此為預配置,后期還要再修改,注意涉及到的主機名如果不同需要根據具體情況修改:

<property><name>fs.defaultFS</name><value>hdfs://node01:8020</value></property><property><name>hadoop.tmp.dir</name><value>/home/modules/hadoop-2.8.3/tmp</value></property><property><name>fs.obs.buffer.dir</name><value>/home/modules/data/buf</value></property><property><name>fs.obs.readahead.inputstream.enabled</name><value>true</value></property><property><name>fs.obs.buffer.max.range</name><value>6291456</value></property><property><name>fs.obs.buffer.part.size</name><value>2097152</value></property><property><name>fs.obs.threads.read.core</name><value>500</value></property><property><name>fs.obs.threads.read.max</name><value>1000</value></property><property><name>fs.obs.write.buffer.size</name><value>8192</value></property><property><name>fs.obs.read.buffer.size</name><value>8192</value></property><property><name>fs.obs.connection.maximum</name><value>1000</value></property><property><name>fs.obs.impl</name><value>org.apache.hadoop.fs.obs.OBSFileSystem</value></property><property><name>fs.obs.connection.ssl.enabled</name><value>false</value></property><property><name>fs.obs.fast.upload</name><value>true</value></property><property><name>fs.obs.socket.send.buffer</name><value>65536</value></property><property><name>fs.obs.socket.recv.buffer</name><value>65536</value></property><property><name>fs.obs.max.total.tasks</name><value>20</value></property><property><name>fs.obs.threads.max</name><value>20</value></property>

效果如下:

1.2.1.3 配置hdfs-site.xml

在node01上執行命令

> vim /home/modules/hadoop-2.8.3/etc/hadoop/hdfs-site.xml在<configuration>與</configuration>之間內容替換如下:<property><name>dfs.replication</name><value>3</value></property><property><name>dfs.namenode.secondary.http-address</name><value>node01:50090</value></property><property><name>dfs.namenode.secondary.https-address</name><value>node01:50091</value></property>

1.2.1.4 配置yarn-site.xml

在node01上執行命令

> vim /home/modules/hadoop-2.8.3/etc/hadoop/yarn-site.xml

在<configuration>與</configuration>之間內容替換如下:

<property><name>yarn.resourcemanager.hostname</name><value>node01</value><description>表示ResourceManager安裝的主機</description></property><property><name>yarn.resourcemanager.address</name><value>node01:8032</value><description>表示ResourceManager監聽的端口</description></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value><description>為map reduce應用打開shuffle 服務</description></property><property><name>yarn.nodemanager.local-dirs</name><value>/home/nm/localdir</value><description>表示nodeManager中間數據存放的地方</description></property><property><name>yarn.nodemanager.resource.memory-mb</name><value>3072</value><description>表示這個NodeManager管理的內存大小</description></property><property><name>yarn.nodemanager.resource.cpu-vcores</name><value>2</value><description>表示這個NodeManager管理的cpu個數</description></property><property><name>yarn.nodemanager.pmem-check-enabled</name><value>false</value><description>不檢查每個任務的物理內存量</description></property><property><name>yarn.nodemanager.vmem-check-enabled</name><value>false</value><description>不檢查每個任務的虛擬內存量</description></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value><description>為map reduce應用打開shuffle?服務</description></property>

1.2.1.5 配置mapred-site.xml

在node01上執行命令:

> cp /home/modules/hadoop-2.8.3/etc/hadoop/mapred-site.xml.template /home/modules/hadoop-2.8.3/etc/hadoop/mapred-site.xml

然后編輯復制出來的配置文件:

? vim /home/modules/hadoop-2.8.3/etc/hadoop/mapred-site.xml

在<configuration>與</configuration>之間內容替換如下:

<property><name>mapreduce.framework.name</name><value>yarn</value></property><property><name>mapreduce.jobhistory.address</name><value>node1:10020</value></property><property><name>mapreduce.jobhistory.webapp.address</name><value>node1:19888</value></property><property><name>mapred.task.timeout</name><value>1800000</value></property>

1.2.1.6 配置slaves

在node01節點配置從節點,刪掉里面的localhost,配置上從節點(node02、node03、node04)

> vim /home/modules/hadoop-2.8.3/etc/hadoop/slaves# 刪掉里面的localhost,添加以下內容node02node03node04

1.2.1.7 分發組件

在 node01 執行如下命令,將 hadoop-2.8.3 目錄拷貝到其他各個節點的/home/modules/下

> for i in {02..04};do scp -r /home/modules/hadoop-2.8.3 root@node${i}:/home/modules/;done二選一scp -r /home/modules/hadoop-2.8.3 root@node02:/home/modules/scp -r /home/modules/hadoop-2.8.3 root@node03:/home/modules/scp -r /home/modules/hadoop-2.8.3 root@node04:/home/modules/

等待幾分鐘拷貝完畢后,在 node02~node04 節點執行如下命令檢查是否復制成功

> ls /home/modules/ | grep hadoop

1.2.1.8 添加并校驗環境變量

在 node01~node04,執行下面命令添加環境變量:

> vim /etc/profile# 添加內容為:export HADOOP_HOME=/home/modules/hadoop-2.8.3export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATHexport HADOOP_CLASSPATH=/home/modules/hadoop-2.8.3/share/hadoop/tools/lib/*:$HADOOP_CLASSPATH

注意:請在末尾添加!

在 node01~node4,執行如下命令,使環境變量生效:

> source /etc/profile

此處以node01為例子

在 node01~node4,執行如下命令,校驗環境變量:

> echo $HADOOP_HOME

顯示如下內容則為配置正確:

1.2.1.9 初始化namenode

node01上執行如下命令,初始化 Namenode:

> hdfs namenode -format

1.3.1 啟動Hadoop集群

步驟 1??? 在node01節點執行以下命令:
> start-dfs.sh ; start-yarn.sh返回信息中有以下內容,表示hadoop集群啟動成功:Starting namenodes on [node01]Starting secondary namenodes [node01]starting yarn daemonshi

1.3.2 驗證Hadoop狀態

步驟 1?? 使用jps命令在node01-4中查看Java進程

在node01中可以查看到 NameNode,SecondaryNameNode,ResourceManager

進程,在node2-4中可以查看到 NodeManager 和 Datanode 進程,表示hadoop集群狀態正常。

>? jps

1538 WrapperSimpleApp

5732 SecondaryNameNode

5508 NameNode

6205 Jps

5918 ResourceManager

>? jps

3026 Jps

2740 DataNode

1515 WrapperSimpleApp

2862 NodeManager

步驟 3??? 訪問,可以登錄Namenode的Web界面:

http://namenodeip:50070

訪問Yran界面:

1.4.1 使用Hadoop統計以下表格人名字的出現次數

首先找到hadoop自帶worldcount jar包示例的路徑

創建數據文件夾,以及輸出文件夾

編輯輸入數據:

具體輸入的數據聽從老師安排

將本地準備的輸入文件上傳到hdfs中:

查看文件

執行MapReduce

hadoop jar hadoop-mapreduce-examples-2.8.3.jar wordcount /data/wordcount /output/wordcountresult查看結果:jpshadoop fs -text /output/wordcountresult/part-r-00000

結尾

? ? ? ? 經過前面的學習,相信讀者已經對Hadoop集群的安裝和MapReduce應用有了深入的了解。Hadoop作為一個開源的分布式計算平臺,為大數據處理提供了強大的支持。通過本教程的學習,讀者可以搭建起自己的Hadoop集群,并嘗試使用MapReduce處理大規模數據集。當然,Hadoop的功能遠不止于此,它還有更多的高級特性和應用場景等待我們去探索。希望本教程能夠為您在大數據處理領域的學習和實踐提供一些幫助。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/38891.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/38891.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/38891.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Mysql面試合集

概念 是一個開源的關系型數據庫。 數據庫事務及其特性 事務&#xff1a;是一系列的數據庫操作&#xff0c;是數據庫應用的基本邏輯單位。 事務特性&#xff1a; &#xff08;1&#xff09;原子性&#xff1a;即不可分割性&#xff0c;事務要么全部被執行&#xff0c;要么就…

代碼隨想錄1數組

1 二分查找 Leetcode704 1 [l,r]區間 l 0, r nums.length-1; while(l<r) 因為lr有意義 2 [l,r)區間 l 0, r nums.length; while(l<r) Leetcode35 class Solution {public int searchInsert(int[] nums, int target) {int l0,rnums.length;while(l<r){int m l(…

使用設計模式來增強你的 SpringBoot 開發

SpringBoot 是一個出色的框架&#xff0c;可以快速構建強大而高效的應用程序。但你是否知道設計模式可以將 SpringBoot 開發提升到一個新的水平&#xff1f; ? 設計模式的重要性&#xff1a;了解設計模式如何促進代碼的可重用性、可維護性和整體應用程序健康。 ? SpringBoot…

在Spring Data JPA中使用@Query注解

目錄 前言示例簡單示例只查詢部分字段&#xff0c;映射到一個實體類中只查詢部分字段時&#xff0c;也可以使用List<Object[]>接收返回值再復雜一些 前言 在以往寫過幾篇spring data jpa相關的文章&#xff0c;分別是 Spring Data JPA 使用JpaSpecificationExecutor實現…

python 筆試面試八股(自用版~)

1 解釋型和編譯型語言的區別 解釋是翻譯一句執行一句&#xff0c;更靈活&#xff0c;eg&#xff1a;python; 解釋成機器能理解的指令&#xff0c;而不是二進制碼 編譯是整個源程序編譯成機器可以直接執行的二進制可運行的程序&#xff0c;再運行這個程序 比如c 2 簡述下 Pyth…

運維鍋總詳解RocketMQ

本文嘗試從Apache RocketMQ的簡介、主要組件及其作用、3種部署模式、Controller集群模式工作流程、最佳實踐等方面對其進行詳細分析。希望對您有所幫助&#xff01; 一、Apache RocketMQ 簡介 Apache RocketMQ 是一個開源的分布式消息中間件&#xff0c;由阿里巴巴集團開發并…

祝賀《華為戰略管理法:DSTE實戰體系》被《中國企業家》雜志評為企業家枕邊書50本之一(宏觀戰略類書籍)

祝賀《華為戰略管理法&#xff1a;DSTE實戰體系》被《中國企業家》雜志評為企業家枕邊書50本之一 2024年4月23日&#xff08;周二&#xff09;下午13:00&#xff0c;《中國企業家》雜志如期舉辦“每天都是讀書日”線下活動。 《中國企業家》雜志攜手商界大咖共同推選50本枕邊書…

Vue.js中的計算屬性

Vue.js中的計算屬性&#xff08;computed properties&#xff09;是用于聲明響應式依賴的屬性。它們會根據它們的依賴進行緩存&#xff0c;并且只有在相關依賴發生改變時才會重新求值。這使得它們非常適合用來處理復雜邏輯和數據處理。 基本用法 在Vue實例中&#xff0c;可以…

鐳速實現AD域集成助力企業文件安全傳輸管控

在當今這個信息量爆炸擴張的年代&#xff0c;企業數據宛如一座蘊藏無限價值的寶庫&#xff0c;它不僅是企業核心競爭力的載體&#xff0c;也成為了各種潛在風險的聚焦點。隨著數字化轉型步伐的加快&#xff0c;安全文件傳輸的管理控制顯得尤為重要&#xff0c;它構成了保護企業…

各類排序方法 歸并排序 擴展練習 逆序對數量

七月挑戰一個月重刷完Y總算法基礎題&#xff0c;并且每道題寫詳細題解 進度:(3/106) 歸并排序的思想也是分而治之 歸并優點&#xff1a;速度穩定,排序也穩定 排序也穩定&#xff08;數組中有兩個一樣的值&#xff0c;排序之后他們的前后順序不發生變化&#xff0c;我們就說…

Leetcode 2065. 最大化一張圖中的路徑價值(DFS / 最短路)

Leetcode 2065. 最大化一張圖中的路徑價值 暴力DFS 容易想到&#xff0c;從0點出發DFS&#xff0c;期間維護已經走過的距離&#xff08;時間&#xff09;和途徑點的權值之和&#xff0c;若訪問到0點則更新答案&#xff0c;若下一步的距離與已走過的距離和超出了maxTime&#…

oracle sql語句 排序 fjd = ‘0101‘ 排在 fjd = ‘0103‘ 的前面

要實現這個排序需求&#xff0c;你可以使用 CASE 表達式來自定義排序邏輯。假設你有一個表格名為 your_table&#xff0c;并且有一個字段 fjd 存儲類似 ‘0101’, ‘0103’ 這樣的值&#xff0c;你可以這樣編寫 SQL 查詢&#xff1a; SELECT * FROM your_table ORDER BY CASE …

專題六:Spring源碼之初始化容器BeanFactory

上一篇咱們通過一個例子介紹初始化容器上下文相關內容&#xff0c;并通過兩個示例代碼看到了Spring在設計階段為我預留的擴展點&#xff0c;和我們應該如何利用這兩個擴展點在Spring初始化容器上下文階段為我們提供服務。這一篇咱們接著往下看。 老這樣子下回到refresh方法上來…

第55期:MySQL 頻繁 Crash 怎么辦?

社區王牌專欄《一問一實驗&#xff1a;AI 版》全新改版歸來&#xff0c;得到了新老讀者們的關注。其中不乏對 ChatDBA 感興趣的讀者前來咨詢&#xff0c;表達了想試用體驗 ChatDBA 的意愿&#xff0c;對此我們表示感謝 &#x1f91f;。 目前&#xff0c;ChatDBA 還在最后的準備…

MSVCR120.DLL丟失的多種修復方法,助你快速解決dll問題

在日常生活和工作中&#xff0c;電腦已經成為我們不可或缺的工具。然而&#xff0c;在使用電腦的過程中&#xff0c;我們常常會遇到一些問題&#xff0c;其中之一就是電腦運行軟件時提示找不到msvcr120.dll。如果該文件缺失或損壞&#xff0c;可能會導致依賴它的應用程序無法啟…

高優先線程

你開發的時候有么有遇到過一個問題&#xff1a;服務器的一個服務線程過幾個小時斷連一次&#xff0c;斷連之后會馬上重連這種情況。這是由于CPU負載較高,線程調度時將處理數據的線程掛起了一段時間導致的。 因此&#xff0c;我有考慮到把cpu的核心進行分散開來&#xff0c;就類…

CesiumJS【Basic】- #042 繪制紋理線(Primitive方式)

文章目錄 繪制紋理線(Primitive方式)1 目標2 代碼2.1 main.ts3 資源文件繪制紋理線(Primitive方式) 1 目標 使用Primitive方式繪制紋理線 2 代碼 2.1 main.ts var start = Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883);var

【劍指Offer系列】68-二叉樹的最近公共祖先(哈希)

思路&#xff1a;使用map存儲每個節點的父節點&#xff0c;則兩個節點的最近公共祖先&#xff0c;即二者的最近父節點 1、中序遍歷二叉樹&#xff08;當前節點的下一個節點&#xff09; 2、記錄每個節點的父節點 3、列出p的族譜、q的族譜 4、尋找二者最近的祖先 class Soluti…

微信小程序畢業設計-英語互助系統項目開發實戰(附源碼+論文)

大家好&#xff01;我是程序猿老A&#xff0c;感謝您閱讀本文&#xff0c;歡迎一鍵三連哦。 &#x1f49e;當前專欄&#xff1a;微信小程序畢業設計 精彩專欄推薦&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python畢業設計…

PS系統教程31

調色之色階 調色與通道最基本的關系通道是記錄顏色最基本的信息有些圖片可以用通道去改變顏色信息的說明這些圖像是比較高級的PS是一款圖像合成軟件&#xff0c;在合成過程中需要處理大量素材&#xff0c;比如要用這些素材進行摳背景&#xff0c;就要用到圖層蒙版以及Alpha通道…