hadoop原理和細(xì)節(jié)

一敌呈、Hadoop概述

Hadoop是Google的集群系統(tǒng)開源實(shí)現(xiàn)

Google的集群系統(tǒng):GFS、MapReduce、BigTable

Hadoop的集群系統(tǒng):HDFS称鳞、MapReduce苍糠、HBase

Hadoop設(shè)計(jì)的初衷是為了解決Nutch的海量數(shù)據(jù)存儲(chǔ)和處理的需求叁丧,可以解決大數(shù)據(jù)場景下的數(shù)據(jù)存儲(chǔ)和處理的問題。

傳統(tǒng)數(shù)據(jù):GB岳瞭、TB級別的數(shù)據(jù)拥娄、數(shù)據(jù)增長不快、主要為結(jié)構(gòu)化的數(shù)據(jù)瞳筏、統(tǒng)計(jì)和報(bào)表

大數(shù)據(jù):TB稚瘾、PB級別的數(shù)據(jù)、持續(xù)的高速增長姚炕、半結(jié)構(gòu)化摊欠、非結(jié)構(gòu)化的數(shù)據(jù)、數(shù)據(jù)挖掘和預(yù)測性分析钻心、海量數(shù)據(jù)的獲取凄硼、存儲(chǔ)、聚合捷沸、管理這些數(shù)據(jù)以及對數(shù)據(jù)進(jìn)行深度分析的新技術(shù)和新能力摊沉。

**名字的起源: Doug Cutting如此解釋Hadoop的得名:"這個(gè)名字是我孩子給一頭吃飽了的棕黃色大象命名的。我的命名標(biāo)準(zhǔn)就是簡短痒给,容易發(fā)音和拼寫说墨,沒有太多的意義,并且不會(huì)被用于別處苍柏。小孩子是這方面的高手尼斧。Googol就是由小孩命名的。"

組成:HDFS MapReduce Yarn

二试吁、Hadoop版本 下載安裝

1.下載

下載地址:http://hadoop.apache.org/releases.html

**Apache Hadoop版本分為兩代棺棵,我們將第一代Hadoop稱為Hadoop 1.0楼咳,第二代Hadoop稱為Hadoop 2.0。第一代Hadoop包含三個(gè)大版本烛恤,分別是0.20.x母怜,0.21.x和0.22.x,其中缚柏,0.20.x最后演化成1.0.x苹熏,變成了穩(wěn)定版,而0.21.x和0.22.x則NameNode HA等新的重大特性币喧。第二代Hadoop包含兩個(gè)版本轨域,分別是0.23.x和2.x,它們完全不同于Hadoop 1.0杀餐,是一套全新的架構(gòu)干发,均包含HDFS Federation和YARN兩個(gè)系統(tǒng),相比于0.23.x怜浅,2.x增加了NameNode HA和Wire-compatibility兩個(gè)重大特性

2.安裝

Hadoop的安裝分為單機(jī)方式铐然、偽分布式方式 和 完全分布式方式蔬崩。

單機(jī)模式是Hadoop的默認(rèn)模式恶座。當(dāng)首次解壓Hadoop的源碼包時(shí),Hadoop無法了解硬件安裝環(huán)境沥阳,便保守地選擇了最小配置跨琳。在這種默認(rèn)模式下所有3個(gè)XML文件均為空。當(dāng)配置文件為空時(shí)桐罕,Hadoop會(huì)完全運(yùn)行在本地脉让。因?yàn)椴恍枰c其他節(jié)點(diǎn)交互,單機(jī)模式就不使用HDFS功炮,也不加載任何Hadoop的守護(hù)進(jìn)程溅潜。該模式主要用于開發(fā)調(diào)試MapReduce程序的應(yīng)用邏輯。

偽分布模式:Hadoop守護(hù)進(jìn)程運(yùn)行在本地機(jī)器上薪伏,模擬一個(gè)小規(guī)模的的集群滚澜。可以使用HDFS和MapReduce

全分布模式:Hadoop守護(hù)進(jìn)程運(yùn)行在一個(gè)集群上

二嫁怀、HDFS的特點(diǎn)

1.HDFS概述(HDFS架構(gòu)圖):


HDFS為了保證數(shù)據(jù)存儲(chǔ)的可靠性和讀取性能设捐,對數(shù)據(jù)進(jìn)行切塊后進(jìn)行復(fù)制并存儲(chǔ)在集群的多個(gè)節(jié)點(diǎn)中。

HDFS中存在一個(gè)名字節(jié)點(diǎn)NameNode和多個(gè)數(shù)據(jù)節(jié)點(diǎn)DataNode

NameNode:存儲(chǔ)元數(shù)據(jù)信息塘淑、元數(shù)據(jù)保存在內(nèi)存/磁盤中萝招、保存文件、block存捺、datanode之間的映射關(guān)系

DataNode:存儲(chǔ)block內(nèi)容槐沼、存儲(chǔ)在磁盤中、維護(hù)了block id到文件的映射關(guān)系

2.HDFS優(yōu)點(diǎn)

支持超大文件:

支持超大文件。超大文件在這里指的是幾百M(fèi)岗钩,幾百GB逸爵,甚至幾TB大小的文件。一般來說hadoop的文件系統(tǒng)會(huì)存儲(chǔ)TB級別或者PB級別的數(shù)據(jù)凹嘲。所以在企業(yè)的應(yīng)用中师倔,數(shù)據(jù)節(jié)點(diǎn)有可能有上千個(gè)。

檢測和快速應(yīng)對硬件故障:

在集群的環(huán)境中周蹭,硬件故障是常見的問題趋艘。因?yàn)橛猩锨_(tái)服務(wù)器連接在一起,這樣會(huì)導(dǎo)致高故障率凶朗。因此故障檢測和自動(dòng)恢復(fù)是hdfs文件系統(tǒng)的一個(gè)設(shè)計(jì)目標(biāo)瓷胧。

流式數(shù)據(jù)訪問:

Hdfs的數(shù)據(jù)處理規(guī)模比較大,應(yīng)用一次需要訪問大量的數(shù)據(jù)棚愤,同時(shí)這些應(yīng)用一般都是批量處理搓萧,而不是用戶交互式處理。應(yīng)用程序能以流的形式訪問數(shù)據(jù)集宛畦。主要的是數(shù)據(jù)的吞吐量瘸洛,而不是訪問速度。

簡化的一致性模型:

大部分hdfs操作文件時(shí)次和,需要一次寫入反肋,多次讀取。在hdfs中踏施,一個(gè)文件一旦經(jīng)過創(chuàng)建石蔗、寫入、關(guān)閉后畅形,一般就不需要修改了养距。這樣簡單的一致性模型,有利于提高吞吐量日熬。

高容錯(cuò)性:

數(shù)據(jù)自動(dòng)保存多個(gè)副本棍厌,副本丟失后自動(dòng)恢復(fù)

可構(gòu)建在廉價(jià)機(jī)器上:

構(gòu)建在廉價(jià)機(jī)器上可以輕松的通過擴(kuò)展機(jī)器數(shù)量來近乎線性的提高集群存儲(chǔ)能力

3.HDFS缺點(diǎn)

低延遲數(shù)據(jù)訪問:

低延遲數(shù)據(jù)。如和用戶進(jìn)行交互的應(yīng)用碍遍,需要數(shù)據(jù)在毫秒或秒的范圍內(nèi)得到響應(yīng)定铜。由于hadoop針對高數(shù)據(jù)吞吐量做了優(yōu)化,犧牲了獲取數(shù)據(jù)的延遲怕敬,所以對于低延遲來說揣炕,不適合用hadoop來做。

大量的小文件:

Hdfs支持超大的文件东跪,是通過數(shù)據(jù)分布在數(shù)據(jù)節(jié)點(diǎn)畸陡,數(shù)據(jù)的元數(shù)據(jù)保存在名字節(jié)點(diǎn)上鹰溜。名字節(jié)點(diǎn)的內(nèi)存大小,決定了hdfs文件系統(tǒng)可保存的文件數(shù)量丁恭。雖然現(xiàn)在的系統(tǒng)內(nèi)存都比較大曹动,但大量的小文件還是會(huì)影響名字節(jié)點(diǎn)的性能。

多用戶寫入文件牲览、修改文件:

Hdfs的文件只能有一次寫入墓陈,不支持修改和追加寫入(2.0版本支持追加),也不支持修改第献。只有這樣數(shù)據(jù)的吞吐量才能大贡必。


三、HDFS技術(shù)細(xì)節(jié)

1.Block

最基本的存儲(chǔ)單位庸毫。

在HDFS中仔拟,有一個(gè)特別重要的概念:數(shù)據(jù)塊(Block)。前面介紹到飒赃,在HDFS中存儲(chǔ)的文件都是超大數(shù)據(jù)的文件利花,我們可以把這個(gè)超大規(guī)模的文件以一個(gè)標(biāo)準(zhǔn)切分成幾塊,分別存儲(chǔ)到不同的磁盤上载佳。這個(gè)標(biāo)準(zhǔn)就稱為Block炒事。Block 默認(rèn)的大小為64(128)M。這樣做有以下幾點(diǎn)好處:

1.文件塊可以保存在不同的磁盤上刚盈。在HDFS系統(tǒng)中羡洛,一個(gè)文件可以分成不同的Block存儲(chǔ)在不同的磁盤上挂脑。

2.簡化存儲(chǔ)系統(tǒng)藕漱。這樣不需要管理文件,而是管理文件塊就可以了崭闲。

3.有利于數(shù)據(jù)的復(fù)制肋联。在HDFS系統(tǒng)中,一個(gè)block一般會(huì)復(fù)制3份

4.對于文件內(nèi)容而言刁俭,一個(gè)文件的長度大小是size橄仍,那么從文件的0偏移開始,按照固定的大小牍戚,順序?qū)ξ募M(jìn)行劃分并編號(hào)侮繁,劃分好的每一個(gè)塊稱一個(gè)Block。HDFS默認(rèn)Block大小是128MB如孝,以一個(gè)256MB文件,共有256/128=2個(gè)Block.

5.不同于普通文件系統(tǒng)的是,HDFS中跋选,如果一個(gè)文件小于一個(gè)數(shù)據(jù)塊的大小裸卫,并不占用整個(gè)數(shù)據(jù)塊存儲(chǔ)空間

2.NameNode

NameNode維護(hù)著HDFS中的元信息彬祖,包括文件和Block之間關(guān)系的信息、Block數(shù)量信息品抽、Block和DataNode之間的關(guān)系信息储笑,數(shù)據(jù)格式參照如下:

FileName replicas block-Ids id2host

例如: /test/a.log,3,{b1,b2},[{b1:[h0,h1,h3]},{b2:[h0,h2,h4]}]

NameNode中的元數(shù)據(jù)信息存儲(chǔ)在內(nèi)存/文件中,內(nèi)存中為實(shí)時(shí)信息圆恤,文件中為數(shù)據(jù)鏡像作為持久化存儲(chǔ)使用突倍。

文件包括:

fsimage 元數(shù)據(jù)鏡像文件。存儲(chǔ)某NameNode元數(shù)據(jù)信息盆昙,并不是實(shí)時(shí)同步內(nèi)存中的數(shù)據(jù)赘方。

edits 操作日志文件

fstime 保存最近一次checkpoit的時(shí)間

當(dāng)有寫請求時(shí),NameNode會(huì)首先寫editlog到磁盤edits文件中弱左,成功后才會(huì)修改內(nèi)存窄陡,并向客戶端返回

所以,fsimage中的數(shù)據(jù)并不是實(shí)時(shí)的數(shù)據(jù)拆火,而是在達(dá)到條件時(shí)再進(jìn)行更新跳夭,更新過程需要SNN參與

NameNode的metadata信息會(huì)在啟動(dòng)后加載到內(nèi)存中

3.SecondaryNameNode

SecondaryNameNode并不是NameNode的熱備份,而是協(xié)助者幫助NameNode進(jìn)行元數(shù)據(jù)的合并们镜,從另外的角度來看可以提供一定的備份功能币叹,但并不是熱備,這種合并過程可能會(huì)造成極端情況下數(shù)據(jù)丟失模狭!可以從ssn中恢復(fù)部分?jǐn)?shù)據(jù)颈抚,但是無法恢復(fù)全部。

何時(shí)出發(fā)數(shù)據(jù)合并嚼鹉?:

根據(jù)配置文件設(shè)置的時(shí)間間隔:fs.checkpoint.period 默認(rèn)3600秒

根據(jù)配置文件設(shè)置的edits log大小 fs.checkpoint.size 默認(rèn)64MB

合并過程:


達(dá)到條件后 snn會(huì)將nn中的fsimage和edits文件拷貝過來贩汉,同時(shí)nn中會(huì)創(chuàng)建一個(gè)新的edits.new文件,新的讀寫請求會(huì)寫入到這個(gè)edits.new中锚赤,在snn中將拷貝過來的fsimage和edits合并為一個(gè)新的fsimage匹舞,最后snn將合并完成的fsimage文件拷貝回nn中替換之前的fsimage,nn再將edtis.new改為edits

由于NameNode實(shí)時(shí)數(shù)據(jù)都在內(nèi)存中线脚,此處的合并指的是磁盤中的持久化的數(shù)據(jù)的處理赐稽。

snn并不是nn的熱備,但是能保存大部分備份數(shù)據(jù)浑侥。原因就在于edits.new中的數(shù)據(jù)丟失了就找不回來了

通常NameNode和SNN要放置到不同機(jī)器中以此提升性能姊舵,并提供一定的元數(shù)據(jù)安全性。

ps:hadoop2.0有了HA熱備機(jī)制之后寓落,1.0中的secondarynamenode括丁,checkpointnode,buckcupnode這些都不需要了

4.DataNode

在hadoop中零如,數(shù)據(jù)是存放在DataNode上面的躏将。是以Block的形式存儲(chǔ)的锄弱。

DataNode節(jié)點(diǎn)會(huì)不斷向NameNode節(jié)點(diǎn)發(fā)送心跳報(bào)告。

初始化時(shí)祸憋,每個(gè)數(shù)據(jù)節(jié)點(diǎn)將當(dāng)前存儲(chǔ)的數(shù)據(jù)塊告知NameNode節(jié)點(diǎn)会宪。

通過向NameNode主動(dòng)發(fā)送心跳保持與其聯(lián)系(3秒一次)

后續(xù)DataNode節(jié)點(diǎn)在工作的過程中,數(shù)據(jù)節(jié)點(diǎn)仍會(huì)不斷的更新NameNode節(jié)點(diǎn)與之對應(yīng)的元數(shù)據(jù)信息蚯窥,并接受來自NameNode節(jié)點(diǎn)的指令掸鹅,創(chuàng)建、移動(dòng)或者刪除本地磁盤上的數(shù)據(jù)塊拦赠。

如果10分鐘都沒收到dn的心跳巍沙,則認(rèn)為其已經(jīng)lost,并copy其上的block到其他dn

Replication荷鼠。多復(fù)本句携。默認(rèn)是三個(gè)。

5.Block副本放置策略:

第一個(gè)副本:放置在上傳文件的DN允乐,如果是集群外提交矮嫉,就隨機(jī)選擇一臺(tái)磁盤不太滿,cpu不太忙的節(jié)點(diǎn)

第二個(gè)副本:放置在第一個(gè)副本不同機(jī)架的節(jié)點(diǎn)上

第三個(gè)副本:放置在與第一個(gè)副本相同機(jī)架的節(jié)點(diǎn)上(機(jī)架內(nèi)通訊比機(jī)架間通訊塊)

更多副本:隨機(jī)節(jié)點(diǎn)

**機(jī)架感知策略(參看文章)

四牍疏、HDFS的shell操作

常用命令:

hadoop fs -mkdir /user/trunk

hadoop fs -ls /user

hadoop fs -lsr /user? (遞歸的)

hadoop fs -put test.txt /user/trunk

hadoop fs -put test.txt .? (復(fù)制到hdfs當(dāng)前目錄下蠢笋,首先要?jiǎng)?chuàng)建當(dāng)前目錄)

hadoop fs -get /user/trunk/test.txt . (復(fù)制到本地當(dāng)前目錄下)

hadoop fs -cat /user/trunk/test.txt

hadoop fs -tail /user/trunk/test.txt? (查看最后1000字節(jié))

hadoop fs -rm /user/trunk/test.txt

hadoop fs -rmdir /user/trunk

hadoop fs -help ls (查看ls命令的幫助文檔)

五、HDFS執(zhí)行流程

1.HDFS讀流程


使用HDFS提供的客戶端開發(fā)庫Client鳞陨,向遠(yuǎn)程的Namenode發(fā)起RPC請求昨寞;

Namenode會(huì)視情況返回文件的部分或者全部block列表,對于每個(gè)block厦滤,Namenode都會(huì)返回有該block拷貝的DataNode地址援岩;

客戶端開發(fā)庫Client會(huì)選取離客戶端最接近的DataNode來讀取block;如果客戶端本身就是DataNode,那么將從本地直接獲取數(shù)據(jù).

讀取完當(dāng)前block的數(shù)據(jù)后馁害,關(guān)閉與當(dāng)前的DataNode連接窄俏,并為讀取下一個(gè)block尋找最佳的DataNode;

當(dāng)讀完列表的block后碘菜,且文件讀取還沒有結(jié)束,客戶端開發(fā)庫會(huì)繼續(xù)向Namenode獲取下一批的block列表限寞。

讀取完一個(gè)block都會(huì)進(jìn)行checksum驗(yàn)證忍啸,如果讀取datanode時(shí)出現(xiàn)錯(cuò)誤,客戶端會(huì)通知Namenode履植,然后再從下一個(gè)擁有該block拷貝的datanode繼續(xù)讀计雌。

當(dāng)文件最后一個(gè)塊也都讀取完成后,datanode會(huì)連接namenode告知關(guān)閉文件玫霎。

2.HDFS的寫流程


使用HDFS提供的客戶端開發(fā)庫Client凿滤,向遠(yuǎn)程的Namenode發(fā)起RPC請求妈橄;

Namenode會(huì)檢查要?jiǎng)?chuàng)建的文件是否已經(jīng)存在,創(chuàng)建者是否有權(quán)限進(jìn)行操作翁脆,成功則會(huì)為文件創(chuàng)建一個(gè)記錄眷蚓,否則會(huì)讓客戶端拋出異常;

當(dāng)客戶端開始寫入文件的時(shí)候反番,開發(fā)庫會(huì)將文件切分成多個(gè)packets沙热,并在內(nèi)部以數(shù)據(jù)隊(duì)列"data queue"的形式管理這些packets,并向Namenode申請新的blocks罢缸。篙贸,獲取用來存儲(chǔ)replicas的合適的datanodes列表, 列表的大小根據(jù)在Namenode中對replication的設(shè)置而定

開始以pipeline(管道)的形式將packet寫入所 有的replicas中枫疆。開發(fā)庫把packet以流的方式寫入第一個(gè)datanode爵川,該datanode把該packet存儲(chǔ)之后,再將其傳遞給在此 pipeline中的下一個(gè)datanode息楔,直到最后一個(gè)datanode雁芙,這種寫數(shù)據(jù)的方式呈流水線的形式。

最后一個(gè)datanode成功存儲(chǔ)之后會(huì)返回一個(gè)ack packet钞螟,在pipeline里傳遞至客戶端兔甘,在客戶端的開發(fā)庫內(nèi)部維護(hù)著"ack queue",成功收到datanode返回的ack packet后會(huì)從"ack queue"移除相應(yīng)的packet鳞滨。

在讀取的時(shí)候洞焙,如果client與datanode通信時(shí)遇到一個(gè)錯(cuò)誤,那么它就會(huì)去嘗試對這個(gè)塊來說下一個(gè)最近的塊拯啦。它也會(huì)記住那個(gè)故障節(jié)點(diǎn)的datanode澡匪,以保證不會(huì)再對之后的塊進(jìn)行徒勞無益的嘗試。client也會(huì)確認(rèn)datanode發(fā)來的數(shù)據(jù)的校驗(yàn)和褒链。如果發(fā)現(xiàn)一個(gè)損壞的塊唁情,它就會(huì)在client試圖從別的datanode中讀取一個(gè)塊的副本之前報(bào)告給namenode。

這個(gè)設(shè)計(jì)的一個(gè)重點(diǎn)是甫匹,client直接聯(lián)系datanode去檢索數(shù)據(jù)甸鸟,并被namenode指引到塊中最好的datanode。因?yàn)閿?shù)據(jù)流在此集群中是在所有datanode分散進(jìn)行的兵迅。所以這種設(shè)計(jì)能使HDFS可擴(kuò)展到最大的并發(fā)client數(shù)量抢韭。同時(shí),namenode只不過提供塊的位置請求(存儲(chǔ)在內(nèi)存中恍箭,十分高效)刻恭,不是提供數(shù)據(jù)。否則如果客戶端數(shù)量增長扯夭,namenode就會(huì)快速成為一個(gè)“瓶頸”鳍贾。

3.HDFS的刪除流程

先在NameNode上執(zhí)行節(jié)點(diǎn)名字的刪除鞍匾。

當(dāng)NameNode執(zhí)行delete方法時(shí),它只標(biāo)記操作涉及的需要被刪除的數(shù)據(jù)塊骑科,而不會(huì)主動(dòng)聯(lián)系這些數(shù)據(jù)塊所在的DataNode節(jié)點(diǎn)橡淑。

當(dāng)保存著這些數(shù)據(jù)塊的DataNode節(jié)點(diǎn)向NameNode節(jié)點(diǎn)發(fā)送心跳時(shí),在心跳應(yīng)答里纵散,NameNode節(jié)點(diǎn)會(huì)向DataNode發(fā)出指令梳码,從而把數(shù)據(jù)刪除掉。

所以在執(zhí)行完delete方法后的一段時(shí)間內(nèi)伍掀,數(shù)據(jù)塊才能被真正的刪除掉掰茶。

**安全模式

在重新啟動(dòng)HDFS后,會(huì)立即進(jìn)入安全模式蜜笤,此時(shí)不能操作hdfs中的文件濒蒋,只能查看目錄文件名等,讀寫操作都不能進(jìn)行把兔。

namenode啟動(dòng)時(shí)沪伙,需要載入fsimage文件到內(nèi)存,同時(shí)執(zhí)行edits文件中各項(xiàng)操作

一旦在內(nèi)存中成功建立文件系統(tǒng)元數(shù)據(jù)的映射县好,則創(chuàng)建一個(gè)新的fsimage文件(這個(gè)步驟不需要SNN的參與)和一個(gè)空的編輯文件围橡。

此時(shí)namenode文件系統(tǒng)對于客戶端來說是只讀的。

再此階段NameNode收集各個(gè)DataNode的報(bào)告缕贡,當(dāng)數(shù)據(jù)塊達(dá)到最小復(fù)本數(shù)以上時(shí)翁授,會(huì)被認(rèn)為是“安全”的,在一定比例的數(shù)據(jù)塊被確定為安全后晾咪,再經(jīng)過若干時(shí)間收擦,安全模式結(jié)束

當(dāng)檢測到副本數(shù)不足的數(shù)據(jù)塊時(shí),該塊會(huì)被復(fù)制直到到達(dá)最小副本數(shù)谍倦,系統(tǒng)中數(shù)據(jù)塊的位置并不是namenode維護(hù)的塞赂,而是以塊列表的形式存儲(chǔ)在datanode中。

當(dāng)啟動(dòng)報(bào)如下錯(cuò)誤時(shí):

org.apache.hadoop.dfs.SafeModeException: Cannot delete /user/hadoop/input. Name node is in safe mode

使用如下命令退出安全模式:

hadoop dfsadmin -safemode leave

六昼蛀、 HDFS FileSystem JavaAPI

待補(bǔ)充

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末宴猾,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子曹洽,更是在濱河造成了極大的恐慌鳍置,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件送淆,死亡現(xiàn)場離奇詭異,居然都是意外死亡怕轿,警方通過查閱死者的電腦和手機(jī)偷崩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進(jìn)店門辟拷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人阐斜,你說我怎么就攤上這事衫冻。” “怎么了谒出?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵隅俘,是天一觀的道長。 經(jīng)常有香客問我笤喳,道長为居,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任杀狡,我火速辦了婚禮蒙畴,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘呜象。我一直安慰自己膳凝,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布恭陡。 她就那樣靜靜地躺著蹬音,像睡著了一般。 火紅的嫁衣襯著肌膚如雪休玩。 梳的紋絲不亂的頭發(fā)上著淆,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天,我揣著相機(jī)與錄音哥捕,去河邊找鬼牧抽。 笑死,一個(gè)胖子當(dāng)著我的面吹牛遥赚,可吹牛的內(nèi)容都是我干的扬舒。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼凫佛,長吁一口氣:“原來是場噩夢啊……” “哼讲坎!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起愧薛,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤晨炕,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后毫炉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瓮栗,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了费奸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片弥激。...
    茶點(diǎn)故事閱讀 39,965評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖愿阐,靈堂內(nèi)的尸體忽然破棺而出微服,到底是詐尸還是另有隱情,我是刑警寧澤缨历,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布以蕴,位于F島的核電站,受9級特大地震影響辛孵,放射性物質(zhì)發(fā)生泄漏丛肮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一觉吭、第九天 我趴在偏房一處隱蔽的房頂上張望腾供。 院中可真熱鬧,春花似錦鲜滩、人聲如沸伴鳖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽榜聂。三九已至,卻和暖如春嗓蘑,著一層夾襖步出監(jiān)牢的瞬間须肆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工桩皿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留豌汇,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓泄隔,卻偏偏與公主長得像拒贱,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子佛嬉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Hadoop 核心-HDFS 1. HDFS概述 1.1 介紹 在現(xiàn)代的企業(yè)環(huán)境中逻澳,單機(jī)容量往往無法存儲(chǔ)大量數(shù)據(jù),...
    打開世界的源代碼閱讀 455評論 0 0
  • 隨著數(shù)據(jù)量越來越大暖呕, 在 一個(gè)操作系統(tǒng)管轄的范圍存不下了斜做, 那么就 分配到更多的操作系統(tǒng)管理的磁盤中, 但是不方便...
    tracy_668閱讀 2,650評論 0 6
  • 【什么是大數(shù)據(jù)湾揽、大數(shù)據(jù)技術(shù)】 大數(shù)據(jù)瓤逼,又稱巨量資料笼吟,指的是所涉及的數(shù)據(jù)資料量規(guī)模巨大到無法在合理時(shí)間內(nèi)通過傳統(tǒng)的應(yīng)...
    kimibob閱讀 2,744評論 0 51
  • 我認(rèn)為,人體就是一臺(tái)機(jī)器抛姑。人吃五谷雜糧赞厕,滋養(yǎng)五臟六腑艳狐,同時(shí)也順應(yīng)四季氣候的變化定硝,使自身與外界始終保持協(xié)調(diào)統(tǒng)一,只有...
    溪水也逐夢閱讀 1,043評論 0 1
  • 07胡小雪20180923理想國微寫作打卡 今天一直在值班毫目,沒有發(fā)生什么特別的事情蔬啡,上午練了一上午閨蜜婚禮的歌,中...
    cher1122閱讀 109評論 0 0