1. 程式人生 > >Hadoop的HDFS介紹和操作

Hadoop的HDFS介紹和操作

一、HDFS概述

        HDFS(Hadoop Distributed File System):分散式檔案系統

二、操作HDFS

        1、通過Web Console:50070、50090

        2、命令列

            (1)操作命令 hdfs dfs ****

                    -mkdir 建立目錄

                     舉例:hdfs dfs -mkdir /aaa

                                hdfs dfs -mkdir -p /bbb/ccc      -p表示如果父目錄不存在 則先建立父目錄

                    -ls    檢視某個目錄

                    -ls -R 檢視某個目錄,包括子目錄,簡寫:-lsr

                    -put  上傳資料    hdfs dfs -put data.txt /input

                    -copyFromLocal 上傳資料     hdfs dfs -copyFromLocal data.txt /input

                    -moveFromLocal 上傳資料(相當於ctrl + x 剪下)

                    -copyToLocal    下載資料

                    -get        下載資料

                    -rm 刪除目錄

                    -rm -r 刪除目錄(遞迴刪除包括子目錄)簡寫 -rmr

                            hdfs dfs -rmr /tools        

開啟回收站後刪除日誌對比:

        未開啟回收站刪除日誌:

rmr: DEPRECATED: Please use 'rm -r' instead.
開啟回收站日誌:
18/04/09 21:35:40 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes.
Deleted /tools ---> 成功刪除(對比:回收站)

                    -getmerge    把某個目錄下的檔案先合併,再下載(提高效率)

                        [[email protected] temp]# vi student01.txt
[[email protected] temp]# vi student02.txt
[[email protected] temp]# hdfs dfs -mkdir /students
[[email protected] temp]# hdfs dfs -put student0*.txt /students
[[email protected] temp]# hdfs dfs -ls /students

[[email protected] temp]# hdfs dfs -getmerge /students ~/temp/allstudent.txt

                    -cp    複製檔案    hdfs dfs -cp /input/data.txt /input/data2.txt

                    -mv    移動檔案    hdfs dfs -cp /input/data.txt /students

                    -count: hdfs dfs -count /students

                                     1                    2                29                        /students

                                目錄個數        檔案個數        檔案總計大小        輸入路徑

                    -du 每個檔案的大小

                        [[email protected] temp]# hdfs dfs -du /students
19  /students/student01.txt

10  /students/student02.txt

                   -text、-cat     檢視檔案內容

                        hdfs dfs -cat /students/student01.txt

                    balancer:平衡操作

            (2)管理命令    hdfs dfsadmin ****

                    -report : 輸出HDFS的報告(Summary)

                    -safemode:安全模式

                     [[email protected] temp]# hdfs dfsadmin -safemode
Usage: hdfs dfsadmin [-safemode enter | leave | get | wait]
[[email protected] temp]# hdfs dfsadmin -safemode get
Safe mode is OFF
[[email protected] temp]# hdfs dfsadmin -safemode enter
Safe mode is ON
[[email protected] temp]# hdfs dfs -mkdir /aaaa
mkdir: Cannot create directory /aaaa. Name node is in safe mode.
[[email protected] temp]# hdfs dfsadmin -safemode leave
Safe mode is OFF

         3、Java程式

                    依賴的jar包:

                        $HADOOP_HOME/share/hadoop/common/*.jar
$HADOOP_HOME/share/hadoop/common/lib/*.jar
$HADOOP_HOME/share/hadoop/hdfs/*.jar

$HADOOP_HOME/share/hadoop/hdfs/lib/*.jar

                (1)建立一個目錄和HDFS的許可權

                        mkdir

                            程式裡建立檔案的時候可能會有許可權限制,可以通過以下方式解決

                            /*
                             *  四種方式,執行程式:
                             *  1、設定一個屬性
                             *  2、使用-D引數
                             *  3、改變目錄的許可權  hdfs dfs -chmod 777 /folder2
                             *  4、dfs.permissions  ---> false  禁用HDFS的許可權檢查功能

                             */

                        <!--是否開啟HDFS的許可權檢查,預設true-->
<property>
   <name>dfs.permissions</name>
   <value>false</value>
</property>

                (2)上傳資料、下載資料

                (3)獲取元資訊

三、HDFS原理解析(畫圖)------>非常重要

       NameNode快取元資訊,預設:1000M

        hadoop-env.sh    改變引數設定

        # The maximum amount of heap to use, in MB. Default is 1000.
#export HADOOP_HEAPSIZE=

#export HADOOP_NAMENODE_INIT_HEAPSIZE=""

        如果記憶體崩潰,會使用日誌進行恢復

        1、資料上傳的過程(原理)

            

        2、資料下載的過程(原理)


四、HDFS的高階功能
1、回收站
補充:Oracle的回收站
恢復:閃回(flashback)
(1) 閃回表  flashback table
(2) 閃回刪除  flashback drop
(3) 閃回查詢 flashback query
(4) 閃回事務查詢 flashback transaction query   -----> 可以撤銷一個已經提交了的事務
(5) 閃回資料庫 flashback database 
(6) 閃回版本查詢 flashback verion query
(7) 閃回資料歸檔  flashback data archive

HDFS的回收站:預設禁用
引數: core-site.xml 
單位:分鐘
<property>
   <name>fs.trash.interval</name>
   <value>1440</value>
</property>
沒有回收站
日誌:
18/04/09 21:35:40 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes.
Deleted /tools ---> 成功刪除(對比:回收站)
回收站
Moved:'hdfs://bigdata111:9000/tools/a.zip'to trash at: hdfs://bigdata111:9000/user/root/.Trash/Current

HDFS回收站的本質:ctrl +x 移動到一個隱藏目錄
查看回收站
 hdfs dfs -lsr /user/root/.Trash/Current
從回收站中恢復
hdfs dfs -cp /user/root/.Trash/Current/tools/a.zip /tools
                [-expunge] 清空回收站
2、快照:snapshot(是一種備份)
本質:cp命令
管理命令
                [-allowSnapshot <snapshotDir>]
                [-disallowSnapshot <snapshotDir>]
操作命令
                [-createSnapshot <snapshotDir> [<snapshotName>]]
                [-deleteSnapshot <snapshotDir> <snapshotName>]
                [-renameSnapshot <snapshotDir> <oldName> <newName>]

(*) 預設禁用
(*) 針對目錄開啟快照
hdfs dfsadmin -allowSnapshot /students
(*) 建立一個備份
hdfs dfs -createSnapshot /students backup_student_0411_01

日誌:Created snapshot /students/.snapshot/backup_student_0411_01

hdfs dfs -put student03.txt /students
hdfs dfs -createSnapshot /students backup_student_0411_02

(*) 對比快照
hdfs snapshotDiff /students backup_student_0411_01 backup_student_0411_02
M       .
+       ./student03.txt

hdfs lsSnapshottableDir
通過網頁檢視

(*)恢復快照
                hdfs dfs -cp /input/.snapshot/backup_input_01/data.txt /input
補充:Oracle資料庫快照: 一般做非同步更新
create snapshot aaaa as 子查詢 更新時間

Oracle資料庫備份
exp、expdp、資料泵 ----> 邏輯備份 匯出資料
rman: recovery manager
3、配額(quota)
(1)名稱配額: 限制某個目錄下,檔案的個數
[-setQuota <quota> <dirname>...<dirname>]
[-clrQuota <dirname>...<dirname>]

hdfs dfs -mkdir /folder1

hdfs dfsadmin -setQuota 3 /folder1

實際是:N-1
(2)空間配額: 限制某個目錄下,檔案的大小
[-setSpaceQuota <quota> [-storageType <storagetype>] <dirname>...<dirname>]
[-clrSpaceQuota [-storageType <storagetype>] <dirname>...<dirname>]

hdfs dfs -mkdir /folder2

設定空間配額:1M
hdfs dfsadmin -setSpaceQuota 1M /folder2

錯誤:
The DiskSpace quota of /folder2 is exceeded: quota = 1048576 B = 1 MB but diskspace consumed = 134217728 B = 128 MB

注意:設定的值一定不能小於128M

4、安全模式:safemode
(*)HDFS啟動的過程中,經歷安全模式
(*)參考講義:P23

5、簡介:HDFS的叢集
(1)聯盟Federation
(2)HA(高可用性 high availability)
                  

五、HDFS的底層原理
1、代理物件:Java Proxy
(*)來源:客戶端得到的是NameNodeProxies(NameNode代理物件)

(*)是包裝設計模式,用來增強類或者方法的功能

                    

(*)代理物件的應用場景:資料庫的連線池(JDBC)
(1) BDCP
(2) C3P0

(*)搭建MySQL資料庫
  tar -xvf mysql-5.7.19-1.el7.x86_64.rpm-bundle.tar

在虛擬機器上安裝MySQL:
yum remove mysql-libs 
rpm -ivh mysql-community-common-5.7.19-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.19-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.19-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.19-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-5.7.19-1.el7.x86_64.rpm  (可選)

啟動MySQL:service mysqld start
或者:systemctl start mysqld.service
檢視root使用者的密碼:cat /var/log/mysqld.log | grep password
登入後修改密碼:alter user 'root'@'localhost' identified by 'Welcome_1';
MySQL資料庫的配置:
建立一個新的資料庫:create database hive;
建立一個新的使用者:
create user 'hiveowner'@'%' identified by 'Welcome_1';
給該使用者授權
grant all on hive.* TO 'hiveowner'@'%'; 
grant all on hive.* TO 'hiveowner'@'localhost' identified by 'Welcome_1';
   
2、什麼是RPC? remote procedure call 遠端過程呼叫(協議)

                

相關推薦

Docker基本介紹操作

後臺 掛載點 遷移 layer 其中 for 時間 自啟動 exe Docker基本介紹和操作 Docker基本介紹 什麽是Docker Docker 最初是 dotCloud 公司創始人 Solomon Hykes 在法國期間發起的一個公司內部項目,它是基於 dotClo

Nosql-redis介紹操作

技術的分類 解決功能性的問題:Java、Jsp、 RDBMS Tomcat、HTML、Linux、 Jdbc、SVN 解決擴充套件性的問題:Struts、Spring、SpringMVC、Hibernate、Mybatis 解決效能的問題:NoSQL、Java執行緒、H

關於資料庫的介紹操作 -- sqlite3

資料庫 -- sqlite3 一、資料庫的定義 資料庫是一個有結構、有集合、可共享的統一管理的資料集合。DataBase:簡稱DB。 二、資料庫的特點 1.  實現資料共享 資料共享包含所有使用者可同

Hadoop的HDFS介紹操作

一、HDFS概述        HDFS(Hadoop Distributed File System):分散式檔案系統二、操作HDFS        1、通過Web Console:50070、50090        2、命令列            (1)操作命令 hd

python關於bs4的介紹操作

Python中bs4庫的介紹和使用 1.bs4的介紹:    bs4是一個可以從HTML或XML檔案中提取資料並且對於HTML/XML資料的篩選的Python庫. 可以很好的分析和篩選HTML/XML這樣的標記文件中的指定規則資料在資料篩選過程中其基礎技術是通過

2020了你還不會Java8新特性?方法引用詳解及Stream 流介紹操作方式詳解(三)

方法引用詳解 方法引用: method reference 方法引用實際上是Lambda表示式的一種語法糖 我們可以將方法引用看作是一個「函式指標」,function pointer 方法引用共分為4類: 類名::靜態方法名 引用名(物件名)::例項方法名 類名::例項方法名 (比較不好理解,個地方呼叫的方

HTML5的自定義屬性data-*詳細介紹JS操作實例

select 文章 red data scrip style box 實例 width 這篇文章主要介紹JS操作HTML自定義屬性的方法, 以實例形式分析了html中自定義屬性的設置與對應的javascript操作技巧 具體如下: HTML代碼如下(其中的d

linux中關於文件系統的簡要介紹一般操作

e2fs 並且 查詢 特殊權限 防止 nodes point 改變 標準 創建文件系統——分區格式化 格式化: 低級格式化: 劃分磁道 高級格式化: 創建文件系統,按照某種特定的標準,將整個分區劃

6月20日 Django中ORM介紹字段、字段參數、相關操作

sel 記憶 __init__ 記錄 RM 錯誤 distinct serial 排序。 Object Relational Mapping(ORM) ORM介紹 ORM概念 對象關系映射(Object Relational Mapp

vivim編譯器基本介紹操作

一、基本介紹 所有的Linux系統都會內建vi文字編輯器 vim可以看作是vi的增強版,可以主動的以字型顏色辨別語法的正確性,方便程式設計。程式碼不全、編譯及錯誤跳轉等方便程式設計的功能特別豐富。 二、vi和vim的三種常見模式 a.一般模式    在此模式下

ORM基礎之ORM介紹基礎操作

一、ORM介紹 1、ORM概念 物件關係對映(Object Relational Mapping,簡稱ORM)模式是一種為了解決面向物件與關係資料庫存在的互不匹配的現象的技術。 簡單的說,ORM是通過使用描述物件和資料庫之間對映的元資料,將程式中的物件自動持久化到關係

Flume的介紹簡單操作

Flume是什麼 Flume是Cloudera提供的一個高可用的,高可靠的,分散式的海量日誌採集、聚合和傳輸的系統,Flume支援在日誌系統中定製各類資料傳送方,用於收集資料;同時,Flume提供對資料進行簡單處理,並寫到各種資料接受方(可定製)的能力。 F

JavaScript基礎DOM介紹常用操作(5)

day53 參考:https://www.cnblogs.com/liwenzhou/p/8011504.html JavaScript引入方式   location物件 window.location 物件用於獲得當前頁面的地址 (URL),並把瀏覽器重定向到新的頁面。 常用屬性和

redis資料庫介紹常用操作

一、redis介紹 Redis是一個速度非常快的非關係資料庫,它可以儲存鍵(key)與5種不同型別的值(value)之間的對映(mapping),可以將儲存在記憶體的鍵值對資料持久化到硬碟,可以使用複製特性來擴充套件讀效能,還可以使用客戶端分片來擴充套件寫

PDO進行sql語句預處理操作結果集詳細介紹(二)

<span style="font-size:18px;">一:預處理語句及其繫結引數執行insert try { $pdo=new PDO("mysql:host=localhost;dbname=xsphpdb", "root", "123

[python爬蟲] Selenium常見元素定位方法操作的學習介紹

        這篇文章主要Selenium+Python自動測試或爬蟲中的常見定位方法、滑鼠操作、鍵盤操作介紹, 一. 定位元素方法 find_element_by_idfind_element_by_namefind_element_by_xpathfind_ele

Cassandra介紹一些常用操作

Cassandra是一個高可靠的大規模分散式儲存系統。高度可伸縮的、一致的、分散式的結構化key-value儲存方案,集Google BigTable的資料模型與Amazon Dynamo的完全分散式的架構於一身。Cassandra使用了Google BigTa

opencv3.1自帶demo的介紹執行操作

3calibration.cpp 三個相機的標定,沒有三個相機,所以沒測試 autofocus.cpp 自動對焦,沒有這種相機,沒測試 bgfg_segm.cpp   混合高斯模型的前景背景分割 camshiftdemo.cpp camshift跟蹤,預設開啟攝像頭,滑鼠選中一個物體即可跟蹤 calibrat

JNI資料型別轉換JNIEnv的介紹操作jobject,以及jstring的介紹

摘錄、參考文件: 1.深入理解Android:卷1 作者:鄧凡平 上一章,講了關於JNI註冊的相關知識; 這一章講的內容比較多,主要是以下幾方面的內容: 1)java與JNI之間的資料型別轉換; 2)JNIEnv的介紹; 3)JNIEnv的使用,如何操作jobject;

opencv3.1自帶demo的介紹執行操作

下列實驗基本都試過,有些需要根據自己的電腦修改一些路徑或者除錯引數.        值得注意的是,控制檯程式輸入有時候要在影象所在的視窗輸入相應的指令。我的電腦上安裝了vs2013和2015. vs2015+opencv3.1/2.4.9在我的電腦上經常有這個錯誤:xx