填空
大數(shù)據(jù)時代對數(shù)據(jù)存儲的挑戰(zhàn)包括高并發(fā)讀寫需求、高效率存儲和訪問需求、高擴展性。
NoSQL是Not Only SQL的縮寫,它的含義為“不僅僅是SQL”。
NoSQL是一種非關系型、分布式、不遵循ACID、不提供SQL功能的數(shù)據(jù)庫。
NoSQL理論的基礎是由CPA原則、BASE理論以及最終一致性奠定的。
NoSQL數(shù)據(jù)庫主要有四大類型,鍵值對存儲數(shù)據(jù)庫、文檔存儲數(shù)據(jù)庫、列式存儲數(shù)據(jù)庫及圖形存儲數(shù)據(jù)庫。
當前NoSQL數(shù)據(jù)庫產(chǎn)品中最熱門的一種數(shù)據(jù)庫是MangoDB。
MongoDB是由C++語言編寫的。
MongoDB是一個面向集合、模式自由的文檔型數(shù)據(jù)庫。
MongoDB的設計采用橫向擴展,可通過分片將數(shù)據(jù)分布在集群機器中。
MongoDB的邏輯結構是體系結構的一種形式。
MongoDB是一個開源、跨平臺的數(shù)據(jù)庫。
Mangod.exe程序用于啟動MongoDB服務器。
MongoDB服務的端口號是27017。
聚合管道是使用不同的管道階段操作器進行不同聚合操作。
MongoDB提供Map-Reduce操作來進行聚合操作。
鍵值對存儲數(shù)據(jù)庫是最簡單的NoSQL數(shù)據(jù)庫。
Redis數(shù)據(jù)庫是基于ANSI C語言編寫開發(fā)的。
Redis數(shù)據(jù)庫提供了多種數(shù)據(jù)結構,其中最常見的數(shù)據(jù)結構有String、List、Set、Hash、Sorted Sets。
String字符串是Redis中最基本也是最簡單的數(shù)據(jù)結構。
Set集合由不重復且無序的字符串元素組成的。
HBase是一個高可靠性、高性能、面向列、可伸縮的分布式數(shù)據(jù)庫。
HBase是構建在HDFS文件系統(tǒng)之上,并為HBase提供了高可靠的底層存儲支持。
當MemStore存儲的數(shù)據(jù)達到一個閥值時,MemStore里面的數(shù)據(jù)就會被flush到StoreFile文件,這個閾值默認是128MB。
圖形存儲數(shù)據(jù)庫也是NoSQL數(shù)據(jù)庫的一種類型。
Neo4j公司從2003年開始研發(fā)Neo4j數(shù)據(jù)庫。
實體被視為圖形的節(jié)點,關系被視為圖形的“邊”。
Neo4j數(shù)據(jù)庫使用的查詢語言是Cypher。
Neo4j數(shù)據(jù)庫可以運行在Windows、Linux、Mac OS等多個平臺上。
大數(shù)據(jù)的4V特征包含大量、多樣、高速、價值。
Hadoop三大組件包含HDFS、MapReduce、Yarn。
Hadoop2.x版本中的HDFS是由NameNode、DataNode、Secondary NameNode組成。
Hadoop發(fā)行版本分為開源社區(qū)版、商業(yè)版。
目前Apache Hadoop發(fā)布的版本主要有Hadoop1.x、Hadoop2.x、Hadoop3.x。
Hadoop集群部署方式分別是獨立模式、偽分布模式和完全分布模式。
加載環(huán)境變量配置文件需要使用source/etc/profile命令。
格式化HDFS集群命令是hadoop namenode-format。
腳本一鍵啟動Hadoop集群服務命令是start-all.sh。
Hadoop默認開設HDFS文件系統(tǒng)端口號50070和監(jiān)控Yarn集群端口號8088。
NameNode用于維護文件系統(tǒng)名稱并管理客戶端對文件的訪問,DataNode存儲真實的數(shù)據(jù)塊。
NameNode與DataNode通過心跳檢測機制互相通信。
NameNode以元數(shù)據(jù)形式維護著fsimage、EditLog文件。
在MapReduce中,Map階段負責將任務分解,Reduce階段將任務合并。
MapReduce工作流程分為分片、格式化數(shù)據(jù)源、執(zhí)行MapTask、執(zhí)行Shuffle過程、寫入文件。
Partitioner組件目的是將Key均勻分布在ReduceTask上。
Zookeeper集群主要有Leader、Follower、Observer三種角色。
Znode有兩種節(jié)點,分別是永久節(jié)點、臨時節(jié)點。
Zookeeper引入Watch機制實現(xiàn)分布式的通知功能。
System類中所提供的屬性和方法都是靜態(tài)的,想要引用這些屬性和方法,直接使用System類調(diào)用即可。
已知 sb?為 StringBuffer?的一個實例,且 sb.toString()?的值為 "abcde ",則執(zhí)行sb. reverse()后,sb.toString()的值為edcba。
Yarn的核心組件包含ResourceManager、NodeManager、ApplicationMaster。
ResourceManager內(nèi)部包含了兩個組件,分別是調(diào)度器(Scheduler)和應用程序管理器(Application Manager)。
數(shù)據(jù)倉庫是面向主題的、集成的、非易失的和時變的數(shù)據(jù)集合,用于支持管理決策。
Hive默認元數(shù)據(jù)存儲在Derby數(shù)據(jù)庫中。
Hive建表時設置分割字符命令row format delimited fields terminated by char
Hive查詢語句select ceil(2.34)輸出內(nèi)容是3。
Hive創(chuàng)建桶表關鍵字clustered by,且Hive默認分桶數(shù)量是-1。
Flume分為兩個版本,分別是Flume-og、Flume-ng。
Flume的核心是把數(shù)據(jù)從數(shù)據(jù)源通過數(shù)據(jù)收集器(Source)收集過來,再將收集的數(shù)據(jù)通過緩沖通道(Channel)匯集到指定的接收器(Sink)。
Flume采用三層架構,分別為agent、collector、storage,每一層均可以水平擴展。
Flume的負載均衡接收器處理器支持使用round_robin(輪詢)、random(隨機)機制進行流量分配,其默認選擇機制為round_robin。
Azkaban是由Linkedin公司開源的一個批量工作流任務調(diào)度器,用于在一個工作流內(nèi)以一個特定的順序運行一組工作和流程。
Azkaban定義了一種KV文件格式來建立任務之間的依賴關系,并提供一個易于使用的UI界面維護和跟蹤工作流。
Azkaban工作流管理器的特點是所有的任務資源文件都需要打成一個zip包上傳。
Azkaban工作流管理器由三個核心部分組成,具體分別是Relational Database、Azkaban WebServer、AzkabanExecutorServer、。
Azkaban提供三種部署模式:輕量級的獨立服務器模式、重量級雙服務器模式的和分布式多執(zhí)行器模式。
Sqoop主要用于在Hadoop和關系型數(shù)據(jù)庫之間進行傳輸數(shù)據(jù)。
Sqoop底層利用MapReduce技術以批處理方式加快了數(shù)據(jù)傳輸速度,并且具有較好的容錯性功能。
從數(shù)據(jù)庫導入HDFS時,指定以制表符作為字段分隔符參數(shù)是--fields-terminated-by’\t’。