hadoop2.2+zookeeper+hbase安裝詳解

hadoop2集群搭建詳解------------------------天津九安醫(yī)療電子--吳偉

一狼速、需要軟件

Jdk1.8.0_linux

Hadoop-2.2.0(Apache官網(wǎng)Stable版本)

Hbase-0.96.2(與Hadoop-2.2.0是配套的琅锻,不用覆蓋jar包)

Zookeepr-3.4.5

# 集群結(jié)構(gòu)圖


IP地址

主機(jī)名

ZK

NN

DN

JN

HRS

HM

192.168.12.109

Master1

192.168.12.122

Master2

是(備)

是(備)

192.168.12.123

Slave1

192.168.12.126

Slave2

192.168.12.127

Slave3

192.168.12.129

Slave4

192.168.12.131

Slave5


二、基礎(chǔ)配置

1向胡、配置hosts文件恼蓬,方便hadoop用主機(jī)名訪問

vi /etc/hosts

2、設(shè)置ssh免密碼登錄

1) 進(jìn)入 ~ 根目錄下的 ?.ssh 目錄(沒有的話僵芹,創(chuàng)建.ssh目錄)

2) 執(zhí)行ssh-keygen -t ?rsa

3) ls ?產(chǎn)生倆個文件(每臺都要執(zhí)行 )

?

id-rsa ? ? #私鑰 ?id-rsa.pub ? #公鑰

在每臺服務(wù)器上將公鑰復(fù)制到無需登錄的服務(wù)器上处硬,在每一臺服務(wù)器上執(zhí)ssh-copy-id的命令。

例如:

在192.168.12.109上執(zhí)行

? ? ?

ssh-copy-id -i ?~/.ssh/id_rsa.pub root@192.168.12.122

ssh-copy-id -i ?~/.ssh/id_rsa.pub root@192.168.12.123

拇派。荷辕。。件豌。疮方。

驗(yàn)證:

ssh slave1

3、關(guān)閉防火墻(centos 7)

systemctl stop firewalld.service #停止firewall

systemctl disable firewalld.service #禁止firewall開機(jī)啟動

4茧彤、安裝jdk

1)設(shè)置環(huán)境變量 ?vi ?/etc/profile ?

? 增加 export JAVA_HOME=/usr/local/jdk

? ? ? ?export HBASE_HOME=/usr/local/hbase

?

export HADOOP_HOME=/usr/local/hadoop

export ZOOKEEPER_HOME=/usr/local/zk

export

PATH=$PATH:$HBASE_HOME/bin:$HIVE_HOME/bin:$HADOOP_HOME/bin:

2)立即生效 ? ?source profile

三骡显、zookeeper安裝

1. zk服務(wù)器集群規(guī)模不小于3個節(jié)點(diǎn)(必須是奇數(shù)個),要求各服務(wù)器之間系統(tǒng)時間要保持一致。

2. 在節(jié)點(diǎn)的/usr/local目錄下蟆盐,解壓縮tar -zxvf ###承边。

3. 設(shè)置環(huán)境變量 vi /etc/profile ?增加ZOOKEEPER_HOME=~~~

? ?立即生效

Source /etc/profile

4. 在zk/conf目錄下,重命名文件 mv zoo_sample.cfg ?zoo.cfg

? ?編輯該文件石挂,執(zhí)行vi zoo.cfg

? 修改dataDir=/usr/local/zk/data ? ------------------存放數(shù)據(jù)目錄

? 新增:zk節(jié)點(diǎn)=對應(yīng)的hadoop節(jié)點(diǎn)

? ? Server.1=master1:2888:3888

(一個是通信端口博助,一個是選舉端口)

? ? Server.2=master2:2888:3888?

? ?Server.3=slave1:2888:3888

。痹愚。富岳。。拯腮。窖式。

5 創(chuàng)建文件夾存放數(shù)據(jù)目錄mkdir /usr/local/zk/data

6 在data目錄下,創(chuàng)建文件myid动壤,值為1

7 把zk目錄復(fù)制到其他節(jié)點(diǎn)

8 把其他節(jié)點(diǎn)中相應(yīng)的myid的值改為2

9 啟動:

? 在三個節(jié)點(diǎn)上分別執(zhí)行命令(在zk/bin下執(zhí)行)zkServer.sh start

?執(zhí)行后bin下多了zookeeper.out(日志)

10 檢驗(yàn)萝喘,在三個節(jié)點(diǎn)上分別執(zhí)行命令zkServer.sh status (leader或者follower)

時間同步

# yum install -y ntp ?#安裝ntp服務(wù)

# ntpdate cn.pool.ntp.org ?#同步網(wǎng)絡(luò)時間


四、hadoop2.2安裝

# 修改7個配置文件

~/hadoop-2.2.0/etc/hadoop/hadoop-env.sh

~/hadoop-2.2.0/etc/hadoop/core-site.xml

~/hadoop-2.2.0/etc/hadoop/hdfs-site.xml

~/hadoop-2.2.0/etc/hadoop/mapred-site.xml

~/hadoop-2.2.0/etc/hadoop/yarn-env.sh

~/hadoop-2.2.0/etc/hadoop/yarn-site.xml

~/hadoop-2.2.0/etc/hadoop/slaves


# 1修改hadoop-env.sh配置文件(jdk 路徑)

exportJAVA_HOME=/usr/local/jdk

# 2修改core-site.xml文件修改?

<configuration>

? ? ? ?<property>

? ? ? ? ? ? ? <name>fs.defaultFS</name>

? ? ? ? ? ? ? <value> hdfs://mycluster </value>

? ? ? ?</property>

? ?<property>

? ? ? ? ? ? ? <name>hadoop.tmp.dir</name>

? ? ? ? ? ? ? <value>/usr/local/hadoop/tmp</value>

? ? ? ?</property>【這里的路徑默認(rèn)是NameNode琼懊、DataNode阁簸、JournalNode等存放數(shù)據(jù)的公共目錄。用戶也可以自己單獨(dú)指定這三類節(jié)點(diǎn)的目錄哼丈∑裘茫】?

? ? ? ?<property>

? ? ? ? ? ? ? <name>dfs.nameservices</name>

? ? ? ? ? ? ? <value>mycluster</value>

? ? ? ?</property>

【NameService實(shí)際就是HDFS集群的別名。使用federation時醉旦,可使用了多個HDFS集群饶米。】?

? ? ? ?<property>

? ? ? ? ? ? ? <name>ha.zookeeper.quorum</name>

? ? ? ? ? ? ? <value>master1:2181,master2:2181,slave1:2181,slave2:2181,slave3:2181,slave4:2181,slave5:2181</value>

? ? ? ?</property>

【這里是ZooKeeper集群的地址和端口车胡。注意檬输,數(shù)量一定是奇數(shù),且不少于三個節(jié)點(diǎn)】?

</configuration>

# 3修改hdfs-site.xml配置文件

<configuration>

? ? ? ?<property>

? ? ? ? ? ? ? <name>dfs.nameservices</name>

? ? ? ? ? ? ? <value> mycluster </value>

? ? ? ?</property>

? ? ? ?<property>

? ? ? ? ? ? ? <name>dfs.ha.namenodes.mycluster</name>

? ? ? ? ? ? ? <value>master1,master2</value>

? ? ? ?</property>

【指定NameService是mycluster時的namenode有哪些】?


? ? ? ?<property>

? ? ? ? ? ? ? <name>dfs.namenode.rpc-address.mycluster.master1</name>

? ? ? ? ? ? ? <value>master1:9000</value>

? ? ? ?</property>

【指定master1的RPC地址】

? ? ? ?<property>

? ? ? ? ? ? ? <name>dfs.namenode.rpc-address.mycluster.master2</name>

? ? ? ? ? ? ? <value>master2:9000</value>

? ? ? ?</property>

【指定master2的RPC地址】

? ? ? ?<property>

? ? ? ? ? ? ? <name>dfs.namenode.http-address.mycluster.master1</name>

? ? ? ? ? ? ? <value>master1:50070</value>

? ? ? ?</property>

【指定master1的http地址】

? ? ? ?<property>

? ? ? ? ? ? ? <name>dfs.namenode.http-address.mycluster.master2</name>

? ? ? ? ? ? ? <value>master2:50070</value>

? ? ? ?</property>

【指定master2的http地址】

? ? ? ?<property>

? ? ? ? ? ? ? <name>dfs.namenode.shared.edits.dir</name>

? ? ? ? ? ? ? <value>qjournal://master1:8485;master2:8485;slave1:8485;slave2:8485;slave3:8485/mycluster</value>

? ? ? ?</property>

【指定mycluster的兩個NameNode共享edits文件目錄時吨拍,使用的JournalNode集群信息】

? ? ? <property>

? ? ? ? ? <name>dfs.ha.automatic-failover.enabled.mycluster</name>

? ? ? ? <value>true</value>

? ? </property>

【指定mycluster是否啟動自動故障恢復(fù)褪猛,即當(dāng)NameNode出故障時,是否自動切換到另一臺NameNode】

? ? ? ?<property>

? ? ? ? ? ? ? <name>dfs.client.failover.proxy.provider.mycluster</name>

? ? ? ?<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>

? ? ? ?</property>

【指定mycluster出故障時羹饰,哪個實(shí)現(xiàn)類負(fù)責(zé)執(zhí)行故障切換】?

? ? ? ?<property>

? ? ? ? ? ? ? <name>dfs.ha.fencing.methods</name>

? ? ? ? ? ? ? <value>sshfence</value>

? ? ? ?</property>

【一旦需要NameNode切換,使用ssh方式進(jìn)行操作】?

? ? ? ?<property>

? ? ? ? ? ? ? <name>dfs.ha.fencing.ssh.private-key-files</name>

? ? ? ? ? ? ? <value>/root/.ssh/id_rsa</value>

? ? ? ?</property>

【如果使用ssh進(jìn)行故障切換碳却,使用ssh通信時用的密鑰存儲的位置】

? ? ? ?<property>

? ? ? ? ? ? ? <name>dfs.journalnode.edits.dir</name>

? ? ? ? ? ? ? <value>/usr/local/hadoop/tmp/journal</value>

? ? ? ?</property>

? ? ? ?<property>

? ? ? ? ? ? ? <name>dfs.replication</name>

? ? ? ? ? ? ? <value>3</value>

? ? ? ?</property>

【指定DataNode存儲block的副本數(shù)量队秩。默認(rèn)值是3個,我們現(xiàn)在有7個DataNode昼浦,該值不大于7即可馍资。】

? ? ? ?<property>

? ? ? ? ? ? ? <name>dfs.webhdfs.enabled</name>

? ? ? ? ? ? ? <value>true</value>

? ? ? ?</property>

</configuration>

# 4修改 mapred?-site.xml配置文件

<configuration>

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

【指定運(yùn)行mapreduce的環(huán)境是yarn关噪,與hadoop1截然不同的地方】?


</configuration>


# 5修改yarn-env.sh配置文件

exportJAVA_HOME=/usr/local/jdk

【這里的JAVA_HOME的值是jdk的安裝路徑】


# 6修改yarn-site.xml配置文件?

<configuration>

? ? ? ? <property>

? ? ? ? ? ? ? <name>yarn.nodemanager.aux-services</name>

? ? ? ? ? ? ? <value>mapreduce_shuffle</value>

? ? ? ?</property>

? ? ? ?<property>

? ? ? ? ? ? ? <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>

? ? ? ? ? ? ? <value>org.apache.hadoop.mapred.ShuffleHandler</value>

? ? ? ?</property>

? ? ? ?<property>

? ? ? ? ? ? ? <name>yarn.resourcemanager.hostname</name>

? ? ? ? ? ? ? <value>master1</value>

? ? ? ?</property>

【自定ResourceManager的地址鸟蟹,還是單點(diǎn)乌妙,這是隱患】

</configuration>


# 7修改slaves配置文件

master1

master2

slave1

slave2

slave3

slave4

slave5

【指定所有的DataNode節(jié)點(diǎn)列表,每行一個節(jié)點(diǎn)名稱】














五建钥、啟動集群

1藤韵、啟動Zookeeper集群

在usr/local/zk/bin 目錄下

執(zhí)行啟動命令:zkServer.sh start

# 驗(yàn)證Zookeeper是否啟動成功1

查看狀態(tài)命令:zkServer.sh status?

在 master1上查看 zookeeper 的狀態(tài)發(fā)現(xiàn)是 leader

在其他的機(jī)器上查看 zookeeper 的狀態(tài)發(fā)現(xiàn)是 follower

#驗(yàn)證Zookeeper是否啟動成功2

在usr/local/zk/bin 目錄下

執(zhí)行進(jìn)入命令行命令:

zkCli.sh

Connecting to localhost:2181

?[zk: localhost:2181(CONNECTED) 0] ls /

[zookeeper]

[zk: localhost:2181(CONNECTED) 1]

出現(xiàn)這樣的提示的話,那么 zookeeper 就啟動成功了


2熊经、格式化ZooKeeper集群泽艘,目的是在ZooKeeper集群上建立HA的相應(yīng)節(jié)點(diǎn)。

在usr/local/hadoop/bin 目錄下

執(zhí)行命令: hdfs zkfc -formatZK

# 驗(yàn)證zkfc是否格式化成功

進(jìn)入客戶端 zkCli.sh?

[zk: localhost:2181(CONNECTED) 1] ls /hadoop-ha?

[mycluster]?

【格式化操作的目的是在ZK集群中建立一個節(jié)點(diǎn)镐依,用于保存集群c1中NameNode的狀態(tài)數(shù)據(jù)】


3匹涮、完全分布式 啟動Hadoop(切記順序不能亂)

# 在 master1,master2,slave1,slave2,slave3上分別啟動 journalnode

[root@master1sbin]# ./hadoop-daemon.sh start journalnode

# 在master1,master2上分別格式化和啟動namenode

從 master1和 master2中任選一個即可槐壳,這里選擇的是 master1

[root@master1sbin]# ../bin/hdfs namenode –format

[root@master1sbin]# ./hadoop-daemon.sh start namenode

# 將master1上namenode的數(shù)據(jù)同步到master2中去然低,需要在master2上執(zhí)行hadoop的命令

[root@rs227 sbin]# ../bin/hdfs namenode -bootstrapStandby

[root@rs227 sbin]# ./hadoop-daemon.sh start namenode

# 打開瀏覽器,訪問master1跟master2的50070端口

如果都能訪問到务唐,說明你 namenode 啟動成功了雳攘,并且這兩個 namenode 都是 standby 狀態(tài)

# namenode ( master1)轉(zhuǎn)換成 active (這里不需要手動將 namenode 轉(zhuǎn)換為 active 狀態(tài)了,因?yàn)槲覀兪墙唤o Zookeeper 管理绍哎,在后面會啟動 ZooKeeperFailoverController )

# 啟動所有的 datanodes(在master1上執(zhí)行命令)

[root@master1sbin]# ./hadoop-daemons.sh start datanode

?[root@master1sbin]# jps

25627 Jps

24037 NameNode

25168 DataNode

23343 JournalNode

29367 QuorumPeerMain

# 實(shí)驗(yàn)一下手動切換 namenode 的狀態(tài) (這里也不需要做来农, Zookeeper 管理的,自動切換崇堰,下面會講到)

# yarn啟動

[root@master1sbin]# ./start-yarn.sh

starting yarn daemons

# 訪問master1的8088端口查看ResourceManager的UI界面

?


# 啟動ZooKeeperFailoverController

#在master1上執(zhí)行命令

[root@master1sbin]# ./hadoop-daemon.sh start zkfc

#在master2上執(zhí)行命令

[root@master2 sbin]# ./hadoop-daemon.sh start zkfc

# 打開瀏覽器沃于,再訪問master1跟master2的50070端口

發(fā)現(xiàn) master1變成 active 狀態(tài)了,而 master2還是 standby 狀態(tài)

# 驗(yàn)證HDFS是否好用

[root@master1sbin]# ../bin/hadoop fs -putyarn-daemon.sh /yting

[root@master1sbin]# ../bin/hadoop fs -ls /yting

Found 1 items

-rw-r--r-- ? 3root supergroup ? ? ? 4278 2014-06-1018:29 /yting/yarn-daemon.sh


# 驗(yàn)證YARN是否好用

[root@master1bin]# pwd

/usr/local/adsit/yting/apache/hadoop/hadoop-2.2.0/bin

[root@master1bin]# ./hadoop jar../share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar pi 10 100

…( 不重要的部分就省略了海诲,能出這個值就是對的繁莹,虛擬機(jī)可能會卡著不動,也可能會卡死特幔,屬于正匙裳荩現(xiàn)象,內(nèi)存消耗比較大 )

Job Finished in 25.361 seconds

valueof Pi is 3.14800000000000000000

# 驗(yàn)證HA高可用性蚯斯,是否自動故障轉(zhuǎn)移

在master1節(jié)點(diǎn)active namenode上執(zhí)行 jps 薄风,確定namenode進(jìn)程,kill 將其殺掉拍嵌,之后刷新頁面我們發(fā)現(xiàn)master2節(jié)點(diǎn)(原standy)自動變成了 active namenode遭赂。




六、安裝hbase

?

按照上圖下載正確的hbase版本(版本問題很重要横辆,是很多錯誤的根源)


# Hbase-0.96.2-hadoop2(啟動雙HMaster的配置撇他,master1是主HMaster,master2是從HMaster)

# 解壓Hbase-0.96.2-hadoop2-bin.tar.gz

? tar -zxvfhbase-0.96.2-hadoop2-bin.tar.gz

# 修改hbase-env.sh 文件

?[root@master conf]# vi hbase-env.sh

export JAVA_HOME=/usr/local/jdk

export HBASE_MANAGES_ZK=false

# 配置hbase-site.xml 文件

<configuration>

? ? ? ?<property>

? ? ? ? ? ? ? ?<name>hbase.rootdir</name>

? ? ? ? ? ? ? ?<value>hdfs://mycluster/hbase</value> <!-- 這里必須跟 core-site.xml 中的配置一樣 -->

? ? ? ?</property>

? ? ? ?<property>

? ? ? ? ? ? ? ?<name>hbase.cluster.distributed</name>

? ? ? ? ? ? ? ?<value>true</value>

? ? ? ?</property>

? ? ? ?<property>

? ? ? ? ? ? ? ?<name>hbase.tmp.dir</name>

? ? ? ? ? ? ? ?<value>/usr/local/hbase/tmp</value>

? ? ? ?</property>

? ? ? ?<property>

? ? ? ? ? ? ? ?<name>hbase.master</name>

? ? ? ? ? ? ? ?<value>60000</value> # 這里是對的,只配置端口困肩,為了配置多個 HMaster

? ? ? ? </property>

? ? ? ?<property>

? ? ? ? ? ? ? ?<name>hbase.zookeeper.quorum</name>

? ? ? ? ? ? ? ?<value>master1,master2,slave1,slave2,slave3,slave4,slave5</value>

? ? ? ?</property>

? ? ? ?<property>

? ? ? ? ? ? ? ?<name>hbase.zookeeper.property.clientPort</name>

? ? ? ? ? ? ? ? <value>2181</value>

? ? ? ?</property>

? ? ? ?<property>

? ? ? ? ? ? ? ?<name>hbase.zookeeper.property.dataDir</name>

? ? ? ? ? ? ? ?<value>/usr/local/zookeeper/data</value>

? ? ? ?</property>

</configuration>

# 配置regionservers

[root@master1conf]# vi regionservers

slave1

slave2

slave3

slave4

slave5

# 創(chuàng)建hdfs-site.xml的軟連接

?[root@master1conf]# ln /usr/local/hadoop/etc/hadoop/hdfs-site.xml hdfs-site.xml

# 啟動hbase

[root@master1hbase-0.96.2-hadoop2]# ./bin/start-hbase.sh

?[root@master1hbase-0.96.2-hadoop2]# jps

5131 Jps

4827 HRegionServer

4661 HMaster

6395 NodeManager

6272 DataNode

29849 QuorumPeerMain

# hbase shell 驗(yàn)證 1(查看hbase的版本跟狀態(tài))

hbase(main):003:0> list ?# 剛剛創(chuàng)建的表

hbase(main):004:0> version

0.96.2-hadoop2, r1581096, Mon Mar 24 16:03:18 PDT2014

hbase(main):005:0> status

5 servers, 0 dead, 0.8000 average load

# hbase shell 驗(yàn)證 2(建表插入數(shù)據(jù)獲取數(shù)據(jù)實(shí)時)

hbase(main):006:0> create'test','id','info'

0 row(s) in 0.4706 seconds

=> Hbase::Table - test

hbase(main):007:0> put'test','1314520','info:yousmile','forever’

hbase(main):008:0> get 'test,'1314520'

hbase(main):009:0> scan 'test' ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

# 在master2上啟動HMaster

[root@master2 bin]# ./hbase-daemon.sh start master

# 驗(yàn)證HMaster自動切換

# rs227上的日志查看

2014-07-03 15:43:47,798 INFO ?[master:rs227:60000] mortbay.log: StartedSelectChannelConnector@0.0.0.0:60010

2014-07-03 15:43:47,897 INFO ?[master:rs22760000]zookeeper.RecoverableZooKeeper: Node /hbase/master already exists and this isnot a retry

2014-07-03 15:43:47,898 INFO ?[master:rs227:60000]master.ActiveMasterManager: Adding ZNode for/hbase/backup-masters/rs227,60000,1402645426368 in backup master directory

2014-07-03 15:43:47,908 INFO ?[master:master2:60000] master.ActiveMasterManager:Another master is the active master, rs229,60000,1402645371520; waiting tobecome the next active master

這里說明zookeeper已經(jīng)接管了划纽,并且把master2作為一個備份的Hbase了,并且這里提示

waiting to become thenext active master (等待變成下一個活動的master)锌畸,然后我們可以將master1上的hmaster進(jìn)程給kill掉勇劣,當(dāng)然,也可以使用 ./hbase-daemon.shstop master 來結(jié)束master1上的hmaster進(jìn)程

只看紅色標(biāo)注的地方蹋绽,意思就是說當(dāng)我們 kill 掉 master1上的 hmaster 的時候芭毙, Nomaster available. Notifying waiting threads . A master is now available (找不到 master,喚醒等待的 hmaster 線程(認(rèn)識 96 )卸耘,然后找到了等待的 hmaster ( master2))退敦,然后 zookeeper 就接管并且將 master2上的 hmaster 從 等待 狀態(tài)切換為 激活 狀態(tài)了,然后就 ok 了蚣抗。(當(dāng)然也可以多開幾個備用的 hmaster )

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末侈百,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子翰铡,更是在濱河造成了極大的恐慌钝域,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锭魔,死亡現(xiàn)場離奇詭異例证,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)迷捧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進(jìn)店門织咧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人漠秋,你說我怎么就攤上這事笙蒙。” “怎么了庆锦?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵捅位,是天一觀的道長。 經(jīng)常有香客問我搂抒,道長艇搀,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任求晶,我火速辦了婚禮中符,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘誉帅。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布蚜锨。 她就那樣靜靜地躺著档插,像睡著了一般。 火紅的嫁衣襯著肌膚如雪亚再。 梳的紋絲不亂的頭發(fā)上郭膛,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天,我揣著相機(jī)與錄音氛悬,去河邊找鬼则剃。 笑死,一個胖子當(dāng)著我的面吹牛如捅,可吹牛的內(nèi)容都是我干的棍现。 我是一名探鬼主播,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼镜遣,長吁一口氣:“原來是場噩夢啊……” “哼己肮!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起悲关,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤谎僻,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后寓辱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體艘绍,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年秫筏,在試婚紗的時候發(fā)現(xiàn)自己被綠了诱鞠。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡跳昼,死狀恐怖般甲,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鹅颊,我是刑警寧澤敷存,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站堪伍,受9級特大地震影響锚烦,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜帝雇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一涮俄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧尸闸,春花似錦彻亲、人聲如沸拼弃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽访惜。三九已至,卻和暖如春宙址,著一層夾襖步出監(jiān)牢的瞬間轴脐,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工抡砂, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留大咱,地道東北人。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓注益,卻偏偏與公主長得像碴巾,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子聊浅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評論 2 359

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