主頁 > 後端開發 > Kali Linux 安裝 jdk 和搭建 hadoop 平臺 (干貨,超詳細!!適合純小白)

Kali Linux 安裝 jdk 和搭建 hadoop 平臺 (干貨,超詳細!!適合純小白)

2020-11-07 06:10:30 後端開發

?Kali Linux 如何搭建 Hadoop平臺,Hadoop 偽分布安裝與使用

??大三的第一學期,用1~6周時間簡單的學習了解組成原理和計網,雖然結課的很匆忙,但是卻在第7周正式迎來了期待已久的 大資料專業課程,跟隨企業老師學習hadoop和spark,非常的有趣,
??課本是用Ubuntu講解的,但我個人并不喜歡Ubuntu,因為Ubuntu缺少不少東西,得重新安裝或者配置,可能是更適合初學者學習和使用吧,而我選擇的是 Kali Linux,一方面是因為這是我使用次數最多和最熟練的一款Linux了,另一方面是因為信仰,一種對資訊安全的信仰,也算最開始最純粹的初心吧(笑哭),
??好了,廢話不多說了,我們直奔主題!
??如下為我的搭建環境:kali的VMware虛擬機,版本:2020.3,
Kali搭建環境詳細引數

??首先,我們必須明確任務點:

?? ●擁有完善的java環境

?? ●ssh服務能夠正常運行

?? ●正式搭建Hadoop平臺

?? 一、Kali Linux安裝Java JDK :

??● 判斷是否安裝JDK:
?? kali默認是自帶了java的,如果不確定是否安裝了jdk,可以采用如下任意一條命令來檢測是否安裝java:

1.java -verson

2.whereis java(比which搜索范圍大一些,因為除查看PATH下可執行檔案外,還會查找源檔案和man檔案,適用于查找安裝好的命令,)

推薦前兩條命令,如何這兩條沒有出現java的結果,就已經說名沒有安裝jdk了,

3.$echo java (等同于which java命令,因為which也只是查找可直接執行的命令,可以查找別名,查找的就撰寫在系統PATH下的可執行檔案,which命令適用于查找安裝好的命令,)

當然也可以使用find和locate命令來查詢,不過這些都不是本文的重點,僅作簡單介紹,

??如果你的kali已經安裝了java,并且添加到了環境變數中,那么可以直接跳轉到第二大步驟了,

??● Kali 安裝Java JDK:

?? kali 安裝java的方法是和Ubuntu一樣的,有三種安裝方式,如果不懂朋友可以移步博主另一篇文章,有詳細的教程:Ubuntu Linux 安裝 java 的方法
??此處只為沒安裝的朋友提供解壓安裝的簡單教程:jdk-8u91-linux-x64百度網盤(提取碼:nqtg )

??(如果純小白不曉得如何把下載好的檔案移動到你的kali虛擬機內,我推薦三種方法:)
1.可以用kali自帶的火狐瀏覽器下載到你的kali;
2.了解如何使用vmwaretools,通過共享檔案夾來實作windows和Linux間的直接檔案傳輸;
3.百度kali如何使用Xftp 傳輸檔案,
??點到為止,不做過多贅述,

??xftp 6 百度網盤下載鏈接 ? 提取碼:n97a
??下載好jdk-8u91-linux-x64后,解壓和配置環境變數:
解壓:
tar zxvf jdk-8u91-linux-x64.tar.gz -C /opt

(opt是一個第三方軟體習慣安裝目錄,你也可以換其他的路徑解壓安裝,比如我習慣把第三方安裝在/home下)

tar -zxvf zxvf  jdk-8u91-linux-x64.tar.gz -C /usr/lib/jvm
建議解壓在jvm目錄下,一般kali默認自帶的jdk也是在/usr/lib/jvm這個路徑的下,

配置環境變數:
1)執行vim /root/.bashrc,并添加以下內容:

# install JAVA JDK
export JAVA_HOME=/被解壓檔案所在路徑/jdk1.8.0_91
#例如,我的就是:
#export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_91
export CLASSPATH=.:${JAVA_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

2)執行 source ~/.bashrc使環境變數生效,
安裝并注冊:

update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.8.0_91
update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.8.0_91
update-alternatives --set java /usr/lib/jvm/jdk1.8.0_91
update-alternatives --set javac /usr/lib/jvm/jdk1.8.0_91

檢測:
update-alternatives --config java
update-alternatives --config javac
在這里插入圖片描述

java -version
#output 
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)

JDK成功無誤!

??當然,也可用根據我們課本這樣去安裝,或者是博主的另一篇更詳細的博文安裝:Debian系列Linux安裝JDK的三種方式,

在這里插入圖片描述

在這里插入圖片描述

?? 二、開啟SSH服務

?? ssh類似于遠程登陸,可從一臺Linux主機登陸到另一臺Linux主機,并且運行命令,SSH的在hadoop中的具體應用,讀者可以百度查閱集群免密登陸進一步學習了解,此處僅做簡要提示,
??在安裝hadoop之前需要配置ssh,因為集群和單節點模式都需要用到SSH登錄,Linux一般是默認自帶ssh的客戶端服務的,缺少的是服務端SSH server,如果不安裝SSH Server,已經、配置好的單節點SSH服務器和客戶端授權登錄,則無法啟動將要安裝的偽分布hadoop,

sudo apt-get install -y openssh-server	#網路在線安裝

??● 判斷是否安裝SSH服務:

執行如下命令啟動ssh服務

sudo service ssh start

如果不能成功啟動,則說明未安裝ssh服務,
kali安裝ssh服務

# apt-get install ssh -y

啟用和開始使用 SSH
為了確保安全 shell 能夠使用,在重啟系統后使用systemctl命令來啟用它:

# reboot
# systemctl enable ssh

在當前對話執行中使用 SSH:

# service ssh start

??● 安裝SSH Server服務器:

# apt-get install openssh-server

配置SSH服務開機啟動
# update-rc.d -f ssh remove
# update-rc.d -f ssh defaults
# update-rc.d -f ssh enable 2 3 4 5

更改默認的SSH密鑰

# cd /etc/ssh
# mkdir ssh_key_backup
# mv ssh_host_* ssh_key_backup

創建新密鑰:

# dpkg-reconfigure openssh-server

允許 SSH Root 訪問
默認情況下 SSH 不允許以 root 用戶登錄,因此將會出現下面的錯誤提示資訊:

Permission denied, please try again.

??為了通過 SSH 進入你的 Kali Linux 系統,你可以有兩個不同的選擇,第一個選擇是創建一個新的非特權用戶然后使用它的身份來登錄,第二個選擇,你可以以 root 用戶訪問 SSH ,為了實作這件事,需要在SSH 組態檔 /etc/ssh/sshd_config 中插入下面這些行內容或對其進行編輯:

#PermitRootLogin prohibit-password

改為:

PermitRootLogin yes

在這里插入圖片描述
/etc/ssh/sshd_config 進行更改以后,需在以 root 用戶登錄 SSH 前重啟 SSH 服務:

# service ssh restart

查看是否安裝成功:

	ssh -V

出現如下類似資訊,表示你很順利的安裝成功了!
在這里插入圖片描述

SSH服務安裝開啟成功!

??● ssh登陸本機:
ssh localhost
??首次登陸SSH會提示,輸入"yes",按提示輸入密碼就登陸本機了,
如果此時報這種錯:

root@localhost's password:localhost:permission denied,please try again 

就更改密碼后再次登陸:

# sudo passwd root   		# 注意此處的root為當前登錄本機所在的用戶名,不一定是root
# 更改成功后重啟服務:
sudo service ssh restart
ssh localhost

此時能夠正常登陸了!
?? ssh安裝無誤后,有興趣的朋友可以嘗試一下登陸其他電腦玩玩,比如我用kali登陸另一臺虛擬機或者是我的Win10嘗試登陸kali虛擬機:
在這里插入圖片描述
在這里插入圖片描述
ssh遠程登陸:

ssh 用戶名@ip地址

從上圖可以看到,Linux在登錄成功之后,會有一些問候資訊 balabala,這些文字資訊是可以自定義的:

# vim /etc/motd

寫入你想要的問候文字,

重啟SSH:

# service ssh restart

??● 無密登陸設定:
??但是這樣每次登入均要輸入密碼,設成無密登陸更方便,

具體操作如下:

# exit				# 先退出剛才的ssh localhost
# cd ~/.ssh/		# 若無該目錄,先執行一次ssh localhost創建
# ssh-keygen -t rsa										# 全部回車即可
# cat ~/.ssh/id_rsa.pub >> ./authorized_keys		# 加入授權

?? 命令 “ssh-keygen -t rsa” 會生成 公鑰和私鑰默認在該目錄(~/.ssh/)生成id_rsa(私鑰)和id_rsa.pub(公鑰)倆檔案,"cat ~/.ssh/id_rsa.pub >> ./authorized_keys" 命令則是將公鑰密碼匯入認證檔案 authorized_keys 中,
?? 最后,SSH授權完成,再次ssh localhost 則不再需要密碼了,也不再影響偽分布hadoop啟動,

?? 三、正式搭建hadoop ,偽分布安裝

① 安裝Hadoop:

??hadoop有著三種安裝模式,分別是:
??(1)單機模式;
??(2)偽分布模式;
??(3)分布模式,
??由于,博主時間緊張,這里就只給讀者介紹偽分布的安裝,也是本文的全篇側重點,

??首先,下載Hadoop

??(1)官網下載地址:Hadoop官方下載 可能下載速度會很慢

?? (2) 不過博主在這給讀者提供了自己的網盤下載:hadoop2.7和hadoop3.3百度網盤

??下載完成后便是安裝和配置了,

??● Hadoop安裝檔案并解壓:
??因為,我是實作在win10下載好后,移動到vmtools指定的共享檔案夾開始操作的,所以,博主的初始化目錄便是在/mnt/hgfs目錄下,當然你也可以用前文中提到的xftp或kali自帶火狐,

注意博主是在root賬號下開始搭建的!

??你可以創建一個新的用戶,或者跟著博主在root下安裝

先創建一個空的檔案夾,用來解壓hadoop,你可以創建在/opt路徑下,或者像博主一樣放在自己喜歡的路徑下,

# mkdir /home/Hadoop	 

解壓,-C 指定解壓路徑到創建的檔案夾路徑

# tar zxvf hadoop-3.3.0.tar.gz -C /home/Hadoop/		

授權,具有讀寫檔案的權利,否則直接影響其他相關操作,必須要執行!!

# chown -R root /home/Hadoop/hadoop-3.3.0/  
檢測Hadoop是否解壓安裝正確:
# cd /home/Hadoop/hadoop-3.3.0/
# ./bin/hadoop version

如出現如下則 恭喜你安裝無誤!!

Hadoop 3.3.0
Source code repository https://gitbox.apache.org/repos/asf/hadoop.git -r aa96f1871bfd858f9bac59cf2a81ec470da649af
Compiled by brahma on 2020-07-06T18:44Z
Compiled with protoc 3.7.1
From source with checksum 5dc29b802d6ccd77b262ef9d04d19c4

否則,采用 rm -rf /home/Hadoop 命令洗掉掉,回到上一步,耐心的重來,

② 配置Hadoop環境變數:

??與java環境變數的配置類似,用編輯器打開.bashrc檔案保存修改后,執行source ~/.bashrc命令使其生效:

export HADOOP_HOME=/home/Hadoop/hadoop-3.3.0			# 注意,這里是你的hadoop解壓安裝路徑
export CLASSPATH=$CLASSPATH:$HADOOP_HOME/lib
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

保存并生效后,便可在任何路徑下使用hadoop命令了

??執行生效命令:

# source /root/.bashrc

??出現此前執行./bin/hadoop version命令時所出現的資訊,則證明環境變數修改無誤

# hadoop version		

??一定要確定寫對后再執行生效,避免不必要的麻煩,如果有朋友操作不當,導致命令幾乎失效的話,請執行該命令恢復:
export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin

??整個如上執行程序,請參考下圖:

在這里插入圖片描述

在這里插入圖片描述

③ 偽分布模式配置:

?? 首先,得清楚概念,什么是hadoop的偽分布運行?

??Hadoop的偽分布運行是指,同一個節點既是名稱節點(Name Node),也是資料節點(Data Node),讀取分布式檔案系統HDFS的檔案,安裝不同模式Hadoop,就是修改其組態檔符合模式要求,
??Hadoop有倆組態檔,一個是core-site.xml檔案,另一個是hdfs-site.xml,其相對路徑是在 hadoop-3.3.0/etc/hadoop/ 下,

首先,修改core-site.xml組態檔

#	vim /home/Hadoop/hadoop-3.3.0/etc/hadoop/core-site.xml 

修改添加的內容:

<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
	<value>file:/home/Hadoop/hadoop-3.3.0/tmp</value> 
		# 注意,這里的/home/Hadoop/hadoop-3.3.0是指你的hadoop安裝路徑
        <description>Abase for other temporary directories.</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
	<value>hdfs://localhost:9000</value>
    </property>
	<property>
		<name>dfs.permissions</name>
		<value>false</value>
	</property>
</configuration>

??詳解:

??引數fs.defaultFS為默認檔案系統名稱,其值為Hadoop的Name Node地址和埠號,如hdfs://localhost:9000,即表示Name Node是本機,埠9000是HDFS的RPC埠,是HDFS的默認埠,
??引數hadoop.tmp.dir用于確定Hadoop檔案系統的原資訊與資料保存在哪個目錄下,是Hadoop檔案系統依賴的基礎配置,很多路徑都依賴,如果hdfs-site.xml檔案中不配置Name Node和Data Node的存放位置,默認放在此路徑中,
??引數dfs.permissions的值如果是true則檢查權限,否則不檢查權限(每個人都可以存取檔案),該引數NameNode上設定,

如圖:在這里插入圖片描述
其次,修改hdfs-site.xml組態檔

# vim /home/Hadoop/hadoop-3.3.0/etc/hadoop/hdfs-site.xml

修改添加的內容:

<configuration>
<property>
    <name>dfs.replication</name>
    <value>1</value>
</property>
<property>
    <name>dfs.namenode.name.dir</name>
<value>file:/home/Hadoop/hadoop-3.3.0/tmp/dfs/name</value>
# 注意,這里的/home/Hadoop/hadoop-3.3.0是指你的hadoop安裝路徑
</property>
<property>
    <name>dfs.datanode.data.dir</name>
<value>file:/home/Hadoop/hadoop-3.3.0/tmp/dfs/data</value>
# 注意,這里的/home/Hadoop/hadoop-3.3.0仍然是指你的hadoop安裝路徑
</property>

??詳解:

??引數dfs.replication指明設定hdfs副本數,因為是偽分布模式,所以設定為“1”,默認備份3個副本,
??引數dfs.namenode.name.dir 對應的value是存放名稱節點的路徑,引數dfs.datanode.data.dir 對應的value是存放資料節點的路徑,這倆路徑也可自行設定,但最好與臨時檔案路徑一致,在初期實驗時,遇到問題可以一并處理,
??Hadoop的運行方式是由組態檔決定的,因為運行Hadoop時會讀取組態檔,如果需要切換模式,只需要重新增加,洗掉或者修改core-site.xml和hdfs-site.xml檔案中的配置項,

④ Name Node的格式化:

??配置完成,執行Name Node的格式化:
#	hdfs namenode -format 			# 由于,hadoop生效了環境變數,所以在任何路徑下均可執行,

??一定要注意,在前面的作業完成無誤之后再執行格式化,格式化只能一次,多次執行或許會出錯,

??出現"successfully formatted"和"Exiting with status 0"的字樣,則證明格式化成功!!祝賀你!

??否則,出現"Exiting with status 1"那么非常不幸!格式化出錯了,建議執行"rm -rf /home/Hadoop/hadoop3.3"命令刪掉hadoop,重新解壓安裝和配置吧!!
??除此之外,需要特別強調的一點是首次格式化不必洗掉dfs及其子檔案,此處引入我們課本:在這里插入圖片描述
??以及Java沒有配置正確后出現的報錯,也在上述圖中了,

⑤ 啟動和關閉Hadoop

??1)start-dfs.sh
?? start-dfs.sh只啟動Name Node和Data Node,啟動命令如下:

# start-dfs.sh

??第一次啟動Hadoop會出現SSH提示:“Are you sure you want to continue connecting(yes/no)?”,輸入"yes"回車!
??成功開啟后會有如下資訊:

Starting namenodes on [localhost]
Starting datanodes
Starting secondary namenodes [kali]

??啟動Hadoop成功后,可以通過jps查看行程:

C:\home\Hadoop\hadoop-3.3.0> jps
303108 DataNode
303012 NameNode
303453 Jps
303274 SecondaryNameNode

??關閉Hadoop的命令:

# stop-dfs.sh

??成功開啟后會有如下資訊:

Stopping namenodes on [localhost]
Stopping datanodes
Stopping secondary namenodes [kali]

??如上是正確的執行程序顯示!如果 沒有"SecondaryNameNode" ,需先運行stop-dfs.sh,再嘗試啟動,

??如果沒有Name Node或Data Node,就是配置不成功!

?? 請仔細檢查之前的操作,或者查看啟動日志排除來原因,或者刪掉hadoop重新解壓安裝和配置,的確是靠耐心,仔細認真的操作!

?? 如果到這里你執行的相當順利,那么博主對你表示祝賀 !!

從開啟到關閉的執行程序圖:
在這里插入圖片描述

??當然也有像博主一樣,歷經坎坷的朋友(笑哭),遇到問題就想辦法解決吧,害,在瞎折騰中變禿也變強(手動滑稽 ing~,哈哈哈)

?? 或許有朋友會在開啟hadoop的時候就遇到如下報錯:
C:\home\Hadoop\hadoop-3.3.0> start-dfs.sh 
Starting namenodes on [localhost]
ERROR: Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
Starting datanodes
ERROR: Attempting to operate on hdfs datanode as root
ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.
Starting secondary namenodes [kali]
ERROR: Attempting to operate on hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.

在這里插入圖片描述

?? 解決方法如下:
??對hadoop的sbin下start-dfs.sh和stop-dfs.sh檔案均進行修改:
# vim /home/Hadoop/hadoop-3.3.0/sbin/start-dfs.sh
# vim /home/Hadoop/hadoop-3.3.0/sbin/stop-dfs.sh

倆檔案增添內容全部如下:

#!/usr/bin/env bash
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

注意添加位置是這兩行之后:

# See the License for the specific language governing permissions and
# limitations under the License.
??保存并退出vim,再次執行重啟:
# start-dfs.sh
??理論是不會有什么錯了,如果修改這倆檔案后,你又遇到和博主一樣新的報錯,博主也提供了新的解決方法:
WARNING: HADOOP_SECURE_DN_USER has been replaced by HDFS_DATANODE_SECURE_USER. Using value of HADOOP_SECURE_DN_USER.
Starting namenodes on [localhost]
ERROR: JAVA_HOME is not set and could not be found.
Starting datanodes
ERROR: JAVA_HOME is not set and could not be found.
Starting secondary namenodes [kali]
ERROR: JAVA_HOME is not set and could not be found.

仍然是修改start-dfs.sh和stop-dfs.sh檔案這兩檔案,將之前的修改內容全部更改成:

HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs 
HDFS_NAMENODE_USER=root 
HDFS_SECONDARYNAMENODE_USER=root		

在這里插入圖片描述

??而面對另外一個報錯,你可能會很懵逼,我明明是在之前添加了Java的環境變數啊,為什么還會報錯說:“java沒有設定并且也找不到”呢?

JAVA_HOME is not set and could not be found
??起初,我郁悶了會,而且又回過去查看了環境變數配置,琢磨過來又細想過去,環境變數是沒有問題的,后來曉得是得修改hadoop-env.sh來解決,
# vim /home/Hadoop/hadoop-3.3.0/etc/hadoop/hadoop-env.sh
??在這個檔案中你會發現JAVA_HOME的確是沒有被添加的!
??解決方法:手動添加一個環境變數中的Java JDK 路徑,保存并退出即可解決,

如圖:在這里插入圖片描述
此處報錯全圖展覽:
在這里插入圖片描述

??再次嘗試啟動和關閉Hadoop和jps行程查看,查看是否正常:
C:\home\Hadoop\hadoop-3.3.0> start-dfs.sh 
Starting namenodes on [localhost]
Starting datanodes
Starting secondary namenodes [kali]
C:\home\Hadoop\hadoop-3.3.0> jps
147891 NameNode
148192 SecondaryNameNode
147985 DataNode
148287 Jps
C:\home\Hadoop\hadoop-3.3.0> stop-dfs.sh 
Stopping namenodes on [localhost]
Stopping datanodes
Stopping secondary namenodes [kali]

??恭喜你,基本完成了Hadoop的偽分布搭建 !

如果你還和博主一樣悲催,仍然殘留著小問題:

  ━(Message from Kali developers)
┃
┃ This is a minimal installation of Kali Linux, you likely
┃ want to install supplementary tools. Learn how:
┃ ? https://www.kali.org/docs/troubleshooting/common-minimum-setup/
┃
┗━(Run “touch ~/.hushlogin” to hide this message)
??別著急,博主也為你寫了解決方案:

報錯意思是說缺少了輔助工具,我們安裝即可:

# apt install supplementary tools -y				# 記得更換國內源和保證kali linux網路的正常運營
如果中途又報錯提示:
E: dpkg 被中斷,您必須手工運行 ‘dpkg --configure -a’ 解決此問題,
那么就根據報錯的提示執行:
# dpkg --configure -a

等運行結束后,再執行該命令,隱藏提示即可:

# touch ~/.hushlogin

??2)start-all.sh
?? start-all.sh不僅啟動Name Node和Data Node,還啟動YARN的ResourceManager和NodeManger,啟動命令如下:

# start-all.sh
# jps			# 查看全啟動的Hadoop行程

??關閉命令如下:

# stop-all.sh

??注意,養成好習慣,開啟不用時就關閉退出,避免其他錯誤的發生,

??當然,在這里博主又遇到了報錯,好悲催,不過熱心的博主也為你解決了,哈哈(笑哭):

報錯代碼如下:

ERROR: Attempting to operate on yarn nodemanager as root
ERROR: but there is no YARN_NODEMANAGER_USER defined. Aborting operation.
Stopping resourcemanager
ERROR: Attempting to operate on yarn resourcemanager as root
ERROR: but there is no YARN_RESOURCEMANAGER_USER defined. Aborting operation.
??我們只需要根據報錯在start-yarn.sh和stop-yarn.sh檔案的第二行中添加資訊即可:
# vim /home/Hadoop/hadoop-3.3/sbin/start-yarn.sh
# vim /home/Hadoop/hadoop-3.3/sbin/stop-yarn.sh

添加內容如下:

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

如下圖:
在這里插入圖片描述

在這里插入圖片描述

??最后,重啟關閉Hdoop和jps行程查看來檢驗:

C:\home\Hadoop\hadoop-3.3.0> start-all.sh 
Starting namenodes on [localhost]
Starting datanodes
Starting secondary namenodes [kali]
Starting resourcemanager
Starting nodemanagers
C:\home\Hadoop\hadoop-3.3.0> jps
377207 SecondaryNameNode
376983 DataNode
376887 NameNode
377478 NodeManager
377614 Jps
377387 ResourceManager
C:\home\Hadoop\hadoop-3.3.0> stop-all.sh 
Stopping namenodes on [localhost]
Stopping datanodes
Stopping secondary namenodes [kali]
Stopping nodemanagers
Stopping resourcemanager
C:\home\Hadoop\hadoop-3.3.0>  

?? 完美!

??到這里,kali 搭建Hadoop偽分布就告一段落,能夠解決你的問題,博主非常的榮幸 !!

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/205177.html

標籤:python

上一篇:IL編譯,請問怎樣修改這段代碼,使它永遠回傳true值,就是直接return true;

下一篇:QueryPerformanceCounter 定時器

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more