Hadoop2.6.0完全分布式的安裝與配置(Centos)

1.Linux安裝前的配置

1.1.關閉防火墻

????? 本站文檔是假定「服務器在防火墻以內」的前提下編纂的,在這個前提下,服務器本身在內部網絡是不需要防火墻的(在需要抵御內部安全威脅的情況下廉侧,您也可以用您在iptables方面的相關知識,根據實情設置防火前,并保證服務器端防火墻啟動的狀態(tài))。另外抵知,在一般情況下,我們不需要SELinux復雜的保護软族,所以也將其設置為無效的狀態(tài)刷喜。

service iptables stop

1.2.關閉SELinux

用下面命令執(zhí)行,并修改內容如下所示:

vim /etc/sysconfig/selinux

SELINUX=enforcing

↓修改為

SELINUX=disabled

2.集群部署介紹

2.1.環(huán)境說明

????? 集群中包括5個節(jié)點:1個Master立砸,4個Salve掖疮,節(jié)點之間局域網連接,可以相互ping通仰禽。節(jié)點IP地址分布如下:

機器名稱???????????????????????????????????????? IP地址


Master.Hadoop???????????????????????????????? 70.70.70.120

Slave1.Hadoop????????????????????????????????? 80.80.80.184

Slave2.Hadoop????????????????????????????????? 80.80.80.183

Slave3.Hadoop????????????????????????????????? 80.80.80.182

Slave4.Hadoop????????????????????????????????? 80.80.80.180

四個節(jié)點上均是CentOS6.0系統(tǒng)氮墨,并且有一個相同的用戶hadoop纺蛆。Master機器主要配置NameNode和JobTracker的角色吐葵,負責總管分布式數據和分解任務的執(zhí)行;3個Salve機器配置DataNode和TaskTracker的角色桥氏,負責分布式數據存儲以及任務的執(zhí)行温峭。其實應該還應該有1個Master機器,用來作為備用字支,以防止Master服務器宕機凤藏,還有一個備用馬上啟用奸忽。后續(xù)經驗積累一定階段后補上一臺備用Master機器。

2.2.網絡配置

下面的例子我們將以Master機器為例揖庄,即主機名為"Master.Hadoop"栗菜,IP為"70.70.70.120“進行主機的配置,他的Slave機器以此為依據進行修改蹄梢。

2.2.1.查看當前機器名稱

命令:

hostname

上圖中疙筹,用”hostname"查"Master"機器的名字為“centos1.teacher20”,這是默認機器名禁炒,我們進行修改而咆。

2.2.2.修改當前機器名稱

我們的機器的主機名不是我們想要的,通過對"/etc/sysconfig/network"文件修改其中"HOSTNAME"后面的值幕袱,改成我們規(guī)劃的名稱暴备。

這個"/etc/sysconfig/network"文件是定義hostname和是否利用網絡的不接觸網絡設備的對系統(tǒng)全體定義的文件。

vi /etc/sysconfig/network

通過上面的命令我們從"/etc/sysconfig/network"中找到"HOSTNAME"進行修改们豌,查看內容如下

配置完成之后涯捻,我們需要重啟主機,命令:

reboot

2.2.3.配置hosts文件(必須)

"/etc/hosts"這個文件是用來配置主機將用的DNS服務器信息玛痊,是記載LAN內接續(xù)的各主機的對應[HostName和IP]用的汰瘫。當用戶在進行網絡連接時,首先查找該文件擂煞,尋找對應主機名(或域名)對應的IP地址混弥。

在進行Hadoop集群配置中,需要在"/etc/hosts"文件中添加集群中所有機器的IP與主機名对省,這樣Master與所有的Slave機器之間不僅可以通過IP進行通信蝗拿,而且還可以通過主機名進行通信。所以在所有的機器上的"/etc/hosts"文件末尾中都要添加如下內容:

vi /etc/hosts

70.70.70.120Master.Hadoop

80.80.80.184Slave1.Hadoop

80.80.80.183Slave2.Hadoop

80.80.80.182Slave3.Hadoop

80.80.80.180Slave4.Hadoop

從上圖中我們已經能用主機名進行ping通了蒿涎,說明我們剛才添加的內容哀托,在局域網內能進行DNS解析了,那么現(xiàn)在剩下的事兒就是在其余的Slave機器上進行相同的配置劳秋。然后進行測試仓手。(備注:當設置SSH無密碼驗證后,可以"scp"進行復制玻淑,然后把原來的"hosts"文件執(zhí)行覆蓋即可嗽冒。)

2.3.所需軟件

JDK軟件

jdk-7u75-linux-x64

Hadoop軟件

hadoop-2.6.0.tar

2.4.創(chuàng)建用戶組和用戶 hadoop

創(chuàng)建hadoop用戶組:

groupadd hadoop

創(chuàng)建hadoop用戶:

useradd –g hadoop hadoop

為hadoop用戶添加密碼:

passwd hadoop

使得hadoop用戶獲得sudo權限。

vi /etc/sudoers

我們這里設置hadoop的密碼都是hadoop

編輯好补履,退出時添坊,wq!(加嘆號)

2.5.上傳本地JDK和hadoop安裝包到主機

使用rz命令箫锤。

我們在hadoop根目錄中上傳,并且使用hadoop用戶阳准。

[hadoop@Master ~]$ rz

3.SSH無密碼驗證配置

Hadoop運行過程中需要管理遠端Hadoop守護進程,在Hadoop啟動以后野蝇,NameNode是通過SSH(Secure Shell)來啟動和停止各個DataNode上的各種守護進程的浪耘。這就必須在節(jié)點之間執(zhí)行指令的時候是不需要輸入密碼的形式乱灵,故我們需要配置SSH運用無密碼公鑰認證的形式,這樣NameNode使用SSH無密碼登錄并啟動DataName進程痛倚,同樣原理澜躺,DataNode上也能使用SSH無密碼登錄到NameNode掘鄙。

3.1.安裝和啟動SSH協(xié)議

rpm –qa | grep openssh

rpm –qa | grep rsync

通過以上命令操漠,我們主機上沒有安裝rsync(遠程數據同步工具)

安裝SSH協(xié)議(這個已經安裝浊伙,我們機器不需要再次安裝)O伞Q谱印卧蜓!

yum install ssh???????????????????????????????????????? #(這個已經安裝烦却,我們機器不需要再次安裝)

安裝rsync(rsync是一個遠程數據同步工具其爵,可通過LAN/WAN快速同步多臺主機間的文件)

yum install rsync

service sshd restart???????????????????????????????? #重啟服務

確保所有的服務器都安裝摩渺,上面命令執(zhí)行完畢摇幻,各臺機器之間可以通過密碼驗證相互登绰姻。

3.2.配置Master無密碼登錄所有Salve

3.2.1.SSH無密碼原理

Master(NameNode |JobTracker)作為客戶端狂芋,要實現(xiàn)無密碼公鑰認證帜矾,連接到服務器Salve(DataNode | Tasktracker)上時屡萤,需要在Master上生成一個密鑰對死陆,包括一個公鑰和一個私鑰措译,而后將公鑰復制到所有的Slave上瞳遍。當Master通過SSH連接Salve時掠械,Salve就會生成一個隨機數并用Master的公鑰對隨機數進行加密猾蒂,并發(fā)送給Master肚菠。Master收到加密數之后再用私鑰解密,并將解密數回傳給Slave箫章,Slave確認解密數無誤之后就允許Master進行連接了。這就是一個公鑰認證過程桶至,其間不需要用戶手工輸入密碼镣屹。重要過程是將客戶端Master復制到Slave上野瘦。

3.2.2.Master機器上生成密碼對

在Master節(jié)點上執(zhí)行以下命令:

[hadoop@master ~]$ ssh-keygen -t rsa -P ''

這條命令是生成其無密碼密鑰對鞭光,詢問其保存路徑時直接回車采用默認路徑惰许。生成的密鑰對:id_rsa和id_rsa.pub汹买,默認存儲在"/home/hadoop/.ssh"目錄下晦毙。

查看"/home/hadoop/"下是否有".ssh"文件夾,且".ssh"文件下是否有兩個剛生產的無密碼密鑰對须揣。

[hadoop@Slave4~]$ ll -a | grep .ssh

接著在Master節(jié)點上做如下配置,把id_rsa.pub追加到授權的key里面去卵酪。

[hadoop@Slave4.ssh]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

在驗證前溃卡,需要做兩件事兒。第一件事兒是修改文件"authorized_keys"權限(權限的設置非常重要最铁,因為不安全的設置安全設置冷尉,會讓你不能使用RSA功能)雀哨,另一件事兒是用root用戶設置"/etc/ssh/sshd_config"的內容雾棺。使其無密碼登錄有效捌浩。

1)修改文件"authorized_keys"

[hadoop@Slave4 .ssh]$ chmod 600~/.ssh/authorized_keys

備注:如果不進行設置,在驗證時浪听,扔提示你輸入密碼迹栓,在這里花費了將近半天時間來查找原因迈螟。

2)設置SSH配置

用root用戶登錄服務器修改SSH配置文件"/etc/ssh/sshd_config"的下列內容答毫。

[root@Slave4 .ssh]# vi /etc/ssh/sshd_config

下面是文件修改好的。

設置完之后記得重啟SSH服務耘拇,才能使剛才設置有效惫叛。

[root@Slave4 .ssh]# service sshd restart

退出root登錄妻熊,使用hadoop普通用戶驗證是否成功扔役。

[hadoop@Slave4 .ssh]$ ssh localhost

從上圖中得知無密碼登錄本級已經設置完畢亿胸,接下來的事兒是把公鑰復制所有的Slave機器上。

再往下做之前拗馒,把其他四臺的公鑰私鑰全部產生诱桂,參照以上步驟挥等。

使用下面的命令格式進行復制公鑰:

scp ~/.ssh/id_rsa.pub遠程用戶名@遠程服務器IP:~/

例如:

[hadoop@Master .ssh]$ scp? ? ~/.ssh/id_rsa.pub hadoop@80.80.80.183:~/

3.2.3.把Master.Hadoop上的公鑰復制到Slave1.Hadoop上

[hadoop@Master .ssh]$ scp ~/.ssh/id_rsa.pubhadoop@80.80.80.184:~/

依據以上方式,分別復制到其他四太主機的根目錄下辞槐。

[hadoop@Master .ssh]$ scp ~/.ssh/id_rsa.pubhadoop@80.80.80.183:~/

[hadoop@Master .ssh]$ scp ~/.ssh/id_rsa.pubhadoop@80.80.80.182~/

[hadoop@Master .ssh]$ scp ~/.ssh/id_rsa.pubhadoop@80.80.80.180~/

從其他四臺slave.adoop上可以用ls –a查看確實存在id_rsa.pub這個文件。

3.2.4.在其他四太Slave.Hadoop上鹿榜,將公鑰添加到授權密鑰文件authorized_keys內舱殿。

[hadoop@Slave1 ~]$ cat ~/id_rsa.pub>> ~/.ssh/authorized_keys

…slave2….

…slave3…

依次湾宙,等等侠鳄。

最后記得把"/home/hadoop/"目錄下的"id_rsa.pub"文件刪除掉畦攘。

[hadoop@Slave3 .ssh]$ rm ~/id_rsa.pub

3.3.配置所有Slave無密碼登錄Master

和Master無密碼登錄所有Slave原理一樣,就是把Slave的公鑰追加到Master的".ssh"文件夾下的"authorized_keys"中鹃骂,記得是追加(>>)。

思想:分別在其他四臺Slave上使用

[hadoop@Slave1 ~]$ scp ~/.ssh/id_rsa.pubhadoop@70.70.70.120:~/

將Slave上的公鑰發(fā)到Master上去寝殴,然后每發(fā)送一個蚣常。在Master上抵蚊,使用

[hadoop@Master ~]$ cat ~/id_rsa.pub>> ~/.ssh/authorized_keys

將Slave的公鑰添加到Master的授權文件中。然后把傳過來的公鑰文件刪除冈闭。拒秘。躺酒。羹应。

到此為止雳刺。我們驗證一下ssh可以Master和Slave之間的無密碼相互登陸(因為我們是在hadoop用戶設置的掖桦,所以我們必須是切換到hadoop用戶下去驗證)。

等等雀久。

4.Java環(huán)境安裝

????? 所有的機器上都要安裝JDK赖捌,現(xiàn)在就先在Master服務器安裝,然后其他服務器按照步驟重復進行即可卤唉。安裝JDK以及配置環(huán)境變量搬味,需要以"root"的身份進行。

4.1.安裝JDK

首先用root身份登錄"Master.Hadoop"后在"/usr"下創(chuàng)建"java"文件夾悦析,再把用“rz命令”上傳到"/home/hadoop/"下的"jdk-7u75-linux-x64.rpm"復制到"/usr/java"文件夾中强戴。

[root@Masterusr]# mkdir /usr/java

[root@Masterusr]# cp /home/hadoop/jdk-7u75-linux-x64.rpm /usr/java

演示截圖:

創(chuàng)建java文件夾预烙,cp??? JDK包

確認查看已經復制過來:

接著進入"/usr/java"目錄通過下面命令使其JDK獲得可執(zhí)行權限,并安裝JDK谴分。

[root@Masterjava]# chmod 755 jdk-7u75-linux-x64.rpm

[root@Masterjava]# rpm -i jdk-7u75-linux-x64.rpm

演示截圖:

按照上面幾步進行操作,最后點擊"Enter"鍵開始安裝沙兰,安裝完會提示你按"Enter"鍵退出探颈,然后查看"/usr/java"下面會發(fā)現(xiàn)多了一個名為"jdk1.7.0_75"文件夾伪节,說明我們的JDK安裝結束怀大,刪除"jdk-7u75-linux-x64.rpm"文件潜慎,進入下一個"配置環(huán)境變量"環(huán)節(jié)铐炫。

4.2.配置環(huán)境變量

編輯"/etc/profile"文件,在后面添加Java的"JAVA_HOME"鳖悠、"CLASSPATH"以及"PATH"內容乘综。

4.2.1.編輯"/etc/profile"文件

[root@Masterjava]# vi /etc/profile

3.2.2.添加Java環(huán)境變量

在"/etc/profile"文件的尾部添加以下內容:

# set java environment

export JAVA_HOME=/usr/java/jdk1.7.0_75

exportCLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

exportPATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin

4.2.3.使配置生效

保存并退出鼠哥,執(zhí)行下面命令使其配置立即生效。

[root@Master java]# source /etc/profile

[root@Slave1 java]# echo $JAVA_HOME

驗證截圖

從上圖中得知,我們以確定JDK已經安裝成功森渐。

4.3.安裝剩余機器

這時用普通用戶hadoop通過下面命令格式把"Master.Hadoop"文件夾"/home/hadoop/"的JDK復制到其他Slave的"/home/hadoop/"下面同衣,剩下的事兒就是在其余的Slave服務器上按照上圖的步驟安裝JDK。

scp /home/hadoop/jdk-6u31-linux-i586.bin遠程用戶名@遠程服務器IP:~/

或者

scp ~/jdk-6u31-linux-i586.bin遠程用戶名@遠程服務器IP:~/

備注:"~"代表當前用戶的主目錄埠况,當前用戶為hadoop,所以"~"代表"/home/hadoop"喜命。

例如:把JDK從"Master.Hadoop"復制到"Slave1.Hadoop"的命令如下壁榕。

[hadoop@Master ~]$ scp~/jdk-7u75-linux-x64.rpmhadoop@80.80.80.184:~/


然后查看"Slave1.Hadoop"的"/home/hadoop"查看是否已經復制成功了。

從上圖中得知贪染,我們已經成功復制了杭隙,現(xiàn)在我們就用最高權限用戶root進行安裝了痰憎。其他的與這個一樣。

5.Hadoop集群安裝

所有的機器上都要安裝hadoop蜗细,現(xiàn)在就先在Master服務器安裝怒详,然后其他服務器按照步驟重復進行即可炉媒。安裝和配置hadoop需要以"root"的身份進行。

5.1.安裝hadoop

首先用root用戶登錄"Master.Hadoop"機器昆烁,查看我們之前用FTP上傳至"/home/Hadoop"上傳的"hadoop-2.6.0.tar.gz "吊骤。

接著把"hadoop-1.0.0.tar.gz"復制到"/usr"目錄下面。

[root@Masterhadoop]# cp /home/hadoop/hadoop-2.6.0.tar.gz /usr

下一步進入"/usr"目錄下静尼,用下面命令把"hadoop-2.6.0.tar.gz"進行解壓,并將其命名為"hadoop"茅郎,把該文件夾的讀權限分配給普通用戶hadoop蜗元,然后刪除"hadoop-2.6.0.tar.gz"安裝包或渤。

cd /usr?????????????? #進入"/usr"目錄

tar -zxvfhadoop-2.6.0.tar.gz??????????????? #解壓"hadoop-2.6.0.tar.gz "安裝包

[root@Masterusr]# mv hadoop-2.6.0 hadoop??????? #將"hadoop-2.6.0"文件夾重命名"hadoop"

首先在/usr/hadoop創(chuàng)建“tmp”文件夾

mkdir /usr/hadoop/tmp

然后

[root@Master]# chown -R hadoop:hadoop hadoop ?? #將文件夾"hadoop"讀權限分配給hadoop用戶

[root@Masterusr]# rm -rf hadoop-2.6.0.tar.gz??? #刪除"hadoop-2.6.0.tar.gz "安裝包


》》配置"/etc/profile"

vim /etc/profile

#set hadoop path

exportHADOOP_HOME=/usr/hadoop

export PATH=$PATH:$HADOOP_HOME/bin

配置后的文件如下:

》》重啟”/etc/profile”

source/etc/profile

5.2.配置hadoop文件

這里要涉及到的配置文件有7個:

usr/hadoop-2.6.0/etc/hadoop/hadoop-env.sh

usr/hadoop-2.6.0/etc/hadoop/yarn-env.sh

usr/hadoop-2.6.0/etc/hadoop/slaves

usr/hadoop-2.6.0/etc/hadoop/core-site.xml

usr/hadoop-2.6.0/etc/hadoop/hdfs-site.xml

usr/hadoop-2.6.0/etc/hadoop/mapred-site.xml

usr/hadoop-2.6.0/etc/hadoop/yarn-site.xml

目錄開始切換到/usr/hadoop-2.6.0/etc/hadoop(hadoop安裝目錄)

5.2.1.配置文件1:hadoop-env.sh

修改JAVA_HOME值(export JAVA_HOME=/usr/java/jdk1.7.0_75)

命令:[hadoop@masterhadoop]$ vi hadoop-env.sh

保存退出系冗!

5.2.2.配置文件2:yarn-env.sh

修改JAVA_HOME值(export JAVA_HOME=/usr/java/jdk1.7.0_75)

命令:[hadoop@masterhadoop]$ vi yarn-env.sh

5.2.3.配置文件3:slaves(這個文件里面保存所有slave節(jié)點)

[hadoop@master hadoop]$ vi slaves

寫入以下內容:

slave1

slave2

slave3

slave4


5.2.4.配置文件4:core-site.xml

命令:[hadoop@master hadoop]$ vi core-site.xml

5.2.5.配置文件5:hdfs-site.xml

命令:[hadoop@master hadoop]$ vi hdfs-site.xml

5.2.6.配置文件6:mapred-site.xml

[hadoop@master hadoop]$ vi mapred-site.xml

5.2.7.配置文件7:yarn-site.xml

命令:[hadoop@master hadoop]$ vi yarn-site.xml

5.3.master上配置好的hadoop2.6.0目錄scp復制到其他slave節(jié)點(為節(jié)約時間)

上面配置完畢,我們基本上完成了90%了剩下就是復制薪鹦。我們可以把整個hadoop復制過去:使用如下命令:

sudo scp -r /usr/hadoop hadoop@slave1:~/

這里記得先復制到home/hadoop目錄下面掌敬,然后在轉移到/usr下面。

后面我們會經常遇到問題池磁,經常修改配置文件奔害,所以修改完一個配置文件后,其他節(jié)點都需要修改地熄,這里附上腳本操作方便:

6.啟動驗證

在root用戶下關閉所有主機的防火墻:

sudo service iptables stop

6.1.啟動hadoop

格式化namenode:

hdfs namenode –format

或則使用下面命令:

hadoop namenode format

啟動hdfs:

start-dfs.sh

啟動yarn:

start-yarn.sh

2.2.結果進程展示:

master有如下進程:

Slave上有以下進程:

瀏覽器進入8080端口:ip為服務器ip



此時hadoop集群已全部配置完成;佟!端考!@老男孩 (wzhj361@gmail.com)


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末雅潭,一起剝皮案震驚了整個濱河市揭厚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌扶供,老刑警劉巖筛圆,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異椿浓,居然都是意外死亡太援,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門扳碍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來提岔,“玉大人,你說我怎么就攤上這事笋敞∵罂眩” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵液样,是天一觀的道長振亮。 經常有香客問我,道長鞭莽,這世上最難降的妖魔是什么坊秸? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮澎怒,結果婚禮上褒搔,老公的妹妹穿的比我還像新娘。我一直安慰自己喷面,他們只是感情好星瘾,可當我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著惧辈,像睡著了一般琳状。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上盒齿,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天念逞,我揣著相機與錄音,去河邊找鬼边翁。 笑死翎承,一個胖子當著我的面吹牛,可吹牛的內容都是我干的符匾。 我是一名探鬼主播叨咖,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了甸各?” 一聲冷哼從身側響起仰剿,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎痴晦,沒想到半個月后南吮,有當地人在樹林里發(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡誊酌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年部凑,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片碧浊。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡涂邀,死狀恐怖,靈堂內的尸體忽然破棺而出箱锐,到底是詐尸還是另有隱情比勉,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布驹止,位于F島的核電站浩聋,受9級特大地震影響,放射性物質發(fā)生泄漏臊恋。R本人自食惡果不足惜衣洁,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望抖仅。 院中可真熱鬧坊夫,春花似錦、人聲如沸撤卢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽放吩。三九已至智听,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間屎慢,已是汗流浹背瞭稼。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留腻惠,地道東北人。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓欲虚,卻偏偏與公主長得像集灌,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內容