Hadoop生態(tài)圈技術概述

本文對hadoop生態(tài)圈技術做一個概要的介紹,文章中的前半部分的信息大多來自于網(wǎng)絡赐写,這里只是按照自己的學習思路整理了下。包括如下內(nèi)容:

  • hadoop誕生記
  • hadoop生態(tài)圈
  • 常見組件簡介
  • 組件下載
  • 學習路線

一、hadoop誕生記

最早Doug Cutting(后面被稱為hadoop之父)領導創(chuàng)立了Apache的項目Lucene,然后Lucene又衍生出子項目Nutch拖云,Nutch又衍生了子項目Hadoop。Lucene是一個功能全面的文本搜索和查詢庫应又,Nutch目標就是要試圖以Lucene為核心建立一個完整的搜索引擎宙项,并且能達到提到Google商業(yè)搜索引擎的目標。網(wǎng)絡搜索引擎和基本文檔搜索區(qū)別就在規(guī)模上株扛,Lucene目標是索引數(shù)百萬文檔尤筐,而Nutch應該能處理數(shù)十億的網(wǎng)頁。因此Nutch就面臨了一個極大的挑戰(zhàn)洞就,即在Nutch中建立一個層盆繁,來負責分布式處理、冗余旬蟋、故障恢復及負載均衡等等一系列問題油昂。

曙光的到來,2004年倾贰,Google發(fā)表了兩篇論文來論述Google文件系統(tǒng)(GFS)和MapReduce框架冕碟,并且使用了這兩項技術來拓展自己的搜索系統(tǒng),于是Doug Cutting看到了這兩篇論文的價值并帶領他的團隊便實現(xiàn)了這個框架匆浙,并將Nutch移植上去鸣哀,于是Nutch的可擴展性得到極大的提高。這個新的框架就是最初的hadoop吞彤。2005年我衬,Hadoop作為Lucene的子項目Nutch的一部分正式引入Apache基金會。

在2006年1月饰恕,雅虎雇傭Doug Cutting挠羔,并讓他和一個專門的團隊來一起改進Hadoop,并將其作為一個開源項目繼續(xù)發(fā)展埋嵌。

二破加、hadoop生態(tài)圈

我們通常說到的hadoop包括兩部分,一是Hadoop核心技術(或者說狹義上的hadoop)雹嗦,對應為apache開源社區(qū)的一個項目范舀,主要包括三部分內(nèi)容:hdfs,mapreduce了罪,yarn锭环。其中hdfs用來存儲海量數(shù)據(jù),mapreduce用來對海量數(shù)據(jù)進行計算泊藕,yarn是一個通用的資源調(diào)度框架(是在hadoop2.0中產(chǎn)生的)辅辩。

另一部分指廣義的,廣義上指一個生態(tài)圈,泛指大數(shù)據(jù)技術相關的開源組件或產(chǎn)品玫锋,如hbase蛾茉、hive、spark撩鹿、pig谦炬、zookeeper、kafka节沦、flume吧寺、phoenix、sqoop等散劫。

生態(tài)圈中的這些組件或產(chǎn)品相互之間會有依賴稚机,但又各自獨立。比如habse和kafka會依賴zookeeper获搏,hive會依賴mapreduce赖条。

下面圖給出了Hadoop技術生態(tài)圈的一個大致組件分布圖:

需要說明的是,上圖并沒有包括當前生態(tài)圈中的所有組件常熙。而且hadoop生態(tài)圈技術在不斷的發(fā)展纬乍,會不斷有新的組件出現(xiàn),一些老的組件也可能被新的組件替代裸卫。需要持續(xù)關注Hadoop開源社區(qū)的技術發(fā)展才能跟得上變化仿贬。

三、常見組件簡介

(一)Hdfs

Hdfs是一種分布式文件系統(tǒng)墓贿,是Hadoop體系中數(shù)據(jù)存儲管理的基礎茧泪。它是一個高度容錯的系統(tǒng),能檢測和應對硬件故障聋袋,用于在低成本的通用硬件上運行队伟。Hdfs簡化了文件的一致性模型,通過流式數(shù)據(jù)訪問幽勒,提供高吞吐量應用程序數(shù)據(jù)訪問功能嗜侮,適合帶有大型數(shù)據(jù)集的應用程序。

(二)Mapreduce

MapReduce分為第一代(稱為 MapReduce 1.0或者MRv1啥容,對應hadoop第1代)和第二代(稱為MapReduce 2.0或者MRv2锈颗,對應hadoop第2代)。第一代MapReduce計算框架咪惠,它由兩部分組成:編程模型(programming model)和運行時環(huán)境(runtime environment)击吱。它的基本編程模型是將問題抽象成Map和Reduce兩個階段,其中Map階段將輸入數(shù)據(jù)解析成key/value硝逢,迭代調(diào)用map()函數(shù)處理后姨拥,再以key/value的形式輸出到本地目錄,而Reduce階段則將key相同的value進行規(guī)約處理渠鸽,并將最終結(jié)果寫到HDFS上叫乌。它的運行時環(huán)境由兩類服務組成:JobTracker和TaskTracker,其中徽缚,JobTracker負責資源管理和所有作業(yè)的控制憨奸,而TaskTracker負責接收來自JobTracker的命令并執(zhí)行它。

MapReduce 2.0或者MRv2具有與MRv1相同的編程模型凿试,唯一不同的是運行時環(huán)境排宰。MRv2是在MRv1基礎上經(jīng)加工之后,運行于資源管理框架YARN之上的MRv1那婉,它不再由JobTracker和TaskTracker組成板甘,而是變?yōu)橐粋€作業(yè)控制進程ApplicationMaster,且ApplicationMaster僅負責一個作業(yè)的管理详炬,至于資源的管理盐类,則由YARN完成。

總結(jié)下呛谜,MRv1是一個獨立的離線計算框架在跳,而MRv2則是運行于YARN之上的MRv1。

(三)Hive

Hive是一種基于Hadoop的數(shù)據(jù)倉庫隐岛,由facebook開源猫妙,最初用于解決海量結(jié)構(gòu)化的日志數(shù)據(jù)統(tǒng)計問題。Hive定義了一種類似SQL的查詢語言(HQL),將SQL轉(zhuǎn)化為MapReduce任務在Hadoop上執(zhí)行聚凹。通常用于離線分析割坠。

(四)Hbase

HBase是Google Bigtable的克隆版。它是一個針對結(jié)構(gòu)化數(shù)據(jù)的可伸縮妒牙、高可靠韭脊、高性能、分布式和面向列的動態(tài)模式數(shù)據(jù)庫单旁。和傳統(tǒng)關系數(shù)據(jù)庫不同沪羔,HBase采用了BigTable的數(shù)據(jù)模型:增強的稀疏排序映射表(Key/Value),其中象浑,鍵由行關鍵字蔫饰、列關鍵字和時間戳構(gòu)成。HBase提供了對大規(guī)模數(shù)據(jù)的隨機愉豺、實時讀寫訪問篓吁,同時,HBase中保存的數(shù)據(jù)可以使用MapReduce來處理蚪拦,它將數(shù)據(jù)存儲和并行計算完美地結(jié)合在一起杖剪。

(五)Zookeeper

ZooKeeper是一個分布式的冻押,開放源碼的分布式應用程序協(xié)調(diào)服務,是Google的Chubby一個開源的實現(xiàn)盛嘿。它是一個為分布式應用提供一致性服務的軟件洛巢,提供的功能包括:配置維護、域名服務次兆、分布式同步稿茉、組服務等。ZooKeeper的目標就是封裝好復雜易出錯的關鍵服務芥炭,將簡單易用的接口和性能高效漓库、功能穩(wěn)定的系統(tǒng)提供給用戶。ZooKeeper包含一個簡單的原語集园蝠,提供Java和C的接口渺蒿。

(六)Sqoop

Sqoop是一款開源的工具,主要用于在Hadoop和傳統(tǒng)的數(shù)據(jù)庫(mysql彪薛、postgresql等)進行數(shù)據(jù)的傳遞蘸嘶,可以將一個關系型數(shù)據(jù)庫(例如:MySQL、Oracle陪汽、Postgres等)中的數(shù)據(jù)導進到Hadoop的HDFS中训唱,也可以將HDFS的數(shù)據(jù)導進到關系型數(shù)據(jù)庫中。

Sqoop分為一代(稱為Sqoop1)和二代(稱為Sqoop2)挚冤,其中Sqoop1的架構(gòu)况增,僅僅使用一個Sqoop客戶端,Sqoop2的架構(gòu)训挡,引入了Sqoop server集中化管理connector澳骤,以及rest api,web澜薄,UI为肮,并引入權(quán)限安全機制。

(七)Pig

Apache Pig是MapReduce的一個抽象肤京。它是一個工具/平臺颊艳,用于分析較大的數(shù)據(jù)集,并將它們表示為數(shù)據(jù)流忘分。Pig通常與 Hadoop 一起使用棋枕;我們可以使用Apache Pig在Hadoop中執(zhí)行所有的數(shù)據(jù)處理操作。要編寫數(shù)據(jù)分析程序妒峦,Pig提供了一種稱為 Pig Latin 的高級語言重斑。該語言提供了各種操作符,程序員可以利用它們開發(fā)自己的用于讀取肯骇,寫入和處理數(shù)據(jù)的功能窥浪。

要使用 Apache Pig 分析數(shù)據(jù)祖很,程序員需要使用Pig Latin語言編寫腳本。所有這些腳本都在內(nèi)部轉(zhuǎn)換為Map和Reduce任務漾脂。Apache Pig有一個名為 Pig Engine 的組件假颇,它接受Pig Latin腳本作為輸入,并將這些腳本轉(zhuǎn)換為MapReduce作業(yè)符相。
所以使用PIG拆融,可以讓不太擅長編寫Java程序的程序員來進行大數(shù)據(jù)分析處理蠢琳。

(八)Mahout

Mahout起源于2008年啊终,最初是Apache Lucent的子項目,它在極短的時間內(nèi)取得了長足的發(fā)展傲须,現(xiàn)在是Apache的頂級項目蓝牲。

Mahout的主要目標是創(chuàng)建一些可擴展的機器學習領域經(jīng)典算法的實現(xiàn),旨在幫助開發(fā)人員更加方便快捷地創(chuàng)建智能應用程序泰讽。Mahout現(xiàn)在已經(jīng)包含了聚類例衍、分類、推薦引擎(協(xié)同過濾)和頻繁集挖掘等廣泛使用的數(shù)據(jù)挖掘方法已卸。除了算法佛玄,Mahout還包含數(shù)據(jù)的輸入/輸出工具、與其他存儲系統(tǒng)(如數(shù)據(jù)庫累澡、MongoDB 或Cassandra)集成等數(shù)據(jù)挖掘支持架構(gòu)梦抢。

(九)Flume

Flume是Cloudera(一個知名的基于開源hadoop的大數(shù)據(jù)發(fā)行商)設計開發(fā)的一個開源的日志收集工具, 具有分布式愧哟、高可靠奥吩、高容錯、易于定制和擴展的特點蕊梧。它將數(shù)據(jù)從產(chǎn)生霞赫、傳輸、處理并最終寫入目標的路徑的過程抽象為數(shù)據(jù)流肥矢,在具體的數(shù)據(jù)流中端衰,數(shù)據(jù)源支持在Flume中定制數(shù)據(jù)發(fā)送方,從而支持收集各種不同協(xié)議數(shù)據(jù)甘改。同時靴迫,F(xiàn)lume數(shù)據(jù)流提供對日志數(shù)據(jù)進行簡單處理的能力,如過濾楼誓、格式轉(zhuǎn)換等玉锌。此外,F(xiàn)lume還具有能夠?qū)⑷罩緦懲鞣N數(shù)據(jù)目標(可定制)的能力疟羹≈魇兀總的來說禀倔,F(xiàn)lume是一個可擴展、適合復雜環(huán)境的海量日志收集系統(tǒng)参淫。

(十)Spark

Spark是一個通用計算引擎救湖,能對大規(guī)模數(shù)據(jù)進行快速分析,可用它來完成各種各樣的運算涎才,包括 SQL 查詢鞋既、文本處理、機器學習等耍铜,而在 Spark 出現(xiàn)之前邑闺,我們一般需要學習各種各樣的引擎來分別處理這些需求。Spark不依賴于MapReduce棕兼,它使用了自己的數(shù)據(jù)處理框架陡舅。Spark使用內(nèi)存進行計算,速度更快伴挚。Spark本身就是一個生態(tài)系統(tǒng)靶衍,除了核心API之外,Spark生態(tài)系統(tǒng)中還包括其他附加庫茎芋,可以在大數(shù)據(jù)分析和機器學習領域提供更多的能力颅眶,如Spark SQL,Spark Streaming田弥,Spark MLlib涛酗,Spark GraphX,BlinkDB皱蹦,Tachyon等煤杀。

(十一)Storm

Storm是Twitter開源的分布式實時大數(shù)據(jù)處理框架,最早開源于github沪哺,從0.9.1版本之后沈自,歸于Apache社區(qū),被業(yè)界稱為實時版Hadoop辜妓。它與Spark Streaming的最大區(qū)別在于它是逐個處理流式數(shù)據(jù)事件枯途,而Spark Streaming是微批次處理,因此籍滴,它比Spark Streaming更實時酪夷。

(十二)Impala

Impala是Cloudera公司主導開發(fā)的新型查詢系統(tǒng),它提供SQL語義孽惰,能查詢存儲在Hadoop的HDFS和HBase中的PB級大數(shù)據(jù)晚岭。已有的Hive系統(tǒng)雖然也提供了SQL語義,但由于Hive底層執(zhí)行使用的是MapReduce引擎勋功,仍然是一個批處理過程坦报,難以滿足查詢的交互性库说。相比之下,Impala的最大特點也是最大賣點就是它的快速片择。

另外Impala可以Hive結(jié)合使用潜的,它可以直接使用Hive的元數(shù)據(jù)庫Metadata。

(十三)Kafka

Kafka是一種分布式的字管,基于發(fā)布/訂閱的消息系統(tǒng),類似于消息對列的功能啰挪,可以接收生產(chǎn)者(如webservice、文件嘲叔、hdfs亡呵、hbase等)的數(shù)據(jù),本身可以緩存起來借跪,然后可以發(fā)送給消費者(同上)政己,起到緩沖和適配的作酌壕。

(十四)Yarn

Yarn是一種新的 Hadoop 資源管理器掏愁,它是一個通用資源管理系統(tǒng),可為上層應用提供統(tǒng)一的資源管理和調(diào)度卵牍。它將資源管理和處理組件分開果港,它的引入為集群在利用率、資源統(tǒng)一管理和數(shù)據(jù)共享等方面帶來了巨大好處糊昙⌒谅樱可以把它理解為大數(shù)據(jù)集群的操作系統(tǒng)∈臀可以在上面運行各種計算框架(包括MapReduce萝衩、Spark、Storm没咙、MPI等)猩谊。

(十五)Hue

Hue是一個開源的Apache Hadoop UI系統(tǒng),通過使用Hue我們可以在瀏覽器端的Web控制臺上與Hadoop集群進行交互來分析處理數(shù)據(jù),例如操作HDFS上的數(shù)據(jù)祭刚,運行MapReduce Job等等牌捷。

(十六)Oozie

在Hadoop中執(zhí)行的任務有時候需要把多個Map/Reduce作業(yè)連接到一起,這樣才能夠達到目的涡驮。Oozie讓我們可以把多個Map/Reduce作業(yè)組合到一個邏輯工作單元中暗甥,從而完成更大型的任務。wuOozie是一種Java Web應用程序捉捅,它運行在Java servlet容器中撤防,并使用數(shù)據(jù)庫來存儲相關信息。

(十七)Ambari

Ambari是一個開源的大數(shù)據(jù)集群管理系統(tǒng)棒口,可以用來就是創(chuàng)建寄月、管理焰情、監(jiān)視 Hadoop 的集群,并提供WEB可視化的界面來讓用戶進行管理剥懒。

四内舟、組件下載

我們可以有兩種途徑獲取相關的大數(shù)據(jù)開源組件,一種是直接獲取apache提供的原始組件初橘。另外一種是從一些知名的大數(shù)據(jù)發(fā)行商(如cloudera验游,簡稱CDH)獲取。

這兩種方式各有優(yōu)劣保檐,從apache獲取原始組件耕蝉,好處是可以及時追蹤最新的版本和補丁。從發(fā)行商獲取的組件夜只,是經(jīng)過發(fā)行商測試垒在、甚至改進的,可能會更加穩(wěn)定扔亥。如果只是自己學習使用场躯,從哪獲取沒啥區(qū)別了。有一點需要注意的是旅挤,各個組件都有各自獨立的版本規(guī)劃和演進踢关,之間存在相互依賴的問題,需要考慮彼此間的版本匹配問題粘茄。

我們下面舉例如何從apache上獲取原生組件:

Hadoop生態(tài)圈的各種組件和產(chǎn)品都在apache上签舞。我們可以到apache官網(wǎng)上(https://www.apache.org)上去下載,一般會鏈接到相關的鏡像站點上柒瓣。比如我們進入如下的頁面儒搭,會看到大量的組件目錄列表,下圖是截圖的一部分:

上圖中每行都代表了apache下的一個開源軟件芙贫,按字母順序排列的搂鲫,我們可以看到有hadoop,hbase屹培,hive默穴,impala這幾個大數(shù)據(jù)的組件。我們以hadoop為例來繼續(xù)褪秀,點擊上面列表中的hadoop目錄蓄诽,會出現(xiàn)如下的界面:

出現(xiàn)了三個目錄節(jié)點,其中最后ozone是新一代的一個分布式存儲組件媒吗,我們暫時不管仑氛。上面的common和core目錄的內(nèi)容是一樣的。我們再點擊common目錄,會出現(xiàn)如下界面:

上面每個目錄對應的是hadoop的一個版本锯岖,我們選擇自己需要的版本介袜,比如我們點擊hadoop-2.7.6目錄,會出現(xiàn)如下界面:

上面有兩個目錄出吹,名稱中含src的表示是源代碼遇伞,如果下載源代碼,需要自己編譯打包捶牢。我們直接下載編譯打包好的鸠珠,這樣下載后直接部署即可,對應上面的就是hadoop-2.7.6.tar.gz目錄秋麸。

下載到本地解壓后渐排,我們會看到如下的目錄結(jié)構(gòu):

上面是hadoop下載包中的內(nèi)容,其中包含了Hdfs灸蟆,mapreduce驯耻,yarn這三個核心部件。我們可以進行相關的配置炒考,然后運行相關的腳本可缚,就可以啟動hdfs,yarn服務票腰。

五城看、學習路線

(一)女气、預備知識

1杏慰、 linux基礎

因為hadoop一般都是在linux下運行,我們要在linux進行大數(shù)據(jù)環(huán)境的安裝和配置炼鞠,肯定需要對linux有所熟悉缘滥。另外很多組件在設計上也參考了linux的一些特點,比如hdfs的文件目錄樹也是類似Linux的目錄結(jié)構(gòu)谒主,相關的文件操作命令也是類似linux的文件命令朝扼。熟悉linux的相關操作對更好的理解相關組件也是很有幫助的。

2霎肯、 java等編程語言

這個可以從兩個角度來看擎颖,一是各個大數(shù)據(jù)組件都是由某種編程語言開發(fā)出來的,比如hdfs,hbase,hive等是用java語言開發(fā)出來的观游;比如spark,kafka等是用scala語言開發(fā)出來的搂捧;比如impla是用c++語言開發(fā)出來的。這些大數(shù)據(jù)組件作為開源產(chǎn)品懂缕,如果我們要深入學習和了解的話允跑,就需要去閱讀源碼,甚至可以發(fā)現(xiàn)源碼中的問題和可以補充的功能,往開源社區(qū)提交代碼聋丝,作開源貢獻索烹。

目前來說JAVA語言是各大數(shù)據(jù)組件使用最多的編程語言,但如上面所列的也有組件使用非JAVA的編程語言弱睦,而且相信隨著大數(shù)據(jù)技術的發(fā)展百姓,越來越多的編程語言會被用到。作為大數(shù)據(jù)技術的學習者况木,我們可能要學習多門編程語言瓣戚,以便與熟悉更多的大數(shù)據(jù)組件技術。

另外一個層面是焦读,每個開源組件都提供了對外的API子库,以讓程序員可以編寫代碼來使用這些開源組件,有些開源組件除了提供與本身開發(fā)語言相同的API外矗晃,甚至提供了其它編程語言的API仑嗅。我們要使用這些組件,肯定要使用到某種或某幾種API张症,這樣必須要熟悉所使用的API對應的編程語言仓技。

3、 關系數(shù)據(jù)庫與sql語句

很多大數(shù)據(jù)分析和處理組件俗他,如hive ,spark,impala等都提供了類似關系數(shù)據(jù)庫sql的操作數(shù)據(jù)的機制脖捻。如果對關系數(shù)據(jù)庫及sql已經(jīng)很熟悉,則對掌握這些組件提供的類sql功能有非常大的幫助兆衅。

(二)地沮、環(huán)境準備

hadoop各種組件一般都是運行在linux系統(tǒng)上,部分組件也可以在windows下運行羡亩。我們最好是準備一個linux的環(huán)境來學習摩疑。獲取Linux環(huán)境方式很多,如:

1畏铆、 在一臺機器上安裝Linux操作系統(tǒng) 或 windows和Linux雙操作系統(tǒng)

2雷袋、 可以在windows或linux操作系統(tǒng)的機器上安裝虛擬機軟件(如virualbox,vmware等)辞居,然后創(chuàng)建linux操作系統(tǒng)的虛擬機

3楷怒、 可以直接在網(wǎng)上(如阿里、騰訊等)租賃一臺Linux主機

因為hadoop核心組件和很多組件都是基于Jvm運行的瓦灶,所以機器上一定要安裝java運行環(huán)境鸠删。建議安裝java1.8版本。

(三)倚搬、分階段學習

1冶共、先從單個組件學習

一般是先從hadoop核心組件HDFS,maperduce開始學習,然后再逐步學習其它組件。

2捅僵、單個組件的基礎學習

先掌握單個組件(以及依賴組件)的安裝和運行家卖,開始可以先是單機安裝,hadoop生態(tài)圈的各個組件基本都支持在一臺機器上進行安裝和運行庙楚,以便于簡化開發(fā)階段的環(huán)境準備上荡。而在應用上線后,往往是集群方式安裝和運行馒闷。

同時要理解組件的基本架構(gòu)和原理酪捡,對組件有一個整體層面的了解。

另外站在使用者角度(如開發(fā)者角度)去學習組件的使用纳账,比如對于hdfs逛薇,知道如何通過命令行方式使用hdfs提供的命令進行文件的操作,如何通過組件提供的api(如java api)來編寫程序進行操作疏虫。

3永罚、對單個組件進行深入學習,包括但不限于如下方面:

1)深入了解組件的原理和架構(gòu)

2)了解組件分布式部署的配置和性能調(diào)優(yōu)

3)閱讀組件的源代碼卧秘,理解其實現(xiàn)機制

4)發(fā)現(xiàn)組件源代碼中的問題和不足呢袱,向開源社區(qū)提交issue,為開源社區(qū)做貢獻

4翅敌、針對業(yè)務場景給出大數(shù)據(jù)的解決方案
比如利用哪些組件配合來解決對應的業(yè)務問題羞福,集群如何配置等。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蚯涮,一起剝皮案震驚了整個濱河市治专,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌恋昼,老刑警劉巖看靠,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異液肌,居然都是意外死亡,警方通過查閱死者的電腦和手機鸥滨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進店門嗦哆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人婿滓,你說我怎么就攤上這事老速。” “怎么了凸主?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵橘券,是天一觀的道長。 經(jīng)常有香客問我,道長旁舰,這世上最難降的妖魔是什么锋华? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮箭窜,結(jié)果婚禮上毯焕,老公的妹妹穿的比我還像新娘。我一直安慰自己磺樱,他們只是感情好纳猫,可當我...
    茶點故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著竹捉,像睡著了一般芜辕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上块差,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天物遇,我揣著相機與錄音,去河邊找鬼憾儒。 笑死询兴,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的起趾。 我是一名探鬼主播诗舰,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼训裆!你這毒婦竟也來了眶根?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤边琉,失蹤者是張志新(化名)和其女友劉穎属百,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體变姨,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡族扰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了定欧。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片渔呵。...
    茶點故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖砍鸠,靈堂內(nèi)的尸體忽然破棺而出扩氢,到底是詐尸還是另有隱情,我是刑警寧澤爷辱,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布录豺,位于F島的核電站朦肘,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏双饥。R本人自食惡果不足惜媒抠,卻給世界環(huán)境...
    茶點故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望兢哭。 院中可真熱鬧领舰,春花似錦、人聲如沸迟螺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽矩父。三九已至锉桑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間窍株,已是汗流浹背民轴。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留球订,地道東北人后裸。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像冒滩,于是被迫代替她去往敵國和親微驶。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,573評論 2 359