Hadoop超詳細講解之單節點搭建

来源:https://www.cnblogs.com/LaoPaoEr/archive/2022/05/27/16317049.html
-Advertisement-
Play Games

1 Hadoop介紹 Hadoop是Apache旗下的一個用java語言實現開源軟體框架,是一個開發和運行處理大規模數據的軟體平臺。允許使用簡單的編程模型在大量電腦集群上對大型數據集進行分散式處理。狹義上說,Hadoop指Apache這款開源框架,它的核心組件有: HDFS(分散式文件系統):解決 ...


1 Hadoop介紹

  Hadoop是Apache旗下的一個用java語言實現開源軟體框架,是一個開發和運行處理大規模數據的軟體平臺。允許使用簡單的編程模型在大量電腦集群上對大型數據集進行分散式處理。狹義上說,Hadoop指Apache這款開源框架,它的核心組件有:

  HDFS(分散式文件系統):解決海量數據存儲.

  YARN(作業調度和集群資源管理的框架):解決資源任務調度。

  MAPREDUCE(分散式運算編程框架):解決海量數據計算。

廣義上來說,Hadoop通常是指一個更廣泛的概念——Hadoop生態圈(一圖看懂大數據生態圈)

2 Hadoop特性優點

擴容能力(Scalable)Hadoop是在可用的電腦集群間分配數據並完成計算任務的,這些集群可用方便的擴展到數以千計的節點中。

成本低(Economical):Hadoop通過普通廉價的機器組成伺服器集群來分發以及處理數據,以至於成本很低。

高效率(Efficient):通過併發數據,Hadoop可以在節點之間動態並行的移動數據,使得速度非常快。

可靠性(Rellable):能自動維護數據的多份複製,並且在任務失敗後能自動地重新部署(redeploy)計算任務。所以Hadoop的按位存儲和處理數據的能力值得人們信賴。

3  Hadoop歷史版本與架構

1.x版本系列:Hadoop版本當中的第二代開源版本,主要修複0.x版本的一些bug等,該版本已被淘汰

2.x版本系列:架構產生重大變化,引入了yarn平臺等許多新特性,是現在使用的主流版本。

3.x版本系列:對HDFS、MapReduce、YARN都有較大升級,還新增了Ozone key-value存儲。

    架構:Hadoop在1.X版本的時候只有HDFS和MapReduce。在Hadoop2.X開始,中間加入了Yarn調度層做資源調度工作。如下圖:一圖讀懂Hadoop架構。

Hadoop 3.x的版本架構和模型介紹

       由於Hadoop 2.0是基於JDK 1.7開發的,而JDK 1.7在2015年4月已停止更新,這直接迫使Hadoop社區基於JDK 1.8重新發佈一個新的Hadoop版本,即Hadoop 3.0。Hadoop 3.0中引入了一些重要的功能和優化,包括HDFS 可擦除編碼、多Namenode支持、MR Native Task優化、YARN基於cgroup的記憶體和磁碟IO隔離、YARN container resizing等。

       Apache Hadoop 項目組最新消息,Hadoop3.x以後將會調整方案架構,將Mapreduce 基於記憶體+io+磁碟,共同處理數據。改變最大的是hdfs,hdfs 通過最近block塊計算,根據最近計算原則,本地block塊,加入到記憶體,先計算,通過IO,共用記憶體計算區域,最後快速形成計算結果。

  4.1  Hadoop 3.0新特性

  Hadoop 3.0在功能和性能方面,對Hadoop內核進行了多項重大改進。

  (1)通用性:

  ① 精簡Hadoop內核,包括剔除過期的API和實現,將預設組件實現替換成最高效的實現。

  ② Classpath isolation:以防止不同版本jar包衝突。

  ③ Shell腳本重構: Hadoop 3.0對Hadoop的管理腳本進行了重構,修複了大量bug,增加了新特性。

 (2)HDFS

  Hadoop3.x中Hdfs在可靠性和支持能力上作出很大改觀:

  ① HDFS支持數據的擦除編碼,這使得HDFS在不降低可靠性的前提下,節省一半存儲空間。

  ② 多NameNode支持,即支持一個集群中,一個active、多個standby namenode部署方式。註:多ResourceManager特性在Hadoop 2.0中已經支持。

  (3)HDFS糾刪碼

  在Hadoop3.X中,HDFS實現了Erasure Coding這個新功能。Erasure coding糾刪碼技術簡稱EC,是一種數據保護技術.最早用於通信行業中數據傳輸中的數據恢復,是一種編碼容錯技術。通過在原始數據中加入新的校驗數據,使得各個部分的數據產生關聯性。在一定範圍的數據出錯情況下,通過糾刪碼技術都可以進行恢復。Hadoop-3.0之前,HDFS存儲方式為每一份數據存儲3份,這也使得存儲利用率僅為1/3,Hadoop-3.0引入糾刪碼技術(EC技術),實現1份數據+0.5份冗餘校驗數據存儲方式。與副本相比糾刪碼是一種更節省空間的數據持久化存儲方法。標準編碼(比如Reed-Solomon(10,4))會有1.4 倍的空間開銷;而HDFS副本則會有3倍的空間開銷。

  (4)支持多個NameNodes 

     最初的HDFS NameNode high-availability實現僅僅提供了一個active NameNode和一個Standby NameNode;並且通過將編輯日誌複製到三個JournalNodes上,這種架構能夠容忍系統中的任何一個節點的失敗。    然而,一些部署需要更高的容錯度。我們可以通過這個新特性來實現,其允許用戶運行多個Standby NameNode。比如通過配置三個NameNode和五個JournalNodes,這個系統可以容忍2個節點的故障,而不是僅僅一個節點。

  (5)  MapReduce

  Hadoop3.X中的MapReduce較之前的版本作出以下更改:

  ① Tasknative優化:為MapReduce增加了C/C++的map output collector實現(包括Spill,Sort和IFile等),通過作業級別參數調整就可切換到該實現上。對於shuffle密集型應用,其性能可提高約30%。

  ② MapReduce記憶體參數自動推斷。在Hadoop 2.0中,為MapReduce作業設置記憶體參數非常繁瑣,一旦設置不合理,則會使得記憶體資源浪費嚴重,在Hadoop3.0中避免了這種情況。

  Hadoop3.x中的MapReduce添加了Map輸出collector的本地實現,對於shuffle密集型的作業來說,這將會有30%以上的性能提升。

  (6)YARN 資源類型

  YARN 資源模型(YARN resource model)已被推廣為支持用戶自定義的可數資源類型(support user-defined countable resource types),不僅僅支持 CPU 和記憶體。比如集群管理員可以定義諸如 GPUs、軟體許可證(software licenses)或本地附加存儲器(locally-attached storage)之類的資源。YARN 任務可以根據這些資源的可用性進行調度。

  (7)其他

   在Hadoop3.x之前,多個Hadoop服務的預設埠都屬於Linux的臨時埠範圍(32768-61000)。這就意味著用戶的服務在啟動的時候可能因為和其他應用程式產生埠衝突而無法啟動。現在這些可能會產生衝突的埠已經不再屬於臨時埠的範圍,這些埠的改變會影響NameNode, Secondary NameNode, DataNode以及KMS。與此同時,官方文檔也進行了相應的改變,具體可以參見 HDFS-9427以及HADOOP-12811。 

  • Namenode ports: 50470 --> 9871, 50070--> 9870, 8020 --> 9820
  • Secondary NN ports: 50091 --> 9869,50090 --> 9868
  • Datanode ports: 50020 --> 9867, 50010--> 9866, 50475 --> 9865, 50075 --> 9864
  • Kms server ports: 16000 --> 9600 (原先的16000與HMaster埠衝突)

5 Hadoop集群搭建

  (1)集群簡介

  Hadoop集群具體來說包含兩個集群:HDFS集群和YARN集群,兩者邏輯上分離,但物理上常在一起。

  HDFS集群負責海量數據的存儲,集群中的角色主要有:

  • NameNode、DataNode、SecondaryNameNode

  YARN集群負責海量數據運算時的資源調度,集群中的角色主要有:

  • ResourceManager、NodeManager

  mapreduce是一個分散式運算編程框架。是應用程式開發包,由用戶按照編程規範進行程式開發,後打包運行在HDFS集群上,並且受到YARN集群的資源調度管理。

 (2) 集群部署方式

  • standalone mode(獨立模式):獨立模式又稱為單機模式,僅1個機器運行1個java進程,主要用於調試。
  • Pseudo-Distributed mode(偽分散式模式):偽分佈模式也是在1個機器上運行HDFS的NameNode和DataNode、YARN的 ResourceManger和NodeManager,但分別啟動單獨的java進程,主要用於調試。

  • Cluster mode(群集模式):集群模式主要用於生產環境部署。會使用N台主機組成一個Hadoop集群。這種部署模式下,主節點和從節點會分開部署在不同的機器上。

  (3)  Hadoop集群架構模型

  • 第一種:NameNode與ResourceManager單節點架構模型

  文件系統核心模塊:

  NameNode:集群當中的主節點,主要用於管理集群當中的各種數據。

  secondaryNameNode:主要能用於hadoop當中元數據信息的輔助管理。

  DataNode:集群當中的從節點,主要用於存儲集群當中的各種數據。

  數據計算核心模塊:

ResourceManager:接收用戶的計算請求任務,並負責集群的資源分配。

  NodeManager:負責執行主節點APPmaster分配的任務。

  

  • 第二種:NameNode高可用與ResourceManager單節點架構模型

  文件系統核心模塊:

NameNode:集群當中的主節點,主要用於管理集群當中的各種數據,其中NameNode可以有兩個,形成高可用狀態。

  DataNode:集群當中的從節點,主要用於存儲集群當中的各種數據。

JournalNode:文件系統元數據信息管理。

  數據計算核心模塊:

  ResourceManager:接收用戶的計算請求任務,並負責集群的資源分配,以及計算任務的劃分。

  NodeManager:負責執行主節點ResourceManager分配的任務。

  

  • 第三種:NameNode單節點與ResourceManager高可用架構模型

    文件系統核心模塊:

    NameNode:集群當中的主節點,主要用於管理集群當中的各種數據。

    secondaryNameNode:主要能用於hadoop當中元數據信息的輔助管理。

    DataNode:集群當中的從節點,主要用於存儲集群當中的各種數據。

    數據計算核心模塊:

    ResourceManager:接收用戶的計算請求任務,並負責集群的資源分配,以及計算任務的劃分,通過zookeeper實現ResourceManager的高可用。

    NodeManager:負責執行主節點ResourceManager分配的任務。

  • 第四種:NameNode與ResourceManager高可用架構模型

    搭建過程查看另外一篇文章( HDFS High Availability(HA)高可用配置 )

    文件系統核心模塊:

    NameNode:集群當中的主節點,主要用於管理集群當中的各種數據,一般都是使用兩個,實現HA高可用

    JournalNode:元數據信息管理進程,一般都是奇數個

    DataNode:從節點,用於數據的存儲

    數據計算核心模塊:

    ResourceManager:Yarn平臺的主節點,主要用於接收各種任務,通過兩個,構建成高可用

    NodeManager:Yarn平臺的從節點,主要用於處理ResourceManager分配的任務

  以上就是Hadoop的詳細介紹,接下來就讓我們實戰吧,我們準備三台虛擬機。

  

  準備工作:實現虛擬機之間的SSH免密登錄(參考文章

  在三台主機上分別創建目錄:

mkdir  -p /export/server/
mkdir  -p /export/data/
mkdir  -p /export/software/

(6)NameNode與ResourceManager單節點架集群規劃與搭建

 (1)解壓Hadoop安裝包

  自行複製鏈接下載:http://archive.apache.org/dist/hadoop/core/hadoop-3.1.4/hadoop-3.1.4.tar.gz 

上傳下載的Hadoop3.1.4包到 /export/software/ 目錄下。上傳方式多種,這裡就不做展示,然後解壓。解壓命令:

cd /opt/export/software
tar -zxvf hadoop-3.1.4-bin-snappy-CentOS7.tar.gz -C /export/server/

在Hadoop3.1.4文件中創建用於存放數據的data目錄:

mkdir -p /export/server/hadoop-3.1.4/data

   (2)編輯配置文件

  • 配置NameNode(core-site.xml)

    hadoop的核心配置文件,有預設的配置項core-default.xml。在該文件中的<configuration>標簽中添加配置。

    core-default.xml與core-site.xml的功能是一樣的,如果在core-site.xml里沒有配置的屬性,則會自動會獲取core-default.xml里的相同屬性的值。
cd /export/server/hadoop-3.1.4/etc/hadoop
vim core-site.xml

#-------------------------------------------------------------
#在第19行<configuration></configuration>之間添加配置,以下內容:

<!-- 預設文件系統的名稱。通過URI中schema區分不同文件系統。-->
<!-- file:///本地文件系統 hdfs:// hadoop分散式文件系統 gfs://。-->
<!-- hdfs文件系統訪問地址:http://nn_host:8020。-->
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://node1:8020</value>
</property>
<!-- hadoop本地數據存儲目錄 format時自動生成 -->
<property>
    <name>hadoop.tmp.dir</name>
    <value>/export/server/hadoop-3.1.4/data</value>
</property>
<!-- 在Web UI訪問HDFS使用的用戶名。-->
<property>
    <name>hadoop.http.staticuser.user</name>
    <value>root</value>
</property>
  • 配置HDFS路徑(hdfs-site.xml)

    HDFS的核心配置文件,主要配置HDFS相關參數,有預設的配置項hdfs-default.xml。在該文件中的<configuration>標簽中添加配置。

    hdfs-default.xml與hdfs-site.xml的功能是一樣的,如果在hdfs-site.xml里沒有配置的屬性,則會自動會獲取hdfs-default.xml里的相同屬性的值。

vim hdfs-site.xml

#-------------------------------------------------------------
#在第20行<configuration></configuration>之間添加配置,以下內容:

<!-- 設定SNN運行主機和埠。-->
<property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>node2:9868</value>
</property>
  • 配置YARN(yarn-site.xml)

    YARN的核心配置文件,在該文件中的<configuration>標簽中添加配置。

vim yarn-site.xml

#----------------------------------------------------------- 
#在第18行<configuration></configuration>之間添加配置,以下內容:


<!-- yarn集群主角色RM運行機器。-->
<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>node1</value>
</property>
<!-- NodeManager上運行的附屬服務。需配置成mapreduce_shuffle,才可運行MR程式。-->
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
<!-- 每個容器請求的最小記憶體資源(以MB為單位)。-->
<property>
  <name>yarn.scheduler.minimum-allocation-mb</name>
  <value>512</value>
</property>
<!-- 每個容器請求的最大記憶體資源(以MB為單位)。-->
<property>
  <name>yarn.scheduler.maximum-allocation-mb</name>
  <value>2048</value>
</property>
<!-- 容器虛擬記憶體與物理記憶體之間的比率。-->
<property>
  <name>yarn.nodemanager.vmem-pmem-ratio</name>
  <value>4</value>
</property>
  • 配置MapReduce(mapred-site.xml)

    MapReduce的核心配置文件,Hadoop預設只有個模板文件mapred-site.xml.template,需要使用該文件複製出來一份mapred-site.xml文件。在該文件中的<configuration>標簽中添加配置。

vim mapred-site.xml

#------------------------------------------------------------
#在第20行<configuration></configuration>之間添加配置,以下內容:

<!-- mr程式預設運行方式。yarn集群模式 local本地模式-->
<property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
</property>
<!-- MR App Master環境變數。-->
<property>
  <name>yarn.app.mapreduce.am.env</name>
  <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<!-- MR MapTask環境變數。-->
<property>
  <name>mapreduce.map.env</name>
  <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<!-- MR ReduceTask環境變數。-->
<property>
  <name>mapreduce.reduce.env</name>
  <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property> <property>
  <name>mapreduce.reduce.env</name>
  <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
  • workers文件配置

  配合一鍵啟動腳本如start-dfs.sh、stop-yarn.sh用來進行集群啟動。這時候workers文件裡面的主機標記的就是從節點角色所在的機器。

vim /export/server/hadoop-3.1.4/etc/hadoop/workers

#----------------------------------
# 刪除第一行localhost,然後添加以下三行

node1
node2
node3
  • 修改hadoop.env環境變數

    文件中設置的是Hadoop運行時需要的環境變數。JAVA_HOME是必須設置的,即使我們當前的系統中設置了JAVA_HOME,它也是不認識的,因為Hadoop即使是在本機上執行,它也是把當前的執行環境當成遠程伺服器。

#hadoop.env文件
vim /export/server/hadoop-3.1.4/etc/hadoop/hadoop-env.sh 

#修改第54行為:
#備註:JavaJDK版本配置在/etc/profile的JAVA_HOME=/export/server/jdk1.8.0_60 這裡配置自己伺服器java的JDK的版本

export JAVA_HOME=/export/server/jdk1.8.0_60
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
  • 配置環境變數
vim /etc/profile

#打開配置文件後新增如下配置。
export HADOOP_HOME=/export/server/hadoop-3.1.4
export PATH=$PATH:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin

#保存配置文件後需要刷新配置文件
source /etc/profile
  • 分發配置好的Hadoop安裝文件和環境變數

#進入Hadoop安裝目錄
cd /export/server/

#分發給Node2和Node3,
scp -r hadoop-3.1.4 node2:$PWD
scp -r hadoop-3.1.4 node3:$PWD
scp /etc/profile node2:/etc
scp /etc/profile node3:/etc

#在Node2和Node3主機上執行刷新配置文件
source /etc/profile

  (3) 格式化HDFS

首次啟動HDFS時,必須對其進行格式化操作。本質上是一些清理和準備工作,因為此時的HDFS在物理上還是不存在的。只需要在node1上進行格式化,只能格式化一次

cd /export/server/hadoop-3.1.4
bin/hdfs namenode -format

7 集群啟動和關閉

使用以下方式啟動Hadoop,建議方式三一鍵啟動。必須啟動Hadoop才能訪問網頁。

  (1)集群啟動和關閉-方式一

註意:如果在啟動之後,有些服務沒有啟動成功,則需要查看啟動日誌,Hadoop的啟動日誌在每台主機的/export/server/hadoop-x.x.x/logs/目錄,需要根據哪台主機的哪個服務啟動情況去對應的主機上查看相應的日誌,以下是node1主機的日誌目錄。

  • ①-啟動HDFS集群
#-- 選擇node1節點啟動NameNode節點
hdfs --daemon start namenode

#-- 在所有節點上啟動DataNode
hdfs --daemon start datanode

#-- 在node2啟動Secondary NameNode
hdfs --daemon start secondarynamenode
  • ①- 啟動YARN集群
#-- 選擇node1節點啟動ResourceManager節點
yarn --daemon start resourcemanager

#-- 在所有節點上啟動NodeManager
yarn --daemon start nodemanager
  • ①-關閉HDFS集群
#-- 關閉NameNode
hdfs --daemon stop namenode

#-- 每個節點關閉DataNode
hdfs --daemon stop datanode

#-- 關閉Secondary NameNode
hdfs --daemon stop secondarynamenode
  • ①-關閉YARN集群
#-- 每個節點關閉ResourceManager
yarn --daemon stop resourcemanager

#-- 每個節點關閉NodeManager
yarn --daemon stop nodemanager

  (2)集群啟動和關閉-方式2

  • ②-HDFS集群一鍵腳本
#啟動dfs
start-dfs.sh

#關閉dfs
stop-dfs.sh
  • ②-YARN集群一鍵腳
#啟動Yarn
start-yarn.sh

#關閉Yarn
stop-yarn.sh

  (3)集群啟動和關閉-方式3

#-- 一鍵啟動HDFS、YARN
start-all.sh

#-- 一鍵關閉HDFS、YARN
stop-all.sh

  (4)配置windows功能變數名稱映射

  1. 以管理員身份打開C:\Windows\System32\drivers\etc目錄下的hosts文件
  2. 在文件最後添加以下映射功能變數名稱和ip映射關係
192.168.88.161 node1
192.168.88.162 node2
192.168.88.163 node3

測試映射是否生效,在CMD界面中輸入

ping node1

ping node2

  (5)訪問WebUI  

  NameNode: http://node1:9870

  YARN: http://node1:8088

 Hadoop初體驗

  (1) 使用HDFS

從Linux本地上傳一個文本文件到hdfs的/目錄

#在/export/data/目錄中創建a.txt文件,並寫入數據
cd /export/data/
touch a.txt
echo "hello" > a.txt 

#將a.txt上傳到HDFS的根目錄
hadoop fs -put a.txt  /

通過頁面查看, 通過NameNode頁面.進入HDFS:http://node1:9870/ 

 查看文件是否創建成功.

(2)運行mapreduce程式

在Hadoop安裝包的share/hadoop/mapreduce下有官方自帶的mapreduce程式。我們可以使用如下的命令進行運行測試。(示常式序jar:hadoop-mapreduce-examples-3.1.4.jar計算圓周率)

關於圓周率的估算,感興趣的可以查詢資料蒙特卡洛方法來計算Pi值,計算命令中2表示計算的線程數,1000表示投點數,該值越大,則計算的pi值越準確。

yarn jar /export/server/hadoop-3.1.4/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.5.jar pi 2 1000

 (3)  測試寫入速度

#1.啟動YARN集群
start-yarn.sh

#2.啟動寫入基準測試
hadoop jar /export/server/hadoop-3.1.4/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-3.1.4-tests.jar  TestDFSIO -write -nrFiles 10  -fileSize 10MB

我們可以看到Hadoop啟動了一個MapReduce作業來運行benchmark測試。等待約2-5分鐘,MapReduce程式運行成功後,就可以查看測試結果了。

測試hdfs的讀取文件性能,在HDFS文件系統中讀入10個文件,每個文件10M

#測試讀取
hadoop jar /export/server/hadoop-3.1.4/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-3.1.4-tests.jar  TestDFSIO -read -nrFiles 10 -fileSize 10MB

測試期間,會在HDFS集群上創建 /benchmarks目錄,測試完畢後,我們可以清理該目錄。

#清理測試數據
hdfs dfs -ls -R /benchmarks
hadoop jar /export/server/hadoop-3.1.4/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-3.1.4-tests.jar TestDFSIO -clean

至此,整篇的Hadoop介紹以及單節點部署介紹完畢,後期會寫Hive,敬請期待吧,歡迎留言探討。 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 轉載請註明來源 https://www.cnblogs.com/brucejiao/p/16188865.html 謝謝! 轉載請註明來源 https://www.cnblogs.com/brucejiao/p/16188865.html 謝謝! 轉載請註明來源 https://www.cnblog ...
  • 鏡像下載、功能變數名稱解析、時間同步請點擊 阿裡雲開源鏡像站 本文介紹了在jenkins中maven的安裝及配置(安裝maven及jdk的方法),以及如何在jenkins中創建maven任務。 有三點需要註意的地方。 maven一定要安裝在jenkins伺服器上。 maven安裝之前要先安裝jdk。 建任務 ...
  • curl curl是一個非常實用的、用來與伺服器之間傳輸數據的工具;支持的協議包括 (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, S ...
  • 鏡像下載、功能變數名稱解析、時間同步請點擊 阿裡雲開源鏡像站 1. 查看自己的網關地址 點擊虛擬機中編輯按鈕,選中虛擬網路編輯器 2.選擇點擊VMnet8,再點擊NAT設置 3.記住此時頁面的網關IP 4.進入虛擬機終端操作界面,切換到管理員用戶 5.找到CentOS8網路配置文件 cd /etc/sysc ...
  • 本文例子參考《STM32單片機開發實例——基於Proteus虛擬模擬與HAL/LL庫》 源代碼:https://github.com/LanLinnet/STM33F103R6 項目要求 掌握$I^2C$的通訊方法和時序,通過串口發送數據,單片機接收並存入AT24C02首地址中。按下按鍵BTN,單片 ...
  • 思路: 1、socket 建立一個數據報套接字。 2、定義一個struct ifreq ifr 結構體。將網路名稱如“eth0” 賦值給ifr結構體的ifr.ifr_name。 3、調用ioctl(sockfd, SIOCGIFFLAGS, &ifr) 獲取網路標識。 如需設置網路標識,更改ifr結 ...
  • teacher表: iddeptnamephonemobile 101 1 Shrivell 2753 07986 555 1234 102 1 Throd 2754 07122 555 1920 103 1 Splint 2293 104 Spiregrain 3287 105 2 Cutflow ...
  • 本文介紹如何使用 SELECT 語句查詢 SQL 如何對錶進行創建、更新和刪除操作 中創建的 Product 表中數據。這裡使用的 SELECT 語句是 SQL 最基本也是最重要的語句。 請大家在實際運行本文中的 SELECT 語句時,親身體驗一下其書寫方法和執行結果。 執行查詢操作時可以指定想要查 ...
一周排行
    -Advertisement-
    Play Games
  • GoF之工廠模式 @目錄GoF之工廠模式每博一文案1. 簡單說明“23種設計模式”1.2 介紹工廠模式的三種形態1.3 簡單工廠模式(靜態工廠模式)1.3.1 簡單工廠模式的優缺點:1.4 工廠方法模式1.4.1 工廠方法模式的優缺點:1.5 抽象工廠模式1.6 抽象工廠模式的優缺點:2. 總結:3 ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 本章將和大家分享ES的數據同步方案和ES集群相關知識。廢話不多說,下麵我們直接進入主題。 一、ES數據同步 1、數據同步問題 Elasticsearch中的酒店數據來自於mysql資料庫,因此mysql數據發生改變時,Elasticsearch也必須跟著改變,這個就是Elasticsearch與my ...
  • 引言 在我們之前的文章中介紹過使用Bogus生成模擬測試數據,今天來講解一下功能更加強大自動生成測試數據的工具的庫"AutoFixture"。 什麼是AutoFixture? AutoFixture 是一個針對 .NET 的開源庫,旨在最大程度地減少單元測試中的“安排(Arrange)”階段,以提高 ...
  • 經過前面幾個部分學習,相信學過的同學已經能夠掌握 .NET Emit 這種中間語言,並能使得它來編寫一些應用,以提高程式的性能。隨著 IL 指令篇的結束,本系列也已經接近尾聲,在這接近結束的最後,會提供幾個可供直接使用的示例,以供大伙分析或使用在項目中。 ...
  • 當從不同來源導入Excel數據時,可能存在重覆的記錄。為了確保數據的準確性,通常需要刪除這些重覆的行。手動查找並刪除可能會非常耗費時間,而通過編程腳本則可以實現在短時間內處理大量數據。本文將提供一個使用C# 快速查找並刪除Excel重覆項的免費解決方案。 以下是實現步驟: 1. 首先安裝免費.NET ...
  • C++ 異常處理 C++ 異常處理機制允許程式在運行時處理錯誤或意外情況。它提供了捕獲和處理錯誤的一種結構化方式,使程式更加健壯和可靠。 異常處理的基本概念: 異常: 程式在運行時發生的錯誤或意外情況。 拋出異常: 使用 throw 關鍵字將異常傳遞給調用堆棧。 捕獲異常: 使用 try-catch ...
  • 優秀且經驗豐富的Java開發人員的特征之一是對API的廣泛瞭解,包括JDK和第三方庫。 我花了很多時間來學習API,尤其是在閱讀了Effective Java 3rd Edition之後 ,Joshua Bloch建議在Java 3rd Edition中使用現有的API進行開發,而不是為常見的東西編 ...
  • 框架 · 使用laravel框架,原因:tp的框架路由和orm沒有laravel好用 · 使用強制路由,方便介面多時,分多版本,分文件夾等操作 介面 · 介面開發註意欄位類型,欄位是int,查詢成功失敗都要返回int(對接java等強類型語言方便) · 查詢介面用GET、其他用POST 代碼 · 所 ...
  • 正文 下午找企業的人去鎮上做貸後。 車上聽同事跟那個司機對罵,火星子都快出來了。司機跟那同事更熟一些,連我在內一共就三個人,同事那一手指桑罵槐給我都聽愣了。司機也是老社會人了,馬上聽出來了,為那個無辜的企業經辦人辯護,實際上是為自己辯護。 “這個事情你不能怪企業。”“但他們總不能讓銀行的人全權負責, ...