1. 程式人生 > >大資料的一些基本指令與基本配置

大資料的一些基本指令與基本配置

                                                             **一:git 命令**

pwd 檢視當前所在檔案路徑 ls 檢視資料夾下檔案 mkdir 建立資料夾 touch 建立檔案 git status 檢視資料夾狀態 git add 新增檔案 ls 檢視資料夾下檔案 mkdir 建立資料夾 touch 建立檔案 git status 檢視資料夾當前檔案是否有新修改過的 git add 新增檔案路徑 (將github複製成檔案) 第一步: $ git clone 開啟自己的github的源庫,點選右邊clone and download ,換ssh,複製路徑ssh形式 在指令git clone 後面新增路徑 確定後再輸入yes確定 第二步:配置公鑰 $ ssh-keygen -t rsa -C “郵箱地址” 三次回車 在我的電腦開啟使用者…開啟.ssh資料夾,以記事本形式開啟id_rsa.pub 開啟自己的github的使用者設定,點選ssh and GPG keys ,新增公鑰,隨意命名,記事本id_rsa.pub 全複製到公鑰中 再次執行git clone命令 git config --global user.email “郵箱地址”(第一次匹配新的電腦在需要祕鑰的情況下使用) git config --global

user.name “使用者名稱”(第一次匹配新的電腦在需要祕鑰的情況下使用) git commit git push -u origin master(倉庫是才建立,第一次上傳檔案時 要寫全) git push (第二次及以後 直接這樣寫)

git 命令 git add 檔案路徑 讓創建出來的檔案告訴git倉庫要新增 git commit -m “要提交的內容是什麼—提交日誌” 將我們做的操作提交到本地git倉庫 git push -u origin master (第一遍這麼寫,目的是設定以後預設都是往master分支上提交程式碼) git pull 更新本地倉庫,使本地和github統一 echo “內容” >> 要新增到的檔名稱

解決程式碼衝突 git stash 入棧(撤回) git pull git stash pop 出棧 git add ls -all 展示隱藏檔案 rm -rf .git/ 強制刪除 .git/ 隱藏文 git 多人合作 git init 初始化git倉庫(.git資料夾生成) git remote add origin [email protected]:kll082511/project.git 確認本地和遠端倉庫連線 剛開始初始化出來的git倉庫是不知道推送的遠端git倉庫是誰, 所以需要該命令告訴他要跟哪兒個遠端倉庫連線 1.github 建立一個用於多人合作的git倉庫 2.推送版本的程式碼,內容到我們的倉庫中 3.預設情況下哪兒個賬號建立的倉庫,只有本人能提交東西上來,如果想要多人開發,需要邀請別人成為協作者

                                                    ###**二:建立新的虛擬機器步驟**#####
  • 記得新增CD/DVD的檔案路徑(即CentOS-7-x86 64-DVD的路徑)或者在建立的時候直接新增也可以

  • 新建時,記得網路連線選擇橋接網路.

  • 開啟新建虛擬機器,進行設定.

    • 1.語言選擇中文簡體
    • 2.在安裝資訊摘要裡,點選安裝位置進去,然後不做任何修改,直接完成
    • 3.點選軟體選擇,只執行命令測試可以選擇最小安裝,右側全選;若是想選擇友好的圖形互動介面,可以選擇GNOME桌面,右側全選,點選完成.
    • 4.選擇網路和主機名選項,進入,開啟乙太網開關,點選完成
    • 5.然後點選右下角的安裝,在安裝進行介面,點選ROOT密碼,進行root密碼設定,設定完成後,等待安裝成功
  • Linux命令的通用命令格式

    • 命令字 [選項] [引數]
      • 選項: 用於調節命令的具體功能
      • 引數: 命令操作的物件,如檔案、目錄名等
  • 目錄操作命令

    • pwd,cd,ls,mkdir,du
  • 檔案操作命令

    • touch,file,cp,rm,mv,which,find
  • 檔案內容操作命令

    • cat,more,less,head,tail,wc,grep
  • 壓縮命令

    • gzip,bzip2,tar
  • ls: 顯示檔案和目錄列表(list)

    • 常用引數:
      • -l (long) 詳細資訊顯示
      • -a(all) 顯示所有子目錄和檔案的資訊,包括隱藏檔案
      • -t (time)
      • -A 類似於"-a",但不顯示".“和”…"目錄的資訊
      • -R 遞迴顯示內容
  • du命令: 統計目錄及檔案的空間佔用情況(estimate file space usage)

    • -a: 統計時包括所有的檔案,而不僅僅只統計目錄
    • -h: 以更易讀的位元組單位(K、M等)顯示資訊
    • -s: 統計每個引數所佔用空間總的大小
  • file: 檢視檔案型別

    • file 檔名
  • cp命令: 複製(copy)檔案或目錄

    • -r: 遞迴複製整個目錄樹
    • -p: 保持原始檔的屬性不變
    • -f: 強制覆蓋目標同名檔案或目錄
    • -i: 需要覆蓋檔案或目錄時進行提醒
  • rm命令:刪除(Remove)檔案或目錄

    • 格式: rm [選項] 檔案或目錄
    • 常用命令選項
      • -f: 強行刪除檔案,不進行提醒
      • -i: 刪除檔案時提醒使用者確認
      • -r: 遞迴刪除整個目錄樹
  • mv命令: 移動(Move)檔案或目錄—— 如果目標位置與源位置相同,則相當於改名

    • 格式: mv [選項]… 原始檔或目錄… 目標檔案或目錄
  • which命令: 顯示系統命令所在目錄

    • which <選項> 命令名稱
    • 常用命令選項
    • -a 將所有由PATH路徑中可以找到的指令均列出,而不止第一個被找到的指令名稱
  • 內部命令:屬於Shell解析器的一部分

    • cd 切換目錄(change directory)
    • pwd 顯示當前工作目錄(print working directory)
    • help 幫助
  • 外部命令: 獨立於Shell解析器之外的檔案程式

    • ls 顯示檔案和目錄列表(list)
    • mkdir 建立目錄(make directoriy)
    • cp 複製檔案或目錄(copy)
  • 檢視幫助文件

    • 內部命令: help + 命令(help cd)
    • 外部命令: man + 命令(man ls)
  • 重啟命令(root使用者才可用)

    • shutdown -r now (立即重啟)
    • shutdown -r 時間 (多長分鐘後自動啟動)
    • shutdown -r 13:30 在時間為13:30時重啟
    • 如果是通過shutdown命令設定重啟的話,可以用shutdown -c命令取消重啟
  • 關機命令

    • halt 立刻關機
    • poweroff 立刻關機
    • shutdown -h now 立刻關機(root使用者使用)
    • shutdown -h 10 10分鐘後自動關機
  • Linux執行級別: Linux執行級別

    • runlevel 切換前的執行級別,當前的執行級別(第一個數字代表未切換過的執行級別)
    • init N N代表臨時要切換到的執行級別
  • 檢視主機名

    • hostname
  • 修改主機名

    • hostname 主機名 (一次性修改,重啟後變回原來的)
    • vi /etc/hostname (永久修改,修改的時配置檔案)
  • 測試網路連線

    • ping 主機名 (按Ctrl+c停止)
  • 檢視網路介面資訊

    • 執行ifconfig命令
    • 如果執行不了,需要安裝,執行yum install net-tools 命令進行安裝 - 安裝途中,要選擇y繼續安裝,如果不想進行選擇,可以直接執行yum install net-tools -y命令,就不會讓你進行選擇了
  • 重啟network網路服務

    • service network restart
  • 設定防火牆

    • service firewalld status 檢視防火牆狀態
    • systemctl stop firewalld 臨時關閉
    • systemctl disable firewalld 禁止開機啟動
  • /etc/hosts 檔案 儲存主機名與IP地址的對映記錄

  • su 切換到root使用者

  • exit 退出到登入時的使用者

  • :q 退出

  • :q! 強制退出(修改不儲存)

  • :wq 儲存修改退出

  • 進入修改時,按i就會出現inset選項,按esc退出修改

                                         ######**三: vi文字編輯器**#####
    
  • vim是vi的增強版

  • 插入命令

插入命令

  • 定位命令

    定位命令

  • 刪除命令

    • dd:刪除當前行
    • ndd:刪除游標所在當前行向下數n行
    • D:刪除當前行游標所在的位置後面的字元
    • x:向後刪除游標所在位置的字元
    • X:向前刪除游標前面的字元
    • nX:刪除前面的n個字元,游標所在的字元將不會被刪
  • 複製和貼上命令

    • yy或Y:複製當前行
    • nyy或nY:複製以下n行
    • p:在游標後面插入buffer中的內容
    • P:在游標前面插入buffer中的內容
  • 替換和撤銷命令

    • r:取代游標所在處的字元
    • R:從游標所在處開始替換字元,按esc結束
    • u:撤銷上一步操作
    • 定位命令

定位命令

  • 查詢操作

    • :set nu 設定行號
    • :set nonu 取消行號
    • :n 移到第n行
    • :/查詢的關鍵字
  • 替換操作

    • ? /old/new 將當前行中查詢到的第一個字元“old” 串替換為“new”
    • ? /old/new/g 將當前行中查詢到的所有字串“old” 替換為“new”
    • :#,# s/old/new/g 在行號“#,#”範圍內替換所有的字串“old”為“new”
    • :% s/old/new/g 在整個檔案範圍內替換所有的字串“old”為“new”
    • :%s/old/new 查詢檔案中所有行第一次出現的old,替換為new
  • 其他命令

    • :W[檔案路徑]儲存當前檔案
    • :q 如果未對檔案做改動則退出
    • :q! 放棄儲存名退出
    • :wq或:x 儲存退出
  • 可視模式

    • v:可視模式
    • V:可視行模式
    • Ctrl+v:可視塊模式
    • 注意:
      • 在所有可視模式中,d和x鍵可以用刪除選定的內容
      • 在可視塊模式中,選中所需行,按I鍵輸入內容,之後按兩次esc鍵,可在所有選定行游標處新增同樣的內容.

使用者管理命令

  • 使用者管理命令

使用者管理命令

  • 例子含義:建立使用者id為888,所屬組為users,且還指定了組sys,root的使用者zhangsan,其描述為"hr zhang"使用者,設定密碼

    • useradd -u 888 -g users -G sys,root -c “hr zhang” zhangsan

    • passwd zhangsan

      • 命令格式:passwd [選項] <使用者名稱>
    • 常用命令選項

    常用命令選項

  • 修改已有使用者屬性

    • 修改使用者命令:usermod (user modify)
      • -l 修改使用者名稱(login); 例子:usermod -l a b(b改為a)
      • -g 新增組 ;例子:usermod -g sys tom
      • -G 新增多個組 ;例子:usermod -G sys,root tom
      • –L 鎖定使用者賬號密碼(Lock);
      • –U 解鎖使用者賬號(Unlock)
    • 刪除使用者命令:userdel(user delete)
      • -r 刪除賬號時同時刪除目錄(remove)[把使用者的宿主目錄一併刪除]

組命令管理

  • 新增組:groupadd
    • -g 指定gid
  • 修改組:groupmod
    • -n 更改組名(new group)
  • 刪除組: groupdel
  • groups 顯示使用者所屬組
  • 修改使用者組的屬性
    • 命令格式: groupmod [選項] <使用者名稱>
    • 常用命令選項
      • -g: 設定想要使用的GID
      • -o: 使用已經存在的GID
      • -n: 設定想要使用的群組名稱
  • 設定組帳號密碼(極少用),新增/刪除組成員
    • 命令格式:gpasswd [選項] 組帳號名
    • 常用命令選項
      • -a: 向組內新增一個使用者
      • -d: 從組內刪除一個使用者成員
      • -M: 定義組成員列表,以逗號分隔
  • 刪除組賬號
    • 命令格式:groupdel <組賬號名>
    • 注意:只能刪除那些沒有被任何使用者指定為主組的組.
  • 顯示使用者所屬組
    • 命令格式: groups [使用者名稱]

檔案目錄許可權管理

  • 許可權

    • 讀®: 讀取檔案的內容;列出目錄裡的物件
    • 寫(w):允許修改檔案;在目錄裡面新建或者刪除檔案
    • 執行(x):允許執行檔案;允許進入目錄裡
  • 數字許可權

    • 除了用字母rwx來表示許可權,還可以使用3位數字來表 達檔案或目錄的許可權
      • 讀: 4
      • 寫:2
      • 執行:1
  • chmod命令(change mode)

    • 格式
      • chmod [ugoa] [±=] [rwx] file/dir 或 chmod nnn file/dir
    • 引數解釋
      • u:屬主 g:屬組 o:其他使用者 a:所有使用者
      • +:新增許可權 -:刪除許可權 =:賦予許可權
      • nnn:三位八進位制的許可權
    • 常用命令選項
      • -R 遞迴修改指定目錄下的所有子檔案及資料夾的許可權
      • -f 強制改變檔案訪問特權;如果是檔案的擁有者,則得不到任何錯誤資訊
    • 例子: chmod g+w ll.txt
    • 用數字表示許可權(r=4,w=2,x=1,-=0)
      • 例如: chmod 750 b.txt;rwx用二進位制表示是111,十進位制4+2+1=7 ; r-x用二進位制表示是101,十進位制4+0+1=5
  • chown命令

    • 格式:
    • chown 屬主 file/dir
    • chown :屬組 file/dir
    • chown 屬主:屬組 file/dir
    • 常用命令選項
      • -R:遞迴的修改指定目錄下所有檔案,子目錄的歸屬

                                                                       **##四: 可執行檔案查詢#####**
        
  • which命令:顯示系統命令所在目錄

    • 格式:which <選項> command(命令名稱)
    • 常用命令選項
      • -a:將所有由PATH路徑中可以找到的指令均列出,而不止第一個被找到的指令名稱

查詢命令

  • find命令
    • 格式:find <路徑> <選項> [表示式]

    • find查詢的特點

      • 從指定路徑下遞歸向下搜尋檔案
      • 支援按照各種條件方式查詢
      • 支援對查詢到的檔案再進一步的使用指令操作
      • (例如:刪除,統計大小,複製等)
    • 常用命令選項

      • -name 根據檔名查詢
      • -user 根據檔案擁有者查詢
      • -group 根據檔案所屬組尋找檔案
      • -perm 根據檔案許可權查詢檔案
      • -size 根據檔案大小查詢檔案
      • -type 根據檔案型別查詢(f-普通檔案,c-字元裝置檔案,b-塊裝置檔案,l-連結檔案,d-目錄)
      • -o 表示式或
      • -and 表示式與

檔案內容操作命令

  • cat命令:顯示出檔案的全部內容
  • more命令:全屏方式分頁顯示檔案內容
    • 互動操作方法
      • 按Enter鍵向下逐行滾動
      • 按空格鍵向下翻一屏,按b鍵向上翻一屏
      • 按q鍵退出
  • less命令:與more命令相同
  • head命令:檢視檔案開頭的一部分內容(預設為10行)
    • 格式:head -n 檔名
  • tall命令:檢視檔案結尾的少部分內容(預設為10行)
    • 格式:tail -n 檔名
  • wc命令:統計檔案中的單詞數量(Word Count)等資訊
    • 格式:wc [選項] 目標檔案
    • 常用命令選項
      • -l:統計行數
      • -w:統計單詞個數
      • -c:統計位元組數
  • grep命令:統計位元組數
    • 語法:grep [選項] <關鍵字> <檔案…>
    • 常用選項
      • -c:計算匹配關鍵字的行數
      • -i:忽略字元大小寫的差別
      • -n:顯示匹配的行及其行號
      • -s:不顯示不存在或不匹配文字的錯誤資訊
      • -h:查詢多個檔案時不顯示檔名
      • -l:查詢檔案時只顯示匹配字元所在的檔名
      • -color=auto:將找到的關鍵字部分加上顏色顯示

壓縮命令

  • gzip壓縮(解壓)檔案或目錄,壓縮字尾為gz
    • 格式命令:gzip [選項] 壓縮(解壓縮)的檔名
      • -d:將壓縮檔案解壓(decompress)
      • -l:顯示壓縮檔案的大小,未壓縮檔案的大小,壓縮比(list)
      • -v:顯示檔名和壓縮比(verbose)
      • -num:用指定的數字num調整壓縮的速度,-1或–fast表示最快壓縮方法(低壓縮比),-9或–best表示最慢壓縮方法(高壓縮比).系統預設值為6
  • bzip2 壓縮(解壓)檔案或目錄,壓縮檔案字尾為bz2
    • 命令格式:bzip2 [-cdz] 文件名
      • -c:將壓縮的過程產生

                                                       **### 五: sed和awk命令#####**
        

一.sed命令 行操作

格式:sed 選項 動作

選項: -n

動作:

  • a 新增 往下增加
  • i 往上一行新增
  • c 替換 1,5c會將這一塊區域全部替換,不會每行替換
  • d 刪除
  • p 輸出
  • s 替換 經常配合正則進行操作
  • w 寫入 sed ‘w 要被寫入內容的檔案(目標檔案)’ 要讀取內容的檔案(原始檔) 只要用w向檔案中寫入,就會將目標之前的內容全部覆蓋掉
  • r 讀取 sed ‘2r 要讀取的檔案’ 加入資料的檔案(目標檔案)

高階操作

  • | 使用管道符配合其它命令
  • {} 可以讓sed 執行多個命令,只是動作之間要用封號隔開
  • & 替換 在&前面放內容,是在篩選出來的內容前追加;在&後加內容,是在篩選出來的內容後進行追加.
  • 相當於佔位符上的作用,將我們s/查詢條件/ 查詢到的內容,可以在s/查詢條件/要替換的內容進行使用,實現追加的效果
  • \u 轉成大寫可以配合我們的&來實現將匹配的內容轉成大寫的操作
  • ()例子:注意轉義字元,轉移小括號和加號``` sed ‘s/([a-z0-9_-]+)❌([0-9]+)?[0-9]+):.*$/user: \1 userid: \2 groupid: \3/’ passwd
  • 怎麼在sed中獲取分組得到的內容?
    • 首先,分組的序號是從1開始,並且是按照從左到右的順序排的,要獲取使用 \分組序號 來獲取,
    • 例如\1就是個佔位符.

二.awk 行讀取

基本格式:awk 選項 ‘command’ file

格式: awk -F ‘{print NR,$3}’ file

  • NR 行號
  • NF 列數
  • $N 第N列內容
  • 選項:-F 設定分隔符 預設情況下是使用" "[空格]進行的切割

Print

printf

  • ‘{printf(“line:%3s colunm:%s user:%10s userid:%3s\n”,NR,NF,$1,$3)}’
    • 要使用正則:~/正則匹配規則/
    • ‘$1~/^j.*/{printf(“user:%s\n”,$1)}’
    • 如果用!~就是對正則匹配內容取非

擴充套件格式

  • awk 選項 ‘BEGIN{} command END{}’ file
    • 例如:awk -F ‘:’ ‘BEGIN{n=0} {if($3>100) name[n++]=$1} END{for(i=0;i<n;i++) print i,name[i]}’ /etc/passwd

                                       #####**六:   Hadoop安裝和單節點測試**   ######
                                       
       #### hadoop的安裝(前提必須安裝了JDK,檔案路徑都使用的絕對路徑,可以根據自己所在位置適當調整)
      
  • 1.把hadoop安裝包放在虛擬機器內,解壓.我的是在/home/hadoop/tars資料夾下放著,以下會以這個為例.
  • 2.在/etc/profile或者 ~/.bash_profile裡面新增hadoop的路徑
    • 配置之後要執行命令: . ~/.bash_profile或者. /etc/profile,使之生效,配置的哪兒個檔案,就用哪兒個命令.
    • 測試生效的命令是:hadoop

export HADOOP_HOME=/home/hadoop/tars/hadoop-2.7.3 #hadoop解壓包所在路徑 #在PATH變數後面新增如下命令 :HADOOPHOME/bin:HADOOP_HOME/bin:HADOOP_HOME/sbin

#### 單節點測試
- 3.建立一個資料夾,命令是:mkdir kllinput.
- 4.在kllinput資料夾下建立一個kll.txt檔案,命令是:touch kll.txt
- 5.使用命令:vi /home/hadoop/kllinput/kll.txt,進入文字編輯介面,隨意輸入內容.
- 6.執行命令:hadoop jar /home/hadoop/tars/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /home/hadoop/kll/kll.txt /home/hadoop/output
	- 這個命令是利用jar包hadoop-mapreduce-examples-2.7.3.jar裡的wordcount命令統計kll資料夾下的單詞的出現次數.
	- 記得關閉防火牆:systemctl disable firewalld 永久關閉防火牆;systemctl stop firewalld 暫時關閉防火牆,下次啟動,需要再次關閉.
- 7.執行命令:cat output/*
	- 是指檢視6的命令的執行結果.







  
                                                                  ####****七:  Hadoop偽分散式安裝步驟**####
                                                                  
 #### 1.建立使用者
#### 2.使用新建立的使用者連線到虛擬機器
#### 3.防火牆關閉 
- (1)systemctl disable firewalld 
- (2)systemctl status firewalld
#### 4.JDK
- (1)下載
- (2)上傳
- (3)解壓、改名
- (4)配置環境變數
#### 5.hadoop配置
- (1)下載hadoop包
- (2)上傳
- (3)解壓,改名
- (4)配置環境變數(bin\sbin)
#### 6.配置hadoop中幾個檔案
- (1)hadoop-env.sh 
	- ①($JAVA_HOME路徑設定成JDK解壓包的路徑)
- (2)core-site.xml
	- ①fs.defaultFS:
		- 1)預設是本地檔案系統file:///
		- 2)使用URL統一資源定位符的格式設定成hdfs://本機的ip地址(實質是namenode的ip):9000
			- 類比:jdbc:mysql://localhost:3306
	- ②hadoop.tmp.dir:存放hadoop臨時檔案的檔案目錄
	- ③程式碼如下(是放在<configuration>標籤內的):``
	<property>  
        <name>hadoop.tmp.dir</name> //存放臨時檔案 
        <value>/home/hadoop/tmp</value>// 存放路徑
    </property>  
    <property>  
        <name>fs.defaultFS</name>  
        <value>hdfs://172.18.24.28:9000</value>  
    </property>
  • (3)hdfs-site.xml:
    • ①dfs.namenode.name.dir:namenode所在路徑(該路徑需要允許當前登入的使用者具有寫的許可權)
    • ②dfs.datanode.data.dir:datanode所在路徑(該路徑需要允許當前登入的使用者具有寫的許可權)
    • ③程式碼如下:
        <name>dfs.replication</name>//設定備份(可暫時刪除)    
        <value>1</value>    
    </property>    
    <property>    
        <name>hdfs.namenode.name.dir</name>    
        <value>file:/home/hadoop/dfs/name</value>    
    </property>    
    <property>    
        <name>dfs.datanode.data.dir</name>    
        <value>file:/home/hadoop/dfs/data</value>    
    </property>
  • (4)yarn-site.xml
    • ①yarn.nodemanager.aux-services:使用mapreduce_shuffle機制
    • ②程式碼如下:` mapreduce.framework.name yarn yarn.nodemanager.aux-services mapreduce_shuffle
- (5)mapred-site.xml(cp mapred-site.xml.templete mapred-site.xml[備份一份,在備份裡面寫,這樣模板被儲存,以後好修改])
	- ①Mapreduce.framework.name:yarn
	- ②程式碼如下:`
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
	</property>

7.格式化HDFS

  • (1)Hadoop namenode -format
    • 格式化成功的標誌:Storage:…successfully

8.啟動HADOOP服務

9.關閉hadoop服務

埠程序查詢和結束

  • 檢視佔用埠的程序命令如下:`` netstat -tunlp|grep (埠號|java)

  • kill -9 程序號 通過殺死程序來釋放埠,解決端口占用問題.

                                ###**八:Hadoop完全分散式配置步驟**###   
    

1.xshell上的傳送鍵輸入的所有會話的功能的使用

  • ①建立三個新的虛擬機器,全部用xsheel開啟,三個虛擬機器都要建立hadoop使用者,且在其根目錄下,放入jdk和hadoop壓縮包.
  • ②右鍵,選擇傳送鍵輸入的所有會話,在其中一個虛擬機器中解壓jdkhadop.其他兩個虛擬機器會自動同步.
  • ③配置好jdk和hadoop環境 ④使用scp命令把之前配好的偽分散式的5個.xml檔案的內容傳送到現在的三個新建虛擬機器中.

格式:scp 要傳輸的內容 要傳到的電腦的使用者名稱@要傳到的電腦的IP:要傳到的這臺電腦的位置 例如: scp -r /home/tars/hadoop-2.7.3/etc/hadoop [email protected]:/home/tars/hadoop-2.7.3/etc/hadoop 要傳的內容是之前偽分散式配置好的hadoop解壓包下的etc資料夾下的hadoop資料夾 要傳到的是hadoop使用者,ip是172.18.24.190. 要注意許可權,如果許可權都是root,使用chown -R hadoop:hadoop /home/tars/hadoop-2.7.3/etc/hadoop命令把兩個hadoop檔案許可權全部改成hadoop使用者,或者使用su許可權 重複命令,注意ip地址,把剩餘兩臺虛擬機器的hadoop的檔案替換掉.

注意:新建的三個虛擬機器是當做datanode使用的,之前建立的偽分散式當做namedata,以上操作其實主要是jdk和hadoop環境配置,以及把namenode同步配置在datanode上.這裡就不需要進行格式化了,格式化是針對namenode進行的

2.在hadoop解壓包的etc下的hadoop資料夾下的slaves檔案里加入新建的三個虛擬機器的IP地址(是為把datanode寫進去進行註冊)

3.免密操作(都是在namenode上操作)

  • ①註冊命令是:ssh-keygen(獲取註冊碼,遇到寫密碼的地方直接回車,是為了在啟動關閉時不需要密碼)
  • ②執行命令:ssh-copy-id [email protected] (語句執行三次,每次的IP地址寫新建的三個虛擬機器的地址)
  • ③執行名:cat id_dsa.pub >> ~/.ssh/authorized_keys(將.pub檔案複製到 .ssh 目錄上)
  • ④檢視正常加入的datanode的命令:hdfs dfsadmin -report

3.在網頁上登入namenode,發現datanode沒有正常加入到namenode上的解決方法

  • 找到datanode虛擬機器的hadoop的解壓包下的logs資料夾下的namenode的log檔案開啟,會發現hostname的錯誤.這時,在namenode的/etc/hosts檔案中新增三個datanode和namenode虛擬機器的ip和對應給他取個名字即可.
    • 例如: 172.18.24.190 datanode1
    • 172.18.24.28 namenode