hadoop 完全分布式HA高可用自動切換集群環(huán)境搭建

參考了很多博客,根據(jù)一些博客綜合之后自己搭建成功了邪铲,寫了這篇文章記錄一下過程,希望給各位朋友一些幫助

環(huán)境準備

自己準備虛擬機環(huán)境配置好虛擬機[vm搭建] (http://note.youdao.com/noteshare?id=1cd5582fbe7351bb04e45f9e740ecd6f)

linux系統(tǒng):CentOS-7-x86_64-Minimal-1810
jdk版本:jdk8+
zookeeper: zookeeper-3.4.14
hadoop: hadoop-2.7.7

jdk-8u231
zookeeper-3.4.14
hadoop-2.7.7

卸載自帶jdk叹侄,使用jdk1.8+以上

rpm -qa | grep java
使用rpm進行卸載
rpm -e java-xxx
rpm -e --nodeps java-xxx   #強制卸載

一艺沼、分布式集群規(guī)劃

節(jié)點名稱 IP地址 NAMENODE(NN) DATANODE(DN) JJN ZKFC ZK
hadoop1 172.16.0.161 namenode 1 datanode1 journalnode zkfc zookeeper
hadoop2 172.16.0.162 namenode 2 datanode2 journalnode zkfc zookeeper
hadoop3 172.16.0.163 datanode3 journalnode zookeeper

二、網(wǎng)絡IP規(guī)劃

2.1 修改主機名

以centos7為例修改主機名

vi /etc/hostname

在三臺機器上分別執(zhí)行
hostnamectl set-hostname hadoop1
hostnamectl set-hostname hadoop2
hostnamectl set-hostname hadoop3

補充:centos6修改主機名
vi /etc/sysconfig/network  
將里面原來的信息修改如下:
NETWORKING=yes
HOSTNAME=hadoop1

2.2 修改相對應的hosts
查看ip  ip addr

vi /etc/hosts 添加主機映射
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6


172.16.0.161 hadoop1   #由于我的虛擬機ip被占用所有改成了172.16.0.170
172.16.0.162 hadoop2
172.16.0.163 hadoop3

重啟系統(tǒng) reboot

重啟網(wǎng)路  service network start

三骚露、關(guān)閉防火墻

Centos7系統(tǒng)默認防火墻不是iptables,而是firewall,那就得使用以下方式關(guān)閉防火墻了蹬挤。

systemctl stop firewalld.service            #停止firewall
systemctl disable firewalld.service        #禁止firewall開機啟動

補充:Centos6關(guān)閉防火墻
service iptables status             #查看防火墻狀態(tài)
service iptables stop               #關(guān)閉防火墻,但是重啟后會恢復原來狀態(tài)
chkconfig iptables --list           #查看系統(tǒng)中防火墻的自動
chkconfig iptables off              #關(guān)閉防火墻自啟動
chkconfig iptables --list           #再次查看防火墻自啟動的情況棘幸,所有啟動狀態(tài)都變成額off

四焰扳、設(shè)置ssh免密登錄

關(guān)于ssh免密碼的設(shè)置,要求每兩臺主機之間設(shè)置免密碼误续,自己的主機與自己的主機之間也要求設(shè)置免密碼吨悍。 這項操作可以在root用戶下執(zhí)行,執(zhí)行完畢公鑰在/home/root/.ssh/id_rsa.pub

[root@hadoop1 ~]# ssh-keygen -t rsa
[root@hadoop1 ~]# ssh-copy-id hadoop1
[root@hadoop1 ~]# ssh-copy-id hadoop2
[root@hadoop1 ~]# ssh-copy-id hadoop3

免密登錄有時候沒有成功遇到permission錯誤蹋嵌,可能是ids_rsa權(quán)限給大了,降低下就可以了

問題:Permissions 0644 for '/root/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/root/.ssh/id_rsa": bad permissions
root@192.168.108.130's password:
Permission denied, please try again.
沒有改錯育瓜,我是用了命令 chmod 600 /root/.ssh/id_rsa ,而且我看到權(quán)限也降低了,但是再次執(zhí)行腳本還是出來上面這個錯誤栽烂,我輸入root密碼后就卡住了

  • 修改本機 /root/.ssh/id_rsa
    chmod 400 /root/.ssh/id_rsa

五躏仇、安裝jdk

安裝軟件全部安裝到/usr/local/hadoop目錄下,統(tǒng)一管理

  1. 在/usr/local下 創(chuàng)建目錄 hadoop , 并賦予權(quán)限
    mkdir hadoop
    sudo chmod -R 777 /usr/local/hadoop

  2. 解壓jdk-8u231
    tar -zxvf jdk-8u231-linux-x64.tar.gz

  3. 配置環(huán)境變量vi /etc/profile

export JAVA_HOME=/usr/local/hadoop/jdk1.8.0_211
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
  1. 刷新配置腺办,使其生效
    source /etc/profile

六焰手、安裝zookeeper

  1. 在/usr/local/hadoop/ 目錄下解壓zookeeper
    tar -zxvf zookeeper-3.4.14.tar.gz
  2. 配置環(huán)境變量vi /etc/profile
export ZOOKEEPER_HOME=/usr/local/hadoop/zookeeper-3.4.14/
export PATH=$PATH:$ZOOKEEPER_HOME/bin
  1. 刷新配置,使其生效
    source /etc/profile

  2. zookeeper集群安裝
    4.1 進入/usr/local/hadoop/zookeeper-3.4.14/conf目錄下 cp zoo_sample.cfg zoo.cfg
    4.2 修改zoo.cfg
    注意:需要在相對應的目錄下創(chuàng)建myid

例如在/data/zookeeper/ 目錄下怀喉,命令如下:
cd /data/zookeeper
echo 1 > myid

#1书妻,2,3分別表示dataDir目錄(/data/zookeeper/myid)中的內(nèi)容
server.1=hadoop1:2888:3888
server.2=hadoop2:2888:3888
server.3=hadoop3:2888:3888

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
# 此處填寫自己的目錄位置
dataDir=/data/zookeeper
dataLogDir=/logs/zookeeper
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1

七磺送、安裝hadoop

  1. 在/usr/local/hadoop/ 目錄下解壓hadoop-2.7.7
    tar -zxvf hadoop-2.7.7.tar.gz
  2. 配置環(huán)境變量vi /etc/profile
export HADOOP_HOME=/usr/local/hadoop/hadoop-2.7.7
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
  1. 刷新配置驻子,使其生效
    source /etc/profile

  2. 修改hadoop配置文件,進入/usr/local/hadoop/hadoop-2.7.7/etc/hadoop
    4.1 修改 hadoop-env.sh 中的JAVA_HOME灿意,設(shè)置成絕對路徑

#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/usr/local/hadoop/jdk1.8.0_211

注意:配置中的注釋在搭建環(huán)境中最好去掉,以免出現(xiàn)莫名其妙的問題崇呵,此處只是為了便于了解屬性的含義
4.2 core-site.xml

<configuration>
<!-- 指定文件系統(tǒng)的主節(jié)點-->
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://mycluster</value>
  </property>
<!-- hadoop日志路徑-->
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/data/hadoop/tmp</value>
  </property>

  <property>
    <name>io.file.buffer.size</name>
    <value>4096</value>
  </property>
<!-- 指定可以在任何IP訪問-->
  <property>
    <name>hadoop.proxuuser.hduser.hosts</name>
    <value>*</value>
  </property>
<!-- 指定所有用戶可以訪問 -->
  <property>
    <name>hadoop.proxyuser.hduser.groups</name>
    <value>*</value>
  </property>
<!-- zookeeper集群地址 -->
  <property>
    <name>ha.zookeeper.quorum</name>
    <value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value>
  </property>
</configuration>

4.3 hdfs-site.xml

<configuration>
<!-- HA配置-->
<!-- 指定hdfs的集群名為mycluster -->
  <property>
    <name>dfs.nameservices</name>
    <value>mycluster</value>
  </property>

  <property>
    <name>dfs.ha.namenodes.mycluster</name>
    <value>nn1,nn2</value>
  </property>
<!-- namenode1 RPC端口-->
  <property>
    <name>dfs.namenode.rpc-address.mycluster.nn1</name>
    <value>hadoop1:9000</value>
  </property>
<!-- namenode2 RPC端口-->
  <property>
    <name>dfs.namenode.rpc-address.mycluster.nn2</name>
    <value>hadoop2:9000</value>
  </property>
<!-- namenode1 HTTP端口-->
  <property>
    <name>dfs.namenode.http-address.mycluster.nn1</name>
    <value>hadoop1:50070</value>
  </property>
<!-- namenode2 HTTP端口-->
  <property>
    <name>dfs.namenode.http-address.mycluster.nn2</name>
    <value>hadoop2:50070</value>
  </property>
<!-- HA故障切換 -->
  <property>
    <name>dfs.ha.automic-failover.enabled.cluster</name>
    <value>true</value>
  </property>
<!-- journalnode配置-->
  <property>
    <name>dfs.namenode.shared.edits.dir</name>
  <value>qjournal://hadoop1:8485;hadoop2:8485;hadoop3:8485/mycluster</value>
  </property>
  <property>
    <name>dfs.namenode.edits.journal-plugin.qjournal </name>
    <value>org.apache.hadoop.hdfs.qjournal.client.QuorumJournalManager</value>
  </property>
<!-- 發(fā)生failover時缤剧,Standby的節(jié)點要執(zhí)行一系列方法把原來的Active節(jié)點中不健康的NameNode服務殺掉,這個叫fence過程域慷。sshfence會公國ssh遠程調(diào)用fuser命令去找到Active節(jié)點的NameNode服務并殺死它-->
  <property>
    <name>dfs.ha.fencing.methods</name>
    <value>
sshfence
shell(/bin/true)
    </value>
  </property>
<!-- SSH私鑰 -->
  <property>
    <name>dfs.ha.fencing.ssh.private-key-files</name>
    <value>/root/.ssh/id_rsa</value>
  </property>
<!-- JournalNode 文件存儲地址-->
  <property>
    <name>dfs.journalnode.edits.dir</name>
    <value>/data/hadoop/ha/jn</value>
  </property>
  <property>
    <name>dfs.permissions.enable</name>
    <value>false</value>
  </property>
<!-- 負責故障切換實現(xiàn)類 -->
  <property>
    <name>dfs.client.failover.proxy.provider.mycluster</name>
    <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
  </property>
  <property>
    <name>dfs.ha.automatic-failover.enabled</name>
    <value>true</value>
  </property>

  <property>
    <name>dfs.namenode.name.dir.restore</name>
    <value>true</value>
  </property>

  <property>
    <name>dfs.namenode.name.dir</name>
    <value>file:///data/hadoop/dfsdata/name</value>
  </property>

  <property>
    <name>dfs.blocksize</name>
    <value>67108864</value>
  </property>

  <property>
    <name>dfs.datanode.data.dir</name>
    <value>file:///data/hadoop/dfsdata/data</value>
  </property>

  <property>
    <name>dfs.replication</name>
    <value>3</value>
  </property>
<!-- 指定web可以方位hdfs目錄 -->
  <property>
    <name>dfs.webhdfs.enabled</name>
    <value>true</value>
  </property>
</configuration>

4.4 mapred-site.xml

拷貝mapred-queues.xml.template 為 mapred-site.xml
cp mapred-queues.xml.template mapred-site.xml

<configuration>
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
</configuration>

4.5 yarn-site.xml

<!-- resourcemanager 失聯(lián)后重新鏈接的時間 -->
<configuration>
  <property>
    <name>yarn.resourcemanager.connect.retry-interval.ms</name>
    <value>2000</value>
  </property>
<!-- 開啟resourcemanager HA荒辕,默認為false -->
  <property>
    <name>yarn.resourcemanager.ha.enabled</name>
    <value>true</value>
  </property>
<!-- 開啟resourcemanager 命名 -->
  <property>
    <name>yarn.resourcemanager.ha.rm-ids</name>
    <value>rm1,rm2</value>
  </property>
  <property>
    <name>yarn.resourcemanager.hostname.rm1</name>
    <value>hadoop2</value>
  </property>

  <property>
    <name>yarn.resourcemanager.hostname.rm2</name>
    <value>hadoop3</value>
  </property>
<!-- 開啟resourcemanager故障自動切換,指定機器-->
  <property>
    <name>yarn.resourcemanager.ha.automatic-failover.enabled</name>
    <value>true</value>
  </property>
    <!--在 hadoop1 上配置 rm1,在 hadoop2 上配置 rm2, 注意:一般都喜歡把配置好的文件遠程復制到其它機器上犹褒,但這個在 YARN 的另一個機器上一定要修改抵窒,其他機器上不配置此項-->
  <property>
    <name>yarn.resourcemanager.ha.id</name>
    <value>rm1</value>
  </property>
<!-- 開啟resourcemanager故障自動恢復-->
  <property>
    <name>yarn.resourcemanager.recovery.enabled</name>
    <value>true</value>
  </property>
<!-- 用戶持久存儲的類-->
  <property>
    <name>yarn.resourcemanager.store.class</name>
    <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
  </property>
<!-- zookeeper集群地址-->
  <property>
    <name>yarn.resourcemanager.zk-address</name>
    <value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value>
  </property>
<!-- 失聯(lián)等待鏈接時間-->
  <property>
    <name>yarn.app.mapreduce.am.scheduler.connection.wait.interval-ms</name>
    <value>5000</value>
  </property>
<!-- 集群ID -->
  <property>
    <name>yarn.resourcemanager.cluster-id</name>
    <value>mycluster</value>
  </property>
<!-- 開啟resourcemanager故障自動恢復-->
  <property>
    <name>yarn.resourcemanager.address.rm1</name>
    <value>hadoop1:8132</value>
  </property>

  <property>
    <name>yarn.resourcemanager.scheduler.address.rm1</name>
    <value>hadoop1:8130</value>
  </property>

    <!-- RM 的網(wǎng)頁接口地址:端口-->
  <property>
    <name>yarn.resourcemanager.webapp.address.rm1</name>
    <value>hadoop1:8088</value>
  </property>

  <property>
    <name>yarn.resourcemanager.resource-tracker.address.rm1</name>
    <value>hadoop1:8131</value>
  </property>

<!-- RM 管理接口地址:端口-->
  <property>
    <name>yarn.resourcemanager.admin.address.rm1</name>
    <value>hadoop1:8033</value>
  </property>

  <property>
    <name>yarn.resourcemanager.ha.admin.address.rm1</name>
    <value>hadoop1:23142</value>
  </property>

  <property>
    <name>yarn.resourcemanager.address.rm2</name>
    <value>hadoop2:8132</value>
  </property>

  <property>
    <name>yarn.resourcemanager.scheduler.address.rm2</name>
    <value>hadoop2:8130</value>
  </property>


  <property>
    <name>yarn.resourcemanager.webapp.address.rm2</name>
    <value>hadoop2:8088</value>
  </property>

  <property>
    <name>yarn.resourcemanager.resource-tracker.address.rm2</name>
    <value>hadoop2:8131</value>
  </property>

  <property>
    <name>yarn.resourcemanager.admin.address.rm2</name>
    <value>hadoop2:8033</value>
  </property>

  <property>
    <name>yarn.resourcemanager.ha.admin.address.rm2</name>
    <value>hadoop2:23142</value>
  </property>

  <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.nodemanager.local-dirs</name>
    <value>/data/hadoop/dfsdata/yarn/local</value>
  </property>

  <property>
    <name>yarn.nodemanager.log-dirs</name>
    <value>/data/hadoop/dfsdata/logs</value>
  </property>

  <property>
    <name>yarn.nodemanager.resource.memory-mb</name>
    <value>1024</value>
    <discription>每個節(jié)點可用內(nèi)存,單位 MB</discription>
  </property>

  <property>
    <name>yarn.scheduler.minimum-allocation-mb</name>
    <value>258</value>
    <discription>單個任務可申請最少內(nèi)存,默認 1024MB</discription>
  </property>

  <property>
    <name>yarn.scheduler.maximum-allocation-mb</name>
    <value>512</value>
    <discription>單個任務可申請最大內(nèi)存叠骑,默認 8192MB</discription>
  </property>

  <property>
    <name>yarn.nodemanager.webapp.address</name>
    <value>0.0.0.0:8042</value>
  </property>
</configuration>

4.6 修改slaves文件

vi slaves
在其中添加

hadoop1
hadoop2
hadoop3

八李皇、每個節(jié)點創(chuàng)建相對應的目錄,分發(fā)hadoop所需文件到其他節(jié)點

  1. 創(chuàng)建目錄, 并賦予讀寫權(quán)限
mkdir -p /data/zookeeper
mkdir -p /logs/zookeeper
mkdir -p /data/hadoop/dfsdata/name
mkdir -p /data/hadoop/dfsdata/data
mkdir -p /data/hadoop/dfsdata/logs
mkdir -p /data/hadoop/dfsdata/yarn/local
mkdir -p /data/hadoop/ha/jn

sudo chmod -R 777 /data
  1. 分發(fā)文件, 進入/usr/local目錄下
scp -r hadoop root@hadoop2:/usr/local
scp -r hadoop root@hadoop3:/usr/local

九宙枷、啟動

  1. 啟動zookeeper集群, 按順序啟動
[root@hadoop1 zookeeper-3.4.14]# ./bin/zkServer.sh start

[root@hadoop2 zookeeper-3.4.14]# ./bin/zkServer.sh start

[root@hadoop3 zookeeper-3.4.14]# ./bin/zkServer.sh start

  1. 初始化hadoop掉房,進入/usr/local/hadoop/hadoop-2.7.7
    2.1 格式化zk集群
/bin/hdfs zkfc -formatZK

2.2 開啟journalnode進程,啟動journalnode集群慰丛,在hadoop1卓囚,hadoop2,hadoop3上執(zhí)行

[root@hadoop1 hadoop-2.7.7]# ./sbin/hadoop-daemon.sh start journalnode

[root@hadoop2 hadoop-2.7.7]# ./sbin/hadoop-daemon.sh start journalnode

[root@hadoop3 hadoop-2.7.7]# ./sbin/hadoop-daemon.sh start journalnode

2.3 在namenode1上執(zhí)行格式化namenode

[root@hadoop1 hadoop-2.7.7]# ./bin/hadoop namenode -format

2.4 啟動datanode诅病,在hadoop1哪亿,hadoop2,hadoop3上執(zhí)行

[root@hadoop1 hadoop-2.7.7]# ./sbin/hadoop-daemon.sh start datanode
[root@hadoop2 hadoop-2.7.7]# ./sbin/hadoop-daemon.sh start datanode
[root@hadoop3 hadoop-2.7.7]# ./sbin/hadoop-daemon.sh start datanode

2.5 啟動namenode
2.5.1 namenode1

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

2.5.2 namenode2

[root@hadoop2 hadoop-2.7.7]# ./bin/hdfs namenode -bootstrapStandby
[root@hadoop2 hadoop-2.7.7]# ./sbin/hadoop-daemon.sh start namenode

此時namenode1和namenode2同時處于 standby狀態(tài)
http://172.16.0.170:50070/dfshealth.html#tab-overview

image.png

http://172.16.0.164:50070/dfshealth.html#tab-overview

image.png

2.6啟動zkfc服務

在namenode1和namenode2上同時執(zhí)行以下命令:
[root@hadoop1 hadoop-2.7.7]# ./sbin/hadoop-daemon.sh start zkfc
[root@hadoop2 hadoop-2.7.7]# ./sbin/hadoop-daemon.sh start zkfc

啟動zkfc服務后贤笆,namenode1和namenode2會自動選舉出active節(jié)點


image.png

image.png

十蝇棉、驗證

  1. 在/data目錄下創(chuàng)建文件hello.txt
[root@hadoop1 hadoop-2.7.7]# cd /data
[root@hadoop1 hadoop-2.7.7]# echo hello world > hello.txt
[root@hadoop1 hadoop-2.7.7]# cd /usr/local/hadoop/hadoop-2.7.7
[root@hadoop1 hadoop-2.7.7]# ./bin/hdfs dfs -mkdir /test
[root@hadoop1 hadoop-2.7.7]# ./bin/hdfs dfs -put /data/hello.txt /test
[root@hadoop1 hadoop-2.7.7]# ./bin/hdfs dfs -cat /test/hello.txt

  1. HA故障自動切換
    [root@hadoop1 hadoop-2.7.7]# jps
    [root@hadoop1 hadoop-2.7.7]# kill -9 pid #namenode pid

通過頁面查看節(jié)點狀態(tài)
http://172.16.0.170:50070/dfshealth.html#tab-overview
已經(jīng)訪問不了了

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市苏潜,隨后出現(xiàn)的幾起案子银萍,更是在濱河造成了極大的恐慌,老刑警劉巖恤左,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贴唇,死亡現(xiàn)場離奇詭異,居然都是意外死亡飞袋,警方通過查閱死者的電腦和手機戳气,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來巧鸭,“玉大人瓶您,你說我怎么就攤上這事。” “怎么了呀袱?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵贸毕,是天一觀的道長。 經(jīng)常有香客問我夜赵,道長明棍,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任寇僧,我火速辦了婚禮摊腋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘嘁傀。我一直安慰自己兴蒸,他們只是感情好,可當我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布细办。 她就那樣靜靜地躺著橙凳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蟹腾。 梳的紋絲不亂的頭發(fā)上痕惋,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天,我揣著相機與錄音娃殖,去河邊找鬼。 笑死议谷,一個胖子當著我的面吹牛炉爆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播卧晓,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼芬首,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了逼裆?” 一聲冷哼從身側(cè)響起郁稍,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎胜宇,沒想到半個月后耀怜,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡桐愉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年财破,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片从诲。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡左痢,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情俊性,我是刑警寧澤略步,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站定页,受9級特大地震影響趟薄,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜拯勉,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一竟趾、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧宫峦,春花似錦岔帽、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至妥曲,卻和暖如春贾费,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背檐盟。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工褂萧, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人葵萎。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓导犹,卻偏偏與公主長得像,于是被迫代替她去往敵國和親羡忘。 傳聞我的和親對象是個殘疾皇子谎痢,可洞房花燭夜當晚...
    茶點故事閱讀 44,601評論 2 353