Hadoop生態(tài)中各個(gè)組件、進(jìn)程的作用

1灾杰、hadoop的各種進(jìn)程及其作用

NameNode:是hdfs的主服務(wù)器,管理文件系統(tǒng)的目錄樹以及對(duì)集群中存儲(chǔ)文件的訪問熙参,保存有metadate艳吠,不斷讀取記錄集群中dataNode主機(jī)狀況和工作狀態(tài)。

SecondaryNameNode:NameNode的冷備孽椰,負(fù)責(zé)周期性的合并esimage以及editslog昭娩,將少NameNode的工作量。

DataNode:負(fù)責(zé)管理各個(gè)存儲(chǔ)節(jié)點(diǎn)黍匾,每個(gè)存儲(chǔ)數(shù)據(jù)的節(jié)點(diǎn)都有一個(gè)datanode守護(hù)進(jìn)程栏渺。

DFSZKFailoverController:負(fù)責(zé)監(jiān)控NameNode的狀態(tài),并及時(shí)把信息狀態(tài)寫入zk锐涯,通過一個(gè)獨(dú)立的線程周期性的調(diào)用Namenode上的一個(gè)特定接口來(lái)獲取NameNode的健康狀態(tài)磕诊,也有選擇誰(shuí)為Active的權(quán)利,但是最多只能有兩個(gè)namenode纹腌,所以選擇策略為先到先得霎终。

QuorumPeerMain:zookeeper主進(jìn)程

JournalNode:高可用情況下用于存放namenode的editlog文件(元數(shù)據(jù)),也是多節(jié)點(diǎn)高可用升薯。

Fsimage:元數(shù)據(jù)鏡像文件(文件系統(tǒng)的目錄樹)莱褒。Edits:元數(shù)據(jù)的操作日志(針對(duì)文件系統(tǒng)做的修改操作記錄。

editsLog:修改日志涎劈,當(dāng)文件系統(tǒng)客戶端client進(jìn)行寫操作的時(shí)候保礼,我們就要把著條記錄放在修改日志中,之后namenode修改內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)责语,每次寫操作執(zhí)行之前,editsLog都會(huì)同步到文件系統(tǒng)中

2目派、mapreduce

Combiner:是一個(gè)特殊的reduce坤候,是一個(gè)在map端執(zhí)行的reducer,能夠減少I/O操作企蹭,降低reducer端的負(fù)荷白筹,也就是map端的聚合操作。

3谅摄、yarn

ResourceManager(JobTracker):負(fù)責(zé)調(diào)度DataManager上的資源徒河,每個(gè)DataNode都有一個(gè)NodeManager(TaskTracker)來(lái)執(zhí)行實(shí)際工作

NodeManager:管理slave節(jié)點(diǎn)的資源

ApplicationMaster:用于調(diào)度任務(wù),任何要在yarn上啟動(dòng)的作業(yè)類型送漠,必須有一個(gè)顽照。

工作流程:客戶端發(fā)送請(qǐng)求到資源管理器ResourceManager,所有的NodeManager向資源管理器進(jìn)行反饋節(jié)點(diǎn)狀態(tài),ResourceManager向資源比較空閑的NodeManager發(fā)送任務(wù)代兵,NodeManager創(chuàng)建appMaster(ApplicationMaster)尼酿,任務(wù)節(jié)點(diǎn)的appMaster向ResourceManager申請(qǐng)資源,ResourceManager會(huì)在其他的節(jié)點(diǎn)開辟新的資源環(huán)境(spark中是executor)植影。計(jì)算的結(jié)果反饋給AppMaster然后由appMaster向ResourceManager反饋處理的數(shù)據(jù)結(jié)果裳擎,就明確哪些節(jié)點(diǎn)有資源可用了,接下里就可以派發(fā)任務(wù)了思币。

hadoop調(diào)度機(jī)制

默認(rèn)的調(diào)度起FIFO:先進(jìn)先出

計(jì)算能力調(diào)度器Capacity Scheduler:支持多個(gè)隊(duì)列鹿响,每個(gè)隊(duì)列可以配置一定的資源,每個(gè)隊(duì)列采用FIFO調(diào)度策略谷饿,會(huì)對(duì)同意用戶提交的作業(yè)所占資源進(jìn)行限定以防止一個(gè)用戶作業(yè)獨(dú)占隊(duì)列的資源惶我。計(jì)算每個(gè)隊(duì)列中正在運(yùn)行的任務(wù)數(shù)與其應(yīng)該分配得到的計(jì)算資源之間的比值,選擇一個(gè)比值最小的隊(duì)列各墨,然后按照作業(yè)優(yōu)先級(jí)和提交時(shí)間順序選擇指孤,同時(shí)考慮用戶資源量限制和內(nèi)存的限制。

公平調(diào)度起FairScheuler:支持多個(gè)隊(duì)列多個(gè)用戶贬堵,每個(gè)隊(duì)列資源可配置恃轩,每個(gè)隊(duì)列中的作業(yè)公平共享隊(duì)列中的所有資源。

4黎做、hadoop操作命令

hadoop dfsadmin -report 查看hdfs集群的存儲(chǔ)空間使用情況叉跛。

hadoop fs -du?-h 目錄 ? 查看當(dāng)前目錄下各個(gè)文件占得內(nèi)存 ? ?詳細(xì)說(shuō)明

Hadoop fs –rmr /tmp/aaa刪除一個(gè)目錄

Hadoop fs –put文件hdfs文件目錄上傳一個(gè)文件

Hadoop fs –get hdfs文件下載地址目錄下載一個(gè)文件

Hadoop fs –moveFromLocal文件hdfs文件目錄上傳一個(gè)文件同時(shí)刪除本地文件

Haddop fs –text hdfs目錄查看文件內(nèi)容

Haddopfs –cat hdfs目錄查看文件內(nèi)容

Hadoop job –list獲取任務(wù)列表

Hadoop job –kill job-id殺死一個(gè)job

Hadoop-daemon.sh start datanoe加入一個(gè)新的節(jié)點(diǎn)

Hadoop mradmin/dfsadmin –refreshnones刪除一個(gè)節(jié)點(diǎn)

yarn application -kill application_任務(wù)id:停止在yarn上運(yùn)行的spark任務(wù),在resourcemanager上執(zhí)行

5蒸殿、Hbase存儲(chǔ)流程

一個(gè)region由多個(gè)store組成筷厘,每個(gè)store中包含一個(gè)列蔟的所有數(shù)據(jù)。Store包括位于內(nèi)存中的memstore和位于硬盤的storefile宏所。

寫數(shù)據(jù)的時(shí)候酥艳,先寫入memstore,當(dāng)memstore中的數(shù)據(jù)達(dá)到某個(gè)閥值的時(shí)候爬骤,HRegionServer會(huì)啟動(dòng)flushCache進(jìn)程將數(shù)據(jù)寫入到一個(gè)新的storefile充石,而當(dāng)storefile文件的數(shù)量增長(zhǎng)到一定程度的時(shí)候,系統(tǒng)會(huì)將storefile進(jìn)行合并霞玄,進(jìn)行版本合并以及刪除操作骤铃,形成更大的storefile。而當(dāng)storefile文件不斷合并坷剧,數(shù)據(jù)量再次超過一定閥值的時(shí)候惰爬,就會(huì)將region分割為兩個(gè)region,并有HMaster分配到響應(yīng)的region服務(wù)器惫企,實(shí)現(xiàn)了負(fù)載均衡撕瞧。

客戶端在檢索數(shù)據(jù)的時(shí)候,現(xiàn)在memstore中找數(shù)據(jù)莫辨,沒有的話再尋找storefile萎羔。

Hbase適用于比較成熟的數(shù)據(jù)分析主題溶弟,查詢模式已經(jīng)確立肠骆,并且不會(huì)輕易改變键耕,傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)已經(jīng)無(wú)法承受負(fù)荷携御,高速插入和大量的讀取搂抒。適合海量的同時(shí)也是簡(jiǎn)單的查詢操作姑宽,比如keyvalue形式寇漫。

Family數(shù)量選擇:如果是離線應(yīng)用刊殉,寫操作比較多,那么盡量使用一個(gè)family州胳,因?yàn)楫?dāng)一個(gè)family達(dá)到flush條件的時(shí)候记焊,該region會(huì)出發(fā)所有family所屬的memstore進(jìn)行flush,即使其他memstore數(shù)據(jù)很少也會(huì)flush而聲稱小文件栓撞,容易增加compaction發(fā)生的幾率遍膜,而compaction是一region為單位的,很容易導(dǎo)致降低系統(tǒng)的整體吞吐率瓤湘。但是如果使在線應(yīng)用則可以根據(jù)實(shí)際情況多設(shè)置family瓢颅,每次讀取數(shù)據(jù)不用加載多有family,io更少弛说,并且多個(gè)family導(dǎo)致數(shù)據(jù)被分配到多個(gè)hfile中挽懦,減少了split發(fā)生的幾率,會(huì)讓系統(tǒng)提供更加穩(wěn)定的在線服務(wù)木人。

6信柿、Spark各個(gè)進(jìn)程以及作用

Master進(jìn)程:管理整個(gè)集群資源,Yarn中為ResouceManager

Worker進(jìn)程:負(fù)責(zé)管理本節(jié)點(diǎn)的資源醒第,定期向Master匯報(bào)心跳渔嚷,接收Master的命令,啟動(dòng)Executor稠曼。Yarn中為NodeManager

client:客戶端進(jìn)程形病,負(fù)責(zé)提交作業(yè)到Master。在yarn-cluster模式中蒲列,在Resource Manager端提交應(yīng)用程序,會(huì)生成SparkSubmit進(jìn)程搀罢,該進(jìn)程只用來(lái)做Client端蝗岖,應(yīng)用程序提交給集群后,就會(huì)刪除該進(jìn)程榔至。

Application:基于spark的用戶程序抵赢,包含了driver程序和集群上的executor

Driver:一個(gè)Spark作業(yè)運(yùn)行時(shí)包括一個(gè)Driver進(jìn)程,也是作業(yè)的主進(jìn)程,負(fù)責(zé)作業(yè)代碼的解析铅鲤、生成Stage并調(diào)度Task到Executor上划提。包括DAGScheduler,TaskScheduler邢享。在yarn-cluster模式中鹏往,resourcemanager會(huì)選取一個(gè)nonemanager上運(yùn)行applicationManager,該AM會(huì)同時(shí)運(yùn)行著Driver骇塘。

ClusterManager:在集群上獲取資源的外部服務(wù)(如standalone伊履、yarn)

Executor:在worker上為某個(gè)應(yīng)用啟動(dòng)的一個(gè)進(jìn)程,負(fù)責(zé)接收taskSet款违,運(yùn)行任務(wù)唐瀑,以及將數(shù)據(jù)存儲(chǔ)到內(nèi)存或者是磁盤上,每個(gè)應(yīng)用都有自己獨(dú)立的executors插爹。

Task:被送到某個(gè)executor上的工作節(jié)點(diǎn)

Job:和spark的action對(duì)應(yīng)哄辣,包含很多任務(wù)的并行計(jì)算

Stage:一個(gè)job被拆分為多組任務(wù),每組任務(wù)被稱為stage

DAGScheduler:基于stage構(gòu)建DAG赠尾,決定每個(gè)任務(wù)的最佳位置力穗;記錄哪個(gè)RDD或者stage需要物化;將taskset(一組task)傳給底層調(diào)度起TaskScheduler萍虽;重新提交shuffle輸出丟失的stage

TaskScheduler:提交taskset到集群運(yùn)行并匯報(bào)結(jié)果睛廊;出現(xiàn)shuffle輸出lost要報(bào)告fetch

sparkContext:整個(gè)應(yīng)用的上下文,控制應(yīng)用的生命周期

SparkConf:負(fù)責(zé)存儲(chǔ)配置信息

failed錯(cuò)誤杉编;碰到straggle任務(wù)需要放到別的節(jié)點(diǎn)上重試超全;為每一個(gè)taskset維護(hù)一個(gè)taskSetmanager(追蹤本地性及錯(cuò)誤信息)

7、Flume進(jìn)程以及作用

Agent:是一個(gè)java進(jìn)程邓馒,運(yùn)行在日志收集節(jié)點(diǎn)嘶朱,包括sorce、channle光酣、sink組件

Source:用于收集日志疏遏,可以處理各種格式的日志數(shù)據(jù),包括:avro/thrigt/exec/jms/spooling/directory/netcat/sequence

generator/syslog/http/legacy/自定義救军,收集之后存放在channel中

Channel:用于臨時(shí)存儲(chǔ)數(shù)據(jù)财异,可以放在memory/jdbc/file/自定義中,channel中的數(shù)據(jù)只有sink發(fā)送成功之后才會(huì)被刪除

Sink:用于將數(shù)據(jù)發(fā)送到目的地唱遭,目的地包括hdfs/logger/avro/thrigt/ipc/file/null/hbase/solr/自定義

在整個(gè)數(shù)據(jù)傳輸過程中流動(dòng)的是event戳寸,事務(wù)保證是在event級(jí)別。

8拷泽、Hbase進(jìn)程以及作用

Client:包含訪問hbase的接口并維護(hù)cache來(lái)加快對(duì)hbase的訪問

Zookeeper:保證Master的唯一性疫鹊,存儲(chǔ)Region的尋址入口袖瞻,實(shí)時(shí)監(jiān)控RegionServer的上線和下線信息,并實(shí)時(shí)通知Master拆吆、存儲(chǔ)Hbase的schema和table的元數(shù)據(jù)

HMaster:為RegionServer分配region聋迎、負(fù)責(zé)RegionServer的負(fù)載均衡、發(fā)現(xiàn)實(shí)效的RegionServer并重新分配其上的region枣耀、管理永輝對(duì)table的增刪改查霉晕。

HRegionServer:維護(hù)region并處理對(duì)這些region的IO請(qǐng)求,負(fù)責(zé)切分在運(yùn)行過程中變大的region奕枢。

9娄昆、kafka進(jìn)程機(jī)器作用

Producer:生產(chǎn)者

Consumer:消費(fèi)者

Broker:kafka集群的server,負(fù)責(zé)處理消息讀寫請(qǐng)求缝彬,存儲(chǔ)消息

Topic:消息隊(duì)列萌焰、分類

Queue:里邊有生產(chǎn)者消費(fèi)者模型

10、spark中client和cluster的區(qū)別和作用

(1)client

Driver運(yùn)行在客戶端(啟動(dòng)在本地機(jī)器上)谷浅。

這里Driver會(huì)負(fù)責(zé)所有任務(wù)的調(diào)度扒俯,頻繁與集群上的多個(gè)executor通信(task啟動(dòng)消息、執(zhí)行統(tǒng)計(jì)消息一疯、運(yùn)行狀態(tài)撼玄、shuffle輸出結(jié)果等),頻繁大量的通信(一般情況本地機(jī)器與集群不在一個(gè)機(jī)房)墩邀,會(huì)導(dǎo)致本地通信負(fù)載高掌猛。但是所有的日志都會(huì)在本地機(jī)器上看到,適合做測(cè)試時(shí)候使用眉睹。

Spark-Standlone-Client

客戶端啟動(dòng)后直接運(yùn)行程序啟動(dòng)Driver相關(guān)工作:DAGScheduler和BlockManagerMaster等荔茬。客戶端的Driver向Master注冊(cè)竹海。Master會(huì)讓W(xué)orker啟動(dòng)Executor慕蔚,Worker創(chuàng)建一個(gè)ExecutorRunner線程,executorRunner會(huì)啟動(dòng)ExecutorBackend進(jìn)程斋配。ExecutorBackend啟動(dòng)后向Driver的ExecutorBackend注冊(cè)孔飒,Driver的DAGScheduler解析作業(yè)并生成相應(yīng)的Stage,每個(gè)Stage包含的task通過taskScheduler分配給executor執(zhí)行艰争。最后所有的stage執(zhí)行完之后作業(yè)結(jié)束

Spark-Yarn-Client

本地機(jī)器提交Application到ResourceManager坏瞄,會(huì)直接在本地機(jī)器啟動(dòng)Driver程序,RM在資源充足的一臺(tái)NodeManager啟動(dòng)ApplicationMaster甩卓,之后AM向RM申請(qǐng)executor鸠匀,RM根據(jù)各個(gè)節(jié)點(diǎn)的資源情況分配container,并告知AM猛频,各個(gè)NodeManager啟動(dòng)executor狮崩,啟動(dòng)之后各個(gè)NodeManager向Driver反向注冊(cè),這時(shí)候Driver就知道自己有哪些資源可以使用了鹿寻,然后就可以執(zhí)行job睦柴、拆分stage等的計(jì)算任務(wù)了。

感覺ApplicationMaster除了申請(qǐng)executor沒有其他作用了毡熏。

(2)cluster

Driver執(zhí)行在任務(wù)節(jié)點(diǎn)(在其中一臺(tái)NodeManager坦敌,和ApplicationMaster運(yùn)行在一起)

Spark-Standlone-Cluster

作業(yè)提交給Master,Master讓一個(gè)worker啟動(dòng)Driver(SchedulerBackend)痢法,創(chuàng)建一個(gè)DriverRunner線程狱窘,啟動(dòng)SchedulerBackend進(jìn)程。Master會(huì)讓其他worker啟動(dòng)Executor(ExecutorBackend)創(chuàng)建一個(gè)ExecutorRunner線程财搁,啟動(dòng)ExecutorBackend進(jìn)程蘸炸。ExecutorBackend啟動(dòng)之后向Driver的SchedulerBackend注冊(cè),SchedulerBackend進(jìn)程中包含DAGScheduler尖奔,它會(huì)根據(jù)用戶程序生成執(zhí)行計(jì)劃并調(diào)度執(zhí)行搭儒。對(duì)每個(gè)stage的task都會(huì)存放到taskScheduler中,當(dāng)executorScheduler向SchedulerBackend匯報(bào)的時(shí)候吧taskScheduler中的task調(diào)度到executorBackend執(zhí)行提茁。最后所有的stage運(yùn)行完之后作業(yè)結(jié)束淹禾。

Spark-Yarn-Cluster

本地機(jī)器提交Application到ResourceManager,RM在資源充足的一臺(tái)NodeManager啟動(dòng)ApplicationMaster茴扁,Driver與其一同啟動(dòng)铃岔,之后向RM申請(qǐng)executor,RM根據(jù)各個(gè)節(jié)點(diǎn)的資源情況分配container峭火,并告知AM毁习,ApplicationManager向各個(gè)NodeManager啟動(dòng)executor,啟動(dòng)之后各個(gè)NodeManager向AM反向注冊(cè)躲胳,這時(shí)候ApplicationManager(Driver)就知道自己有哪些資源可以使用了蜓洪,然后就可以執(zhí)行job、拆分stage等的計(jì)算任務(wù)了坯苹。

(3)注意點(diǎn)

Standlone模式下隆檀,application的注冊(cè)(executor的申請(qǐng))以及任務(wù)調(diào)度都是由driver來(lái)的。

spark on yarn模式下粹湃,application的注冊(cè)(executor的申請(qǐng))由AM進(jìn)行恐仑,任務(wù)調(diào)度由Driver,是分離開來(lái)的

11为鳄、HDFS讀寫流程

(1)HDFS讀流程:

第一步:客戶端通過Distributed file system的api的open方法裳仆;

第二步:open方法發(fā)送請(qǐng)求到namenode,獲得Block的位置信息(位置信息只有元數(shù)據(jù)才知道)孤钦,將block的全部位置信息返還給客戶端歧斟;

第三步:客戶端收到block位置后開始讀取纯丸,通過FSDataInputStream著api中的read方法讀取静袖;

第四步:通過FSDataInputStream著api進(jìn)行并發(fā)的讀取各個(gè)block觉鼻,也就是一起讀,在讀的過程中只讀其中的一個(gè)副本就可以類队橙,優(yōu)先讀取離同一個(gè)機(jī)架坠陈;

第五步:關(guān)閉,并在客戶端形成一個(gè)統(tǒng)一的文件捐康。

(2)HDFS寫流程

第一步:客戶端通過調(diào)用Distributed File System的api的create方法可以取創(chuàng)建一個(gè)文件仇矾;

第二步:Nameode可以接受到你的文件名是什么,文件大小用戶是誰(shuí)解总,namenode確定block的數(shù)量以及需要存放的datenode贮匕;

第三步:客戶端開始讀數(shù)據(jù),通過FSDataInputStream的write方法進(jìn)行寫花枫;

第四步:著方法只將一個(gè)block寫到databode上粗合,由當(dāng)前的datanode去創(chuàng)建一個(gè)線程,往其他的datanode上按照當(dāng)前的副本規(guī)則取復(fù)制其他副本乌昔;

第五步:返回一個(gè)回饋信息隙疚,表示上傳完成

第六步:關(guān)閉,并匯報(bào)給namenode一個(gè)上傳完畢的信息

12磕道、spark on yarn和mapreduce on?yarn區(qū)別

(1)mapreduce使用多進(jìn)程來(lái)運(yùn)行多個(gè)獨(dú)立task供屉,方便細(xì)粒度空值每個(gè)任務(wù)占用的資源,但會(huì)消耗更多啟動(dòng)時(shí)間溺蕉,不適合運(yùn)行低延遲類型作業(yè)伶丐;spark使用多個(gè)executor進(jìn)程,每個(gè)中用多個(gè)task線程運(yùn)行疯特,適合低延遲類型作業(yè)哗魂。

(2)spark有利于內(nèi)存共享,所有任務(wù)運(yùn)行在一個(gè)進(jìn)程中漓雅,適合內(nèi)存密集型任務(wù)(如需要加載大量詞典的應(yīng)用程序)录别,executor申請(qǐng)的資源可被多批任務(wù)重復(fù)使用。Mapreduce每個(gè)task單獨(dú)申請(qǐng)資源用完后釋放邻吞,2.0沒有支持jvm重用功能组题。

(3)spark會(huì)導(dǎo)致嚴(yán)重的資源爭(zhēng)用,難以細(xì)粒度控制每個(gè)任務(wù)的資源量抱冷,而mapreduce控制資源占用量有利于大作業(yè)平穩(wěn)運(yùn)行崔列。

(4)mapreduce:每個(gè)task運(yùn)行在一個(gè)獨(dú)立jvm進(jìn)程中;支持內(nèi)存旺遮、cpu兩種資源的調(diào)配赵讯;task運(yùn)行完就釋放資源

(5)spark:每個(gè)節(jié)點(diǎn)運(yùn)行一個(gè)或多個(gè)executor服務(wù)盈咳,每個(gè)executor配有一定數(shù)量的slot,表示該executor可以同時(shí)運(yùn)行多少個(gè)shufflemaptask或者reduceTask边翼。每個(gè)executor運(yùn)行在一個(gè)jvm進(jìn)程中猪贪,每個(gè)task是運(yùn)行在executor中的一個(gè)子進(jìn)程;同一個(gè)executor內(nèi)部的task共享內(nèi)存(比如廣播變量)讯私,executor一旦啟動(dòng)將一直運(yùn)行,資源一直被task復(fù)用西傀,知道spark程序運(yùn)行完成才釋放退出斤寇。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市拥褂,隨后出現(xiàn)的幾起案子娘锁,更是在濱河造成了極大的恐慌,老刑警劉巖饺鹃,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件莫秆,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡悔详,警方通過查閱死者的電腦和手機(jī)镊屎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)茄螃,“玉大人缝驳,你說(shuō)我怎么就攤上這事」椴裕” “怎么了用狱?”我有些...
    開封第一講書人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)拼弃。 經(jīng)常有香客問我夏伊,道長(zhǎng),這世上最難降的妖魔是什么吻氧? 我笑而不...
    開封第一講書人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任溺忧,我火速辦了婚禮,結(jié)果婚禮上盯孙,老公的妹妹穿的比我還像新娘砸狞。我一直安慰自己,他們只是感情好镀梭,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開白布刀森。 她就那樣靜靜地躺著,像睡著了一般报账。 火紅的嫁衣襯著肌膚如雪研底。 梳的紋絲不亂的頭發(fā)上埠偿,一...
    開封第一講書人閱讀 49,772評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音榜晦,去河邊找鬼冠蒋。 笑死,一個(gè)胖子當(dāng)著我的面吹牛乾胶,可吹牛的內(nèi)容都是我干的抖剿。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼识窿,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼斩郎!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起喻频,我...
    開封第一講書人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤缩宜,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后甥温,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體锻煌,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年姻蚓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了宋梧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡狰挡,死狀恐怖乃秀,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情圆兵,我是刑警寧澤跺讯,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站殉农,受9級(jí)特大地震影響刀脏,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜超凳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一愈污、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧轮傍,春花似錦暂雹、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春涧尿,著一層夾襖步出監(jiān)牢的瞬間系奉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工姑廉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留缺亮,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓桥言,卻偏偏與公主長(zhǎng)得像萌踱,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子号阿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

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