Hadoop入門-不古出品

@TOC

1.初識Hadoop

大數(shù)據(jù)時代已經(jīng)到來薪前,越來越多的行業(yè)面臨著大量數(shù)據(jù)需要存儲以及分析的挑戰(zhàn)乏屯。Hadoop,作為一個開源的分布式并行處理平臺份企,以其高擴(kuò)展、高效率惦费、高可靠等優(yōu)點,得到越來越廣泛的應(yīng)用抢韭。本課旨在培養(yǎng)學(xué)員理解Hadoop的架構(gòu)設(shè)計以及掌握Hadoop的運用能力薪贫。

1.1前言

1.1.1課程名稱

Hadoop大數(shù)據(jù)平臺架構(gòu)與實踐

1.1.2主要內(nèi)容

  • 1.大數(shù)據(jù)的相關(guān)概念
  • 2.Hadoop的架構(gòu)和運行機(jī)制
  • 3.實戰(zhàn):Hadoop的安裝和配置
  • 4.實戰(zhàn):Hadoop開發(fā)

1.1.3學(xué)習(xí)目標(biāo)

  • 掌握大數(shù)據(jù)存儲與處理技術(shù)的原理(理論知識)
  • 掌握Hadoop的使用和開發(fā)能力(實踐能力)

1.1.4 課程學(xué)習(xí)建議

  • 1.結(jié)合書本,知識點更加系統(tǒng)全面
    對應(yīng)的書本:hadoop技術(shù)詳解刻恭、hadoop權(quán)威指南
  • 2.實踐經(jīng)驗很重要瞧省,邊聽課邊實踐。

1.1.5課程預(yù)備知識:

  • linux常用命令
  • java編程基礎(chǔ)

1.2Hadoop的前世今生

1.2.1Hadoop基本概念

Hadoop是解決大數(shù)據(jù)的分布式集成架構(gòu)鳍贾。
當(dāng)數(shù)據(jù)達(dá)到一定規(guī)模時鞍匾,單機(jī)的存儲和分析就變得非常困難,存儲量和效率都無法達(dá)到用戶的需求骑科。
所以橡淑,為了解決大數(shù)據(jù)的存儲和處理,Google提出了三大技術(shù):

  • MapReduce
    • 概念:"Map(映射)"和"Reduce(歸約)"咆爽,它們的主要思想梁棠,都是從函數(shù)式編程語言里借來的,還有從矢量編程語言里借來的特性斗埂。它極大地方便了編程人員在不會分布式并行編程的情況下符糊,將自己的程序運行在分布式系統(tǒng)上。 當(dāng)前的軟件實現(xiàn)是指定一個Map(映射)函數(shù)蜜笤,用來把一組鍵值對映射成一組新的鍵值對濒蒋,指定并發(fā)的Reduce(歸約)函數(shù),用來保證所有映射的鍵值對中的每一個共享相同的鍵組把兔。
  • BigTable
    • 是Google設(shè)計的分布式數(shù)據(jù)存儲系統(tǒng)沪伙,用來處理海量的數(shù)據(jù)的一種非關(guān)系型的數(shù)據(jù)庫
  • GFS
    • 是一個可擴(kuò)展的分布式文件系統(tǒng),用于大型的县好、分布式的围橡、對大量數(shù)據(jù)進(jìn)行訪問的應(yīng)用。它運行于廉價的普通硬件上缕贡,并提供容錯功能翁授。它可以給大量的用戶提供總體性能較高的服務(wù)。

Hadoop是模仿Google三大技術(shù)的開源實現(xiàn)晾咪。相比于Google之前的解決方案收擦,它有如下優(yōu)勢:

  • (1)降低成本,能用PC機(jī)就不用大型機(jī)和高端存儲;
  • (2)因為用的是PC機(jī)谍倦,所以經(jīng)常發(fā)生硬件錯誤塞赂,所以通過軟件來保證高可靠性;
  • (3)簡化了并行分布式計算昼蛀。

1.2.2為什么取名Hadoop

創(chuàng)作者以他兒子一個黃色的玩具小象命名


Hadoop

1.3Hadoop的功能與優(yōu)勢

1.3.1 Hadoop是什么

是一個開源的宴猾、分布式存儲和分布式計算平臺

1.3.2Hadoop的兩個核心組件

  • 1.HDFS圆存,分布式文件系統(tǒng),存儲海量數(shù)據(jù)仇哆。
  • 2.MapReduce沦辙,并行處理框架,實現(xiàn)任務(wù)分解和調(diào)度讹剔。

1.3.3Hadoopk可以做什么

搭建大型數(shù)據(jù)倉庫油讯,PB級數(shù)據(jù)的存儲、處理辟拷、分析撞羽、統(tǒng)計等業(yè)務(wù)阐斜。


在這里插入圖片描述

1.3.3Hadoopk的優(yōu)勢

  • 1.高擴(kuò)展衫冻,理論上無限擴(kuò)展
  • 2.低成本
  • 3.成熟的生態(tài)圈


    Hadop生態(tài)圈

1.3.4Hadoopk的應(yīng)用

1.4Hadoop的生態(tài)系統(tǒng)與版本

應(yīng)用在這里插入圖片描述

1.4.1hadoop生態(tài)系統(tǒng)

  • 1.hdfs分布式存儲系統(tǒng)
  • 2.mapreduce 大數(shù)據(jù)編程模型
  • 3.相關(guān)開源工具:
    • (1)hive:將sql語句轉(zhuǎn)化為hadoop任務(wù),降低使用hadoop的門檻
    • (2)HBASE:存儲結(jié)構(gòu)化數(shù)據(jù)的分布式數(shù)據(jù)庫谒出,放棄事務(wù)特性隅俘,追求更高的擴(kuò)展,它提供數(shù)據(jù)的隨機(jī)讀寫和實時訪問笤喳,實現(xiàn)對表數(shù)據(jù)的讀寫功能
    注:和傳統(tǒng)的關(guān)系型數(shù)據(jù)庫的區(qū)別是放棄事務(wù)特性为居,追求更高的擴(kuò)展、和HDFS的區(qū)別就是habse提供數(shù)據(jù)的隨機(jī)讀寫和實時訪問杀狡,實現(xiàn)對表數(shù)據(jù)的讀寫功能
    
    • (3)zookeeper:監(jiān)控Hadoop集群里的每個節(jié)點的狀態(tài)蒙畴,管理整個集群的配置,維護(hù)數(shù)據(jù)節(jié)點之間的一致性

1.4.2hadoop版本

  • 1.x:穩(wěn)定
  • 2.x:不穩(wěn)定

2.Hadoop的安裝

  • Step1:準(zhǔn)備liunx環(huán)境呜象;
  • Step1:安裝JDK膳凝;
  • Step1:配置hadoop;

2.1準(zhǔn)備liunx環(huán)境

兩種方式:

  • 1.本機(jī)先安裝虛擬機(jī)恭陡,再安裝linux
  • 2.租用云主機(jī)蹬音,申請公網(wǎng)IP

2.2安裝JDK

Linux 下下載安裝JDK (centos)


//1、下載  : 
yum install java-1.7.0-openjdk
//查看可升級下載的軟件包
yum search java|grep jdk

//2休玩、配置環(huán)境變量: 
vim /etc/profile
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH  

//3著淆、讓配置生效
source /etc/profile

//4、測試 
java -version

注解:
1.Linux下用冒號 : 分割路徑
2.$PATH / $JAVA_HOME / $JRE_HOME 是用來引用原來環(huán)境變量的值拴疤,在設(shè)置環(huán)境變量時不能把原來的值給覆蓋掉
3.$CLASSPATH 中 當(dāng)前目錄 “.”不能丟
4.export 是把這4個變量導(dǎo)出為全局變量

2.3配置Hadoop

2.3.1安裝總結(jié)

  • 1.下載hdoop按照包并進(jìn)行解壓
  • 2.配置hdoop-env.sh文件永部,目的是配置jdk,并在profile配置haddoop的安裝位置
  • 3.配置core-site.xml文件:hdoop的核心文件呐矾,里面有關(guān)于hdoop的節(jié)點端口與主機(jī)端口
  • 4.配置hdfs-site.xml文件:hdoop的文件存儲的基本信息與目錄
  • 5.配置mapred-site.xml文件:hadoop的計算節(jié)點的端口號
  • 6.啟動hadoop:start-all.sh
  • 7.查看端口:jps,可以看到五大守護(hù)進(jìn)程說明正確
  • 8.停止hdoop:stop-all.sh

2.3.2安裝細(xì)節(jié)

//1削罩、hadoop-env.sh
配置java 環(huán)境變量的地址
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

//2、 core-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop</value>
</property>
</configuration>
<property>
<name>dfs.name.dir</name>
<value>/hadoop/name</value>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://imooc:9000</value>
</property>

//3费奸、hdfs-site.xml配置
<property>
<name>dfs.data.dir</name>
<value>/hadoop/data</value>
</property>

//4弥激、mapred-site.xml配置
<property>
<name>mapred.job.tracker</name>
<value>imooc:9001</value>
</property>

  • 4、編輯/etc/profile文件愿阐,配置hadoop相關(guān)的環(huán)境變量
vim /etc/profile
添加hadoop的HADOOP_PATH
export HADOOP_PATH="安裝目錄"
PATH里面添加$HADOOP_HOME/bin:$PATH
//讓配置生效
source /etc/profile
//測試是否安裝成功
hadoop
  • 5微服、第一次使用hadoop先進(jìn)行格式化
//對namenode 進(jìn)行格式化
$ hadoop namenode -format;
  • 6缨历、啟動hadoop
    start-all.sh
  • 7以蕴、檢查進(jìn)程:jps
    jps
// 查看hadoop文件系統(tǒng)下下有哪些文件
hadoop fs -ls

3.Hadoop的核心-HDFS簡介

3.1HDFS基本概念

  • HDFS設(shè)計架構(gòu):
    • 塊:文件以“塊”進(jìn)行存儲,HDFS默認(rèn)塊大小為64M
    • namenode:是管理節(jié)點辛孵,存放文件元數(shù)據(jù)丛肮,包括文件與數(shù)據(jù)塊的映射表、數(shù)據(jù)塊與數(shù)據(jù)節(jié)點的映射表
    • datenode:工作節(jié)點魄缚,真正存儲數(shù)據(jù)塊
      最終體系結(jié)構(gòu):由block宝与、namenode、datanode冶匹、secondarynamenode习劫、client組成

HDFS的文件被分成塊進(jìn)行存儲,HDFS塊默認(rèn)大小是64MB徙硅,塊是整個文件存儲處理的邏輯單元榜聂。

HDFS最終體系結(jié)構(gòu):由block、namenode嗓蘑、datanode须肆、secondarynamenode、client組成桩皿。


HDFS架構(gòu)圖

3.2HDFS數(shù)據(jù)管理與容錯

為保證硬件上的容錯豌汇,數(shù)據(jù)塊有多份冗余。

  • 數(shù)據(jù)塊副本:每個數(shù)據(jù)塊3個副本泄隔,分布在2機(jī)架3節(jié)點上(容錯性)
  • 心跳檢測:DataNode定期向NameNode發(fā)心跳消息拒贱。
  • 二級NameNode:NameNdoe定期同步元數(shù)據(jù)映像文件到二級NameNode(secondryNameNode),一旦故障,備胎轉(zhuǎn)正。

3.2HDFS讀寫文件的流程

  • HDFS讀取文件的流程:
    • (1)客戶端向namenode發(fā)起獨立請求逻澳,把文件名闸天,路徑告訴namenode;
    • (2)namenode查詢元數(shù)據(jù)斜做,并把數(shù)據(jù)庫返回客戶端苞氮;
    • (3)此時客戶端就明白文件包含哪些塊,這些塊在哪些datanode中可以找到瓤逼;


      HDFS讀取文件的流程
  • HDFS寫文件流程:
    • (1)客戶端把文件拆分成固定大小64M的塊笼吟,并通知namenode;
    • (2)namenode找到可用的datanode返回給客戶端霸旗;
    • (3)客戶端根據(jù)返回的datanode贷帮,對塊進(jìn)行寫入;
    • (4)通過流水線管道流水線復(fù)制诱告;
    • (5)更新元數(shù)據(jù)撵枢。告訴namenode已經(jīng)完成了創(chuàng)建心的數(shù)據(jù)塊,保證了namenode中的元數(shù)據(jù)都是最新的狀態(tài)蔬啡。


      HDFS寫文件流程

3.2HDFS的特點

  • HDFS特點:
    • 1诲侮、數(shù)據(jù)冗余,硬件容錯(一式三份來保證)箱蟆。
    • 2、流式數(shù)據(jù)訪問:寫一次刮便,讀多次空猜,一旦寫入無法修改,只能通過寫入到新的塊刪除舊文件恨旱。
    • 3辈毯、存儲大文件(特適合,因為小文件多搜贤,勢必加重NameNode的負(fù)擔(dān))谆沃。
  • HDFS適用性及局限性:
    • 1、適合數(shù)據(jù)批量讀寫仪芒,吞吐量高唁影;
    • 2、不適合交互式應(yīng)用掂名、低延遲很難滿足据沈;
    • 3、適合一次寫入多次讀取饺蔑、順序讀寫锌介;
    • 4、不支持多用戶并發(fā)寫相同文件。
  • HDFS優(yōu)缺點:
    • 優(yōu)點:存儲塊大孔祸,吞吐量高隆敢,為存儲大文件設(shè)計;
    • 缺點:延遲高崔慧,不適合交互式訪問筑公,不支持多用戶同時操作一個塊。

3.3HDFS的使用

  • 提供了 shell 接口尊浪,可以進(jìn)行命令行操作
hadoop namenode -format #格式化namenode
hadoop fs -ls / #打印 / 目錄文件列表
hadoop fs -mkdir input #創(chuàng)建目錄 input
hadoop fs -put hadoop-env.sh input/ #上傳文件 hadoop-env.sh 到 input 目錄下
hadoop fs -get input/abc.sh hadoop-envcomp.sh #從 input 目錄中下載文件
hadoop fs -cat input/hadoop-env.sh #查看文件 input/hadoop-env.sh 
hadoop dfsadmin -report #dfs報告

4.Hadoop的核心-MapReduce原理與實現(xiàn)

4.1MapReduce的原理

  • MapReduce原理:分而治之匣屡,一個大任務(wù)分成多個子任務(wù)(map),并行執(zhí)行之后拇涤,合并結(jié)果(reduce)捣作。
eg:做統(tǒng)計的時候,把統(tǒng)計的文件拆分鹅士,然后分別統(tǒng)計每一個數(shù)據(jù)出現(xiàn)的次數(shù)券躁,然后合并拆分項,就可以統(tǒng)計每一個數(shù)據(jù)出現(xiàn)的總次數(shù)掉盅。
  • MapReduce處理數(shù)據(jù)過程主要分成2個階段:Map階段和Reduce階段也拜。首先執(zhí)行Map階段,再執(zhí)行Reduce階段趾痘。Map和Reduce的處理邏輯由用戶自定義實現(xiàn)慢哈,但要符合MapReduce框架的約定。

  • 正式執(zhí)行Map前永票,需要將輸入數(shù)據(jù)進(jìn)行”分片”卵贱。所謂分片,就是將輸入數(shù)據(jù)切分為大小相等的數(shù)據(jù)塊侣集,每一塊作為單個Map Worker的輸入被處理键俱,以便于多個Map Worker同時工作。分片完畢后世分,多個Map Worker就可以同時工作了编振。每個Map Worker在讀入各自的數(shù)據(jù)后,進(jìn)行計算處理臭埋,最終輸出給Reduce踪央。Map Worker在輸出數(shù)據(jù)時,需要為每一條輸出數(shù)據(jù)指定一個Key斋泄。這個Key值決定了這條數(shù)據(jù)將會被發(fā)送給哪一個Reduce Worker杯瞻。Key值和Reduce Worker是多對一的關(guān)系,具有相同Key的數(shù)據(jù)會被發(fā)送給同一個Reduce Worker炫掐,單個Reduce Worker有可能會接收到多個Key值的數(shù)據(jù)魁莉。

  • 在進(jìn)入Reduce階段之前,MapReduce框架會對數(shù)據(jù)按照Key值排序,使得具有相同Key的數(shù)據(jù)彼此相鄰旗唁。如果用戶指定了”合并操作”(Combiner)畦浓,框架會調(diào)用Combiner,將具有相同Key的數(shù)據(jù)進(jìn)行聚合检疫。Combiner的邏輯可以由用戶自定義實現(xiàn)讶请。這部分的處理通常也叫做”洗牌”(Shuffle)。
    接下來進(jìn)入Reduce階段屎媳。相同的Key的數(shù)據(jù)會到達(dá)同一個Reduce Worker夺溢。同一個Reduce Worker會接收來自多個Map Worker的數(shù)據(jù)。每個Reduce Worker會對Key相同的多個數(shù)據(jù)進(jìn)行Reduce操作烛谊。最后风响,一個Key的多條數(shù)據(jù)經(jīng)過Reduce的作用后,將變成了一個值丹禀。


    MapReduce原理

4.2MapReduce的運行流程

流程

4.2.1. 原理

  • 分而治之 的思想状勤,一個大任務(wù)分成多個小任務(wù)(map),并行執(zhí)行后,合并結(jié)果(reduce).

4.2.2 運行流程

執(zhí)行過程
  • 基本概念:
    • Job & Task:
      一個 Job(任務(wù)双泪、作業(yè)) 被切分為多個 Task持搜,Task 又分為 MapTask 和 ReduceTask
    • JobTracker
      作業(yè)調(diào)度
      分配任務(wù)、監(jiān)控任務(wù)
      監(jiān)控 TaskTracker 的狀態(tài)
    • TaskTracker
      執(zhí)行任務(wù)
      向 JobTracker 匯報任務(wù)狀態(tài)

4.2.3 容錯機(jī)制

  • 重復(fù)執(zhí)行:
    默認(rèn)重復(fù)執(zhí)行 4 次焙矛,若還是失敗葫盼,則放棄執(zhí)行
  • 推測執(zhí)行:
    可以保證任務(wù)不會因為某1-2個機(jī)器錯誤或故障而導(dǎo)致整體效率下降

5.開發(fā)Hadoop應(yīng)用程序

5.1WordCount單詞計數(shù)(上)

  • 計算文件中出現(xiàn)每個單詞的頻數(shù),輸入結(jié)果按照字母順序進(jìn)行排序薄扁。利用mapReduce的思想剪返,來計算輸入的單詞的個數(shù)。
  • Map過程:分而治之
  • Reduce過程:合并


    Map過程
    Reduce過程

5.2WordCount單詞計數(shù)(中)

5.3WordCount單詞計數(shù)(下)

5.3.1整體流程

  • 1.編寫WordCount.java,包含Mapper類和Reducec類;
  • 2.編譯WordCount.java,java -classpath 邑滨;
  • 3.打包 jar -cvf WordCount.jar classes/*日缨;
  • 4.作業(yè)提交 hadoop jar WordCount.jar WordCount input output;
  • 提交到hadoop中運行掖看,指定輸入文件 匣距,指定輸出文件。

5.3.2具體流程


//(1)啟動hadoop
 start -all.sh
 
//(2)rz把某某.java類放到根目錄下/opt/根目錄下邊或者根目錄下任意文件
cd /mkdir project_hadoop/
rz 類路徑添加

//(3)cd 新創(chuàng)建的文件,創(chuàng)建file1和file2
mkdir input
vi file1
vi file2
ls project_hadoop

//(4)創(chuàng)建文件
 hadoop fs -mkdir input_wordcount

//(5)創(chuàng)建目錄:
hadoop fs -mkdir input
//查看文件:
 hadoop fs -ls     
 hadoop fs -ls input_wordcount 
 
//(6)把file1和file2文件放到input_wordcount
提交輸入文件給hadoop
hadoop fs -put 文件路徑 提交后的路徑
//例:
hadoop fs -put input/input_wordcount/

//(7)查看文件
hadoop fs -ls input_wordcount
fs -cat input_wordcount/file1
fs -cat input_wordcount/file2

//(8)編譯java文件
javac -classpath /opt/hadoop-1.2.1/hadoop-core-1.2.1.jar:/opt/hadoop-1.2.1/lib/commons-cli-1.2.jar -d 編譯后地址 編譯文件

//(9)打包指令
jar -cvf 打包后文件名.jar 某某.class
jar -cvf wordcount.jar *.class

//(10)提交jar給hadoop執(zhí)行
hadoop jar jar包路徑 執(zhí)行的主函數(shù)名(主類名哎壳,main方法所在類名) 輸入目錄名 輸出目錄名
//例:
hadoop jar project_hadoop/wordcount.jar WordCount input_wordcount output_wordcount

//(11)查看通過算法計算出單詞個數(shù)的結(jié)果
fs -cat output_wordcount/part-r-00000

5.4利用MapReduce進(jìn)行排序(上)

  • 先分片毅待,再排序


    分片排序

5.5利用MapReduce進(jìn)行排序(下)

  • 分析代碼
    在這里插入圖片描述

    注:配合慕課網(wǎng)視頻使用更佳
    鏈接: 點擊跳轉(zhuǎn).
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市归榕,隨后出現(xiàn)的幾起案子尸红,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件外里,死亡現(xiàn)場離奇詭異怎爵,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)盅蝗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進(jìn)店門鳖链,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人墩莫,你說我怎么就攤上這事芙委。” “怎么了狂秦?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵灌侣,是天一觀的道長。 經(jīng)常有香客問我故痊,道長顶瞳,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任愕秫,我火速辦了婚禮慨菱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘戴甩。我一直安慰自己符喝,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布甜孤。 她就那樣靜靜地躺著协饲,像睡著了一般。 火紅的嫁衣襯著肌膚如雪缴川。 梳的紋絲不亂的頭發(fā)上茉稠,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天,我揣著相機(jī)與錄音把夸,去河邊找鬼而线。 笑死,一個胖子當(dāng)著我的面吹牛恋日,可吹牛的內(nèi)容都是我干的膀篮。 我是一名探鬼主播,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼岂膳,長吁一口氣:“原來是場噩夢啊……” “哼誓竿!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起谈截,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤筷屡,失蹤者是張志新(化名)和其女友劉穎涧偷,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體速蕊,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡嫂丙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了规哲。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片跟啤。...
    茶點故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖唉锌,靈堂內(nèi)的尸體忽然破棺而出隅肥,到底是詐尸還是另有隱情,我是刑警寧澤袄简,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布腥放,位于F島的核電站,受9級特大地震影響绿语,放射性物質(zhì)發(fā)生泄漏秃症。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一吕粹、第九天 我趴在偏房一處隱蔽的房頂上張望种柑。 院中可真熱鬧,春花似錦匹耕、人聲如沸聚请。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽驶赏。三九已至,卻和暖如春既鞠,著一層夾襖步出監(jiān)牢的瞬間煤傍,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工嘱蛋, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留患久,地道東北人。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓浑槽,卻偏偏與公主長得像,于是被迫代替她去往敵國和親返帕。 傳聞我的和親對象是個殘疾皇子桐玻,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,047評論 2 355

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