Hive調優(yōu)配置參考2

1.設置合理solt數

mapred.tasktracker.map.tasks.maximum
每個tasktracker可同時運行的最大map task數蛮寂,默認值2。

mapred.tasktracker.reduce.tasks.maximum
每個tasktracker可同時運行的最大reduce task數,默認值1妆距。

2.配置磁盤塊

mapred.local.dir
map task中間結果寫本地磁盤路徑肴茄,默認值${hadoop.tmp.dir}/mapred/local击你。
可配置多塊磁盤緩解寫壓力剃氧。當存在多個可以磁盤時刁岸,Hadoop將采用輪詢方式將不同的map task中間結果寫到磁盤上。

3.配置RPC Handler數

mapred.job.tracker.handler.count
jobtracker可并發(fā)處理來自tasktracker的RPC請求數她我,默認值10。

4.配置HTTP線程數

tasktracker.http.threads
HTTP服務器的工作線程數迫横,用于獲取map task的輸出結果番舆,默認值40。

5.啟用批調度

6.選擇合適的壓縮算法

Job輸出結果是否壓縮
mapred.output.compress
是否壓縮矾踱,默認值false恨狈。

mapred.output.compression.type
壓縮類型,有NONE, RECORD和BLOCK呛讲,默認值RECORD禾怠。

mapred.output.compression.codec
壓縮算法,默認值org.apache.hadoop.io.compress.DefaultCodec贝搁。

map task輸出是否壓縮
mapred.compress.map.output
是否壓縮吗氏,默認值false

mapred.map.output.compression.codec
壓縮算法,默認值org.apache.hadoop.io.compress.DefaultCodec雷逆。

7.設置失敗容忍度

mapred.max.map.failures.percent
例如:set mapred.max.map.failures.percent=30;
作業(yè)最多允許失敗的map task比例弦讽,默認值0。

mapred.max.reduce.failures.percent
作業(yè)最多允許失敗的reduce task比例膀哲,默認值0往产。

mapred.map.max.attempts
一個map task的最多重試次數,默認值4某宪。

mapred.reduce.max.attempts
一個reduce task的最多重試次數仿村,默認值4。

8.設置跳過壞記錄

mapred.skip.attempts.to.start.skipping
當任務失敗次數達到該值時兴喂,啟用跳過壞記錄功能蔼囊,默認值2焚志。

mapred.skip.out.dir
檢測出的壞記錄存放目錄,默認值為輸出目錄的_logs/skip压真,設置為none表示不輸出娩嚼。

mapred.skip.map.max.skip.records
map task最多允許的跳過記錄數,默認值0滴肿。

mapred.skip.reduce.max.skip.groups
reduce task最多允許的跳過記錄數岳悟,默認值0。

9.配置jvm重用

mapred.job.reuse.jvm.num.tasks
一個jvm可連續(xù)啟動多個同類型任務泼差,默認值1贵少,若為-1表示不受限制。

10.配置jvm參數

mapred.child.java.opts
任務啟動的jvm參數堆缘,默認值-Xmx200m滔灶,建議值-XX:-UseGCOverheadLimit -Xms512m -Xmx2048m -verbose:gc -Xloggc:/tmp/@taskid@.gc

  1. map task調優(yōu)

io.sort.mb
默認值100M

io.sort.record.percent
默認值0.05

io.sort.spill.percent
默認值0.80

12.reduce task調優(yōu)

io.sort.factor
默認值10

mapred.reduce.parallel.copies
默認值5


13.設置任務名稱,方便查找監(jiān)控

SETmapred.job.name=P_DWA_D_IA_S_USER_PROD;

14.決定是否可以在Map端進行聚合操作

sethive.map.aggr=true;

15.有數據傾斜的時候進行負載均衡

sethive.groupby.skewindata=true;

HiveQL去重操作

和SQL一樣吼肥,HiveQL中同樣支持DISTINCT操作录平,如下示例:

(1)SELECTcount(DISTINCTuid)FROMlog

(2)SELECTip,count(DISTINCTuid)FROMlogGROUPBYip

(3)SELECTip,count(DISTINCTuid,uname)FROMlogGROUPBYip

(4)SELECTip,count(DISTINCTuid),count(DISTINCTuname)FROMlogGROUPBYip

當我們使用HiveQL中的去重關鍵字DISTINCT時,需要注意的一點是:
在多個列上進行的去重操作與hive環(huán)境變量hive.groupby.skewindata存在關系缀皱。
當hive.groupby.skewindata=true時斗这,hive不支持多列上的去重操作,并報錯:
Errorinsemanticanalysis:DISTINCTondifferentcolumnsnotsupportedwithskewindata.

注意:上面示例中的(3)不屬于多列上的DISTINCT操作啤斗。

GroupBy語句

Map端部分聚合:

并不是所有的聚合操作都需要在Reduce端完成表箭,很多聚合操作都可以先在Map端進行部分聚合,最后在Reduce端得出最終結果钮莲。

基于Hash免钻,參數包括:
hive.map.aggr=true是否在Map端進行聚合,默認為True
hive.groupby.mapaggr.checkinterval=100000在Map端進行聚合操作的條目數目

有數據傾斜的時候進行負載均衡
hive.groupby.skewindata=false

當選項設定為true崔拥,生成的查詢計劃會有兩個MRJob极舔。第一個MRJob中,Map的輸出結果集合會隨機分布到Reduce中握童,每個Reduce做部分聚合操作姆怪,并輸出結果,這樣處理的結果是相同的GroupByKey有可能被分發(fā)到不同的Reduce中澡绩,從而達到負載均衡的目的;第二個MRJob再根據預處理的數據結果按照GroupByKey分布到Reduce中(這個過程可以保證相同的GroupByKey被分布到同一個Reduce中)稽揭,最后完成最終的聚合操作。

4.每個MapReduce作業(yè)的任務可以申請的內存資源數量

SETmapreduce.map.memory.mb=2048;

每個MapReduce作業(yè)的map任務可以申請的內存資源數量

SETmapreduce.reduce.memory.mb=8192;

每個MapReduce作業(yè)的reduce任務可以申請的內存資源數量

5.對于簡單的不需要聚合的類似SELECT

from LIMITn語句肥卡,不需要起MapReducejob溪掀,直接通過Fetchtask獲取數據

sethive.fetch.task.conversion=more;

合并小文件

6.hive.merge.mapredfiles(默認為false)

正常的map-reducejob后,是否啟動mergejob來合并reduce端輸出的結果步鉴,建議開啟

setmapred.max.split.size=524288000;

setmapred.min.split.size.per.node=471859200;

setmapred.min.split.size.per.rack=471859200;

sethive.hadoop.supports.splittable.combineinputformat=true;

sethive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;

注:第四個參數存在其他參數才能生效

7.設置參數不走map-reduce

sethive.fetch.task.conversion=more;

8.hive動態(tài)分區(qū)參數設置

ive.exec.dynamic.partition=true

默認值:false

描述:是否允許動態(tài)分區(qū)

hive.exec.dynamic.partition.mode=nonstrict

默認值:strict

描述:strict是避免全分區(qū)字段是動態(tài)的揪胃,必須有至少一個分區(qū)字段是指定有值的

設置如下參數配置動態(tài)分區(qū)的使用環(huán)境:

hive.exec.max.dynamic.partitions.pernode=100

默認值:100

描述:eachmapperorreducer可以創(chuàng)建的最大動態(tài)分區(qū)數

hive.exec.max.dynamic.partitions=1000

默認值:1000

描述:一個DML操作可以創(chuàng)建的最大動態(tài)分區(qū)數

hive.exec.max.created.files=100000

默認值:100000

描述:一個DML操作可以創(chuàng)建的文件數

=============================================================================================================

hive.exec.reducers.bytes.per.reducer

默認值:1000000000(1G)

說明:每個reduce的接受的數據量

如果送到reduce的數據為10G,那么將生成10個reduce任務

hive.exec.reducers.max

默認值:999

說明:reduce的最大個數

hive.cli.print.header

目前值:fasle

說明:可以控制在處理中是否顯示表列名(就是查詢結果)

mapred.reduce.tasks

默認值:-1

說明:每個任務reduce的默認值

-1代表自動根據作業(yè)的情況來設置reduce的值

hive.cli.print.current.db

默認值:false

說明:開啟這個屬性可以再CLI提示符前打印出當前所在的數據庫

hive.cli.prompt

默認值:hive

說明:應該就是設置“hive”為啟動cli的命令

hive.cli.pretty.output.num.cols

默認值:-1

說明:根據百度翻譯璃哟,意思應該是根據表的列數,和你終端的寬度喊递,自動設置你數據展現的格式随闪。

hive.exec.scratchdir

集群值:/tmp/hive-${user.name}

說明:HDFS路徑,用于存儲不同map/reduce階段的執(zhí)行計劃和這些階段的中間輸出結果骚勘。

hive.exec.local.scratchdir

集群值:/tmp/${user.name}

說明:Hive默認的數據文件存儲路徑铐伴,通常為HDFS可寫的路徑。

hive.test.mode

默認值:false

說明:是否以測試模式運行Hive

hive.test.mode.prefix

默認值:test_

說明:Hive測試模式的前綴俏讹。

hive.test.mode.samplefreq

默認值:32

說明:Hive測試模式取樣的頻率当宴,即每秒鐘取樣的次數。

hive.test.mode.nosamplelist

說明:Hive測試模式取樣的排除列表泽疆,以逗號分隔户矢。

hive.metastore.uris

說明:Hive元數據的URI,多個thrift://地址殉疼,以英文逗號分隔梯浪。

javax.jdo.option.ConnectionURL

集群值:jdbc:derby:;databaseName=metastore_db;create=true

說明:元數據庫的連接URL。

javax.jdo.option.DetachAllOnCommit

說明:事務提交后detach所有提交的對象瓢娜,默認是true;

javax.jdo.option.NonTransactionalRead

說明:是否允許非事務的讀驱证,默認是true;

javax.jdo.option.ConnectionUserName:username,默認APP;

javax.jdo.option.ConnectionPassword:password恋腕,默認mine;

javax.jdo.option.Multithreaded:是否支持并發(fā)訪問metastore,默認是true;

datanucleus.connectionPoolingType:使用連接池來訪問JDBCmetastore逆瑞,默認是DBCP;

datanucleus.validateTables:檢查是否存在表的schema荠藤,默認是false;

datanucleus.validateColumns:檢查是否存在列的schema,默認false;

datanucleus.validateConstraints:檢查是否存在constraint的schema获高,默認false;

datanucleus.stroeManagerType:元數據存儲類型哈肖,默認rdbms;

datanucleus.autoCreateSchema:在不存在時是否自動創(chuàng)建必要的schema,默認是true;

datanucleus.aotuStartMechanismMode:如果元數據表不正確念秧,拋出異常淤井,默認是checked;

datanucleus.transactionIsolation:默認的事務隔離級別,默認是read-committed;

datanucleus.cache.level2:使用二級緩存摊趾,默認是false;

datanucleus.cache.level2.type:二級緩存的類型币狠,有兩種,SOFT:軟引用砾层,WEAK:弱引用漩绵,默認是SOFT;

datanucleus.identifierFactory:id工廠生產表和列名的名字,默認是datanucleus;

datanucleus.plugin.pluginRegistryBundleCheck:當plugin被發(fā)現并且重復時的行為肛炮,默認是LOG;

hive.metastroe.warehouse.dir

說明:數據倉庫的位置止吐,默認是/user/hive/warehouse;

hive.metastore.execute.setugi:非安全模式宝踪,設置為true會令metastore以客戶端的用戶和組權限執(zhí)行DFS操作,默認是false碍扔,這個屬性需要服務端和客戶端同時設置;

hive.metastore.event.listeners:metastore的事件監(jiān)聽器列表瘩燥,逗號隔開,默認是空;

hive.metastore.partition.inherit.table.properties:當新建分區(qū)時自動繼承的key列表不同,默認是空;

hive.metastore.end.function.listeners:metastore函數執(zhí)行結束時的監(jiān)聽器列表厉膀,默認是空;

hive.metadata.move.exported.metadata.to.trash

說明:猜測,默認值是空套鹅。應該是垃圾站站蝠,如果垃圾站被清,元數據都會被清掉卓鹿。

hive.metastore.partition.name.whitelist.pattern

說明:猜測菱魔,默認值是空。應該是如果設置了規(guī)則吟孙,分區(qū)名稱將會按照你的正則規(guī)則去匹配澜倦。不匹配會被拒絕創(chuàng)建。

hive.metastore.disallow.incompatible.col.type.change

說明:額杰妓,集群值是空藻治。描述中大概意思是,如果開啟(默認false)則更改表字段的類型到一個不兼容的新類型是不允許的巷挥。RCFile默認SerDe(columnarserde)序列化的值在這樣一種方式下數據類型可以轉換成字符串的任何類型桩卵。地圖也是序列化為一個字符串,它可以作為一個字符串讀取倍宾。然而雏节,任何二進制序列化,都是不行的高职。當ALTERTABLE嘗試訪問舊分區(qū)是會被阻止的钩乍。更多細節(jié)見hive-4409。

原始的類型怔锌,如int寥粹,string,bigint埃元,等相互兼容涝涤,不阻止。

好吧岛杀。妄痪。。只能翻譯成這樣了楞件。衫生。裳瘪。

hive.metastore.end.function.listeners:metastore函數執(zhí)行結束時的監(jiān)聽器列表,默認是空;

hive.metastore.event.expiry.duration:事件表中事件的過期時間罪针,默認是0;

hive.metastore.event.clean.freq:metastore中清理過期事件的定時器的運行周期彭羹,默認是0;

hive.metastore.connect.retries:創(chuàng)建metastore連接時的重試次數,默認是5;

hive.metastore.failure.retries:創(chuàng)建metastore連接時的失敗重試次數泪酱,默認是3;

hive.metastore.client.connect.retry.delay:客戶端在連續(xù)的重試連接等待的時間派殷,默認1;

hive.metastore.client.socket.timeout:客戶端socket超時時間,默認20秒;

hive.metastore.rawstore.impl:原始metastore的存儲實現類墓阀,默認是org.apache.hadoop.hive.metastore.ObjectStore;

hive.metastore.batch.retrieve.max:在一個batch獲取中毡惜,能從metastore里取出的最大記錄數,默認是300斯撮,集群設置值是1000;

hive.default.fileformat

說明:Hive默認的輸出文件格式经伙,與創(chuàng)建表時所指定的相同,可選項為'TextFile'(默認)勿锅、'SequenceFile'或者'RCFile'帕膜。

hive.default.rcfile.serde:hive默認的RCFILESerDe格式默認:org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe;

hive.fileformat.check:Hive是否檢查輸出的文件格式。默認true;

hive.map.aggr說明:決定是否可以在Map端進行聚合操作溢十,默認true;

hive.groupby.skewindata說明:決定groupby操作是否支持傾斜的數據垮刹。默認是false;

hive.optimize.multigroupby.common.distincts

說明:這個應該是如果一張表的查詢用到相同的distinct字段,可以寫成如下格式:

fromsrc

insertoverwritetabledest1selectcol1,count(distinctcolx)groupbycol1

insertoverwritetabledest2selectcol2,count(distinctcolx)groupbycol2;

也就是相當于一表查詢张弛,多表插入那種吧荒典。默認是true

hive.groupby.mapaggr.checkinterval說明:對于GroupBy操作的Map聚合的檢測時間,以毫秒為單位吞鸭。默認100000

hive.mapred.local.mem說明:Mapper/Reducer在本地模式的最大內存量种蝶,以字節(jié)為單位,0為不限制瞒大。默認0。

hive.mapjoin.followby.map.aggr.hash.percentmemory:map端聚合時hash表的內存占比搪桂,該設置約束groupby在mapjoin后進行透敌,否則使用hive.map.aggr.hash.percentmemory來確認內存占比,默認值0.3;

hive.map.aggr.hash.force.flush.memeory.threshold:map端聚合時hash表的最大可用內存踢械,如果超過該值則進行flush數據酗电,默認是0.9;

hive.map.aggr.hash.percentmemory:map端聚合時hash表所占用的內存比例,默認0.5内列,這個在map端聚合開啟后使用撵术。

hive.session.history.enabled設置為true,則會初始化日志文件,默認為false;

hive.map.aggr.hash.min.reductionHiveMap端聚合的哈稀存儲的最小reduce比例话瞧。默認0.5;

hive.optimize.index.filter:自動使用索引嫩与,默認不開啟false;

hive.optimize.index.groupby:是否使用聚集索引優(yōu)化group-by查詢寝姿,默認關閉false;

hive.optimize.ppd:是否支持謂詞下推,默認開啟;所謂謂詞下推划滋,將外層查詢塊的WHERE子句中的謂詞移入所包含的較低層查詢塊(例如視圖)饵筑,從而能夠提早進行數據過濾以及有可能更好地利用索引。

hive.optimize.ppd.storage:謂詞下推開啟時处坪,謂詞是否下推到存儲handler根资,默認開啟,在謂詞下推關閉時不起作用;

hive.ppd.recognizetransivity:在等值join條件下是否產地重復的謂詞過濾器同窘,默認開啟;

hive.optimize.groupby:在做分區(qū)和表查詢時是否做分桶groupby玄帕,默認開啟true;

hive.optimize.skewjoin.compiletime:默認false,這個想邦,真沒看懂百度翻譯裤纹。。案狠。服傍。

hive.optimize.union.remove:默認false,這個骂铁,沒看懂百度翻譯吹零。。拉庵。灿椅。

hive.mapred.supports.subdirectories:默認false,哎钞支。茫蛹。同上

hive.multigroupby.singlemr:將多個groupby產出為一個單一map/reduce任務計劃,當然約束前提是groupby有相同的key烁挟,默認是false;

hive.map.groupby.sorted:默認false婴洼,看不懂。撼嗓。

hive.map.groupby.sorted.testmode:默認false柬采,看不懂。且警。

hive.new.job.grouping.set.cardinality:默認30粉捻,看不懂。斑芜。

hive.join.emit.interval:在發(fā)出join結果之前對join最右操作緩存多少行的設定肩刃,默認1000;hivejira里有個對該值設置太小的bugfix;

hive.join.cache.size:在做表join時緩存在內存中的行數,默認25000;

hive.smbjoin.cache.rows:在做表smb(smb不知道是啥,Sort-Merge-Bucket)join時緩存在內存中的行數盈包,默認10000;

hive.optimize.skewjoin:

說明:是否開啟數據傾斜的join優(yōu)化沸呐,默認不開啟false;

hive.skewjoin.key:

說明:判斷數據傾斜的閾值,如果在join中發(fā)現同樣的key超過該值則認為是該key是傾斜的joinkey续语,默認是100000;

hive.skewjoin.mapjoin.map.tasks:

說明:在數據傾斜join時mapjoin的map數控制垂谢,默認是10000;

hive.skewjoin.mapjoin.min.split:

說明:數據傾斜join時mapjoin的map任務的最小split大小,默認是33554432疮茄,該參數要結合上面的參數共同使用來進行細粒度的控制;

hive.mapred.mode:

說明:hive操作執(zhí)行時的模式滥朱,默認是nonstrict非嚴格模式,如果是strict模式力试,很多有風險的查詢會被禁止運行徙邻,比如笛卡爾積的join和動態(tài)分區(qū);

hive.enforce.bucketmapjoin:默認false,應該是跟桶有關的join設置;

hive.exec.script.maxerrsize:當用戶調用transform或者map或者reduce執(zhí)行腳本時畸裳,最大的序列化錯誤數缰犁,默認100000,一般也不用修改;

hive.exec.script.allow.partial.consumption:hive是否允許腳本不從標準輸入中讀取任何內容就成功退出怖糊,默認關閉false;

hive.script.operator.id.env.var:在用戶使用transform函數做自定義map/reduce時帅容,存儲唯一的腳本標識的環(huán)境變量的名字,默認HIVE_SCRIPT_OPERATOR_ID;

hive.script.operator.truncate.env:默認false伍伤,知道干啥的并徘。

hive.exec.compress.output:

說明:一個查詢的最后一個map/reduce任務輸出是否被壓縮的標志,默認為false扰魂,但是一般會開啟為true麦乞,好處的話,節(jié)省空間不說劝评,在不考慮cpu壓力的時候會提高io;

hive.exec.compress.intermediate:

說明:類似上個姐直,在一個查詢的中間的map/reduce任務輸出是否要被壓縮,默認false;

hive.exec.parallel:

說明:hive的執(zhí)行job是否并行執(zhí)行蒋畜,默認不開啟false声畏,在很多操作如join時,子查詢之間并無關聯可獨立運行姻成,這種情況下開啟并行運算可以大大加速;

hive.exec.parallel.thread.number:

說明:在并行執(zhí)行時的最大job數插龄,默認是8;

hive.exec.rowoffset:是否提供行偏移量的虛擬列,默認是false不提供佣渴,Hive有兩個虛擬列:一個是INPUT__FILE__NAME,表示輸入文件的路徑,另外一個是BLOCK__OFFSET__INSIDE__FILE初斑,表示記錄在文件中的塊偏移量辛润,這對排查出現不符合預期或者null結果的查詢是很有幫助的;

hive.task.progress:控制hive是否在執(zhí)行過程中周期性的更新任務進度計數器,開啟這個配置可以幫助jobtracker更好的監(jiān)控任務的執(zhí)行情況,但是會帶來一定的性能損耗砂竖,當動態(tài)分區(qū)標志hive.exec.dynamic.partition開啟時真椿,本配置自動開啟;

hive.hwi.war.file:hive在web接口是的war文件的路徑,默認是lib/hive-hwi-xxxx(version).war;

hive.hwi.listen.host:hwi監(jiān)聽的host地址乎澄,默認是0.0.0.0;

hive.hwi.listen.port:hwi監(jiān)聽的端口突硝,默認是9999;

hive.exec.pre.hooks:執(zhí)行前置條件,一個用逗號分隔開的實現了org.apache.hadoop.hive.ql.hooks.ExecuteWithHookContext接口的javaclass列表置济,配置了該配置后解恰,每個hive任務執(zhí)行前都要執(zhí)行這個執(zhí)行前鉤子,默認是空;

hive.metastore.init.hooks:一個逗號分隔的列表鉤子被調用浙于,在hmshandler初始化開始护盈。aninit鉤指定名稱為java類來擴展org.apache.hadoop.hive.metastore.metastoreinitlistener。

hive.client.stats.publishers:做count的job的統計發(fā)布類列表羞酗,由逗號隔開腐宋,默認是空;必須實現org.apache.hadoop.hive.ql.stats.ClientStatsPublisher接口;

hive.merge.mapfiles:

說明:在只有map的作業(yè)結束時合并小文件,默認開啟true;

hive.merge.mapredfiles:

說明:在一個map/reduce作業(yè)結束后合并小文件檀轨,默認不開啟false;

hive.heartbeat.interval:發(fā)送心跳的時間間隔胸竞,在mapjoin和filter操作中使用,默認1000;

hive.merge.size.per.task:疑問一體化集群沒有生效参萄。

說明:作業(yè)結束時合并文件的大小酣难,默認256MB;

hive.merge.smallfiles.avgsize:

說明:在作業(yè)輸出文件小于該值時,起一個額外的map/reduce作業(yè)將小文件合并為大文件跨新,小文件的基本閾值灶挟,設置大點可以減少小文件個數,需要mapfiles和mapredfiles為true淤袜,默認值是16MB;

****************************************mapjoin 的參數**********************************************************

hive.mapjoin.smalltable.filesize:輸入表文件的mapjoin閾值痒谴,如果輸入文件的大小小于該值,則試圖將普通join轉化為mapjoin铡羡,默認25MB;

hive.ignore.mapjoin.hint:忽略mapjoin暗示

hive.mapjoin.localtask.max.memory.usage:mapjoin本地任務執(zhí)行時hash表容納key/value的最大量积蔚,超過這個值的話本地任務會自動退出,默認是0.9;

hive.mapjoin.followby.gby.localtask.max.memory.usage:類似上面烦周,只不過是如果mapjoin后有一個groupby的話尽爆,該配置控制類似這樣的query的本地內存容量上限,默認是0.55;

hive.mapjoin.check.memory.rows:在運算了多少行后執(zhí)行內存使用量檢查读慎,默認100000;

hive.auto.convert.join:根據輸入文件的大小決定是否將普通join轉換為mapjoin的一種優(yōu)化漱贱,默認不開啟false;

hive.auto.convert.join.noconditionaltask:

9. 0.11中新增了一個優(yōu)化參數“hive.auto.convert.join.noconditionaltask”,默認開啟夭委,它對N-Way Join會做優(yōu)化幅狮,枚舉所有N-1表size總和,判斷是否小于參數hive.auto.convert.join.noconditionaltask.size(默認10MB),如果小于該值崇摄,則會自動轉化成Map-Side Join擎值,將N-1張表HashTable打包DistributedCache上傳至HDFS分發(fā)至各Task節(jié)點和Factor Table做Join,從而避免了通常Reduce-side Join會起N-1個MR Job的開銷逐抑,但是這個參數還是顯得過于樂觀了鸠儿,不同于之前的Map Join優(yōu)化策略(hive.auto.convert.join),它在替換了conditional task后厕氨,沒有相應的common-join backup task进每,從而一旦由于某種原因MapRedLocalTask fail,就會導致整個Job fail, 而0.9中會起backup task來做alternative腐巢,所以從Job Level看還是正確執(zhí)行的品追,只是執(zhí)行時間變長了。為保證語句執(zhí)行的正確性冯丙,我們默認關閉此優(yōu)化參數肉瓦。

hive.auto.convert.join.noconditionaltask.size:多個mapjoin轉換為1個時,所有小表的文件大小總和的最大值胃惜。

例如泞莉,一個大表順序關聯3個小表a(10M), b(8M),c(12M),如果hive.auto.convert.join.noconditionaltask.size的值:

1. 小于18M船殉,則無法合并mapjoin鲫趁,必須執(zhí)行3個mapjoin;2. 大于18M小于30M,則可以合并a和b表的mapjoin利虫,所以只需要執(zhí)行2個mapjoin;3. 大于30M挨厚,則可以將3個mapjoin都合并為1個。

合并mapjoin有啥好處呢因為每個mapjoin都要執(zhí)行一次map糠惫,需要讀寫一次數據疫剃,所以多個mapjoin就要做多次的數據讀寫,合并mapjoin后只用讀寫一次硼讽,自然能大大加快速度巢价。但是執(zhí)行map是內存大小是有限制的,在一次map里對多個小表做mapjoin就必須把多個小表都加入內存固阁,為了防止內存溢出壤躲,所以加了hive.auto.convert.join.noconditionaltask.size參數來做限制。不過备燃,這個值只是限制輸入的表文件的大小碉克,并不代表實際mapjoin時hashtable的大小。

我們可以通過explain查看執(zhí)行計劃并齐,來看看mapjoin是否生效漏麦。


hive.script.auto.progress:默認false法瑟。hive的transform/map/reduce腳本執(zhí)行時是否自動的將進度信息發(fā)送給TaskTracker來避免任務沒有響應被誤殺,本來是當腳本輸出到標準錯誤時唁奢,發(fā)送進度信息,但是開啟該項后窝剖,輸出到標準錯誤也不會導致信息發(fā)送麻掸,因此有可能會造成腳本有死循環(huán)產生,但是TaskTracker卻沒有檢查到從而一直循環(huán)下去;

hive.script.serde:

用戶腳本轉換輸入到輸出時的SerDe約束赐纱,默認是org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe;

hive.binary.record.max.length:默認1000,脊奋。從一個二進制流讀取和對待每一hive.binary.record.max.length字節(jié)作為記錄。在流的結尾可以有小于hive.binary.record.max.length字節(jié)最后一個記錄

hive.server2.max.start.attempts: 默認30疙描,感覺沒啥用诚隙,應該是HiveServer2退出前,每60秒嘗試重啟一次起胰,持續(xù)30分鐘久又。

hive.server2.transport.mode:默認值為binary(TCP),可選值HTTP效五。

hive.server2.thrift.http.port:HTTP的監(jiān)聽端口地消,默認值為10001。

hive.server2.thrift.http.path:服務的端點名稱畏妖,默認為cliservice脉执。

hive.server2.thrift.http.min.worker.threads:服務池中的最小工作線程,默認為5戒劫。

hive.server2.thrift.http.max.worker.threads:服務池中的最小工作線程半夷,默認為500。

hive.script.recordreader:

從腳本讀數據的時候的默認reader迅细,默認是org.apache.hadoop.hive.ql.exec.TextRecordReader;

stream.stderr.reporter.prefix:默認‘reporter: '巫橄。感覺沒啥用, 加此前綴可在標準的Streaming jobs的日志中記錄計數器和標準信息

stream.stderr.reporter.enabled:默認true疯攒。 應該是streaming job時展現streaing的工作狀態(tài)和技術信息嗦随。

hive.script.recordwriter:寫數據到腳本時的默認writer,默認org.apache.hadoop.hive.ql.exec.TextRecordWriter;

hive.input.format:輸入格式敬尺,默認是org.apache.hadoop.hive.ql.io.CombineHiveInputFormat枚尼,如果出現問題,可以改用org.apache.hadoop.hive.ql.io.HiveInputFormat; 這個你們應該熟悉哦

hive.udtf.auto.progress:UDTF執(zhí)行時hive是否發(fā)送進度信息到TaskTracker砂吞,默認是false;

hive.mapred.reduce.tasks.speculative.execution:reduce任務推測執(zhí)行是否開啟署恍,默認是true;

hive.exec.counters.pull.interval:運行中job輪詢JobTracker的時間間隔,設置小會影響JobTracker的load蜻直,設置大可能看不出運行任務的信息盯质,要去平衡袁串,默認是1000;

hive.querylog.location:集群值是:/tmp/${user.name} 。 hive運行時日志文件的位置呼巷。

hive.querylog.enable.plan.progress:默認true囱修。每次檢查作業(yè)的進度時是否記錄計劃的進度到日志中。這些日志保存在hive.querylog.location指定的位置(Hive-0.10版本開始)王悍。

hive.querylog.plan.progress.interval:默認:60000破镰。記錄計劃執(zhí)行進度的時間間隔,單位是毫秒压储。如果map或者reduce的進度有整數百分比的變化鲜漩,則不考慮該值而該進度被記入日志。

hive.enforce.bucketing:數據分桶是否被強制執(zhí)行集惋,默認false孕似,如果開啟,則寫入table數據時會啟動分桶刮刑。

hive.enforce.sorting:開啟強制排序時喉祭,插數據到表中會進行強制排序,默認false;

hive.optimize.bucketingsorting:默認true雷绢。 百度翻譯沒看懂臂拓。。习寸。胶惰。

If hive.enforce.bucketing or hive.enforce.sorting is true, dont create a reducer for enforcing

bucketing/sorting for queries of the form:

insert overwrite table T2 select * from T1;

where T1 and T2 are bucketed/sorted by the same keys into the same number of buckets.

你們可以看看。霞溪。孵滞。。

hive.enforce.sortmergebucketmapjoin: 默認false 鸯匹。不懂坊饶。。殴蓬。匿级。

hive.auto.convert.sortmerge.join:默認false。應該是如果聯接表通過sort-merge join的標準染厅,將自動轉換為一個sort-merge join痘绎。

hive.auto.convert.sortmerge.join.bigtable.selection.policy:

默認:org.apache.hadoop.hive.ql.optimizer.AvgPartitionSizeBasedBigTableSelectorForAutoSMJ

這個字太多⌒ち福看圖吧孤页。。涩馆。行施。允坚。。

hive.auto.convert.sortmerge.join.to.mapjoin:默認false蛾号,英文描述很無助稠项。。鲜结。皿渗。。轻腺。。划乖。贬养。。琴庵。误算。。

hive.metastore.ds.connection.url.hook:查找JDO連接url時hook的名字迷殿,默認是javax.jdo.option.ConnectionURL;

hive.metastore.ds.retry.attempts:當出現連接錯誤時重試連接的次數儿礼,默認是1次;

hive.metastore.ds.retry.interval:metastore重試連接的間隔時間,默認1000毫秒;

hive.metastore.server.min.threads:在thrift服務池中最小的工作線程數庆寺,默認是200;

hive.metastore.server.max.threads:最大線程數蚊夫,默認是100000;

hive.metastore.server.tcp.keepalive:metastore的server是否開啟長連接,長連可以預防半連接的積累懦尝,默認是true;

hive.metastore.sasl.enabled:metastore thrift接口的安全策略知纷,開啟則用SASL加密接口,客戶端必須要用Kerberos機制鑒權陵霉,默認是不開啟false;

hive.metastore.thrift.framed.transport.enabled:默認false琅轧,大概是用標準的TTransport 。如果是true踊挠, metastore thrift接口將會使用TFramedTransport乍桂。

hive.metastore.kerberos.keytab.file:在開啟sasl后kerberos的keytab文件存放路徑,默認是空;

hive.metastore.kerberos.principal:

kerberos的principal效床,_HOST部分會動態(tài)替換睹酌,默認是hive-metastore/_HOST@EXAMPLE.COM;

hive.cluster.delegation.token.store.class:

代理token的存儲實現類,默認是org.apache.hadoop.hive.thrift.MemoryTokenStore剩檀,可以設置為org.apache.hadoop.hive.thrift.ZooKeeperTokenStore來做負載均衡集群;

hive.cluster.delegation.token.store.zookeeper.connectString:zk的token存儲連接串忍疾,默認是localhost:2181;

hive.cluster.delegation.token.store.zookeeper.znode:token存儲的節(jié)點跟路徑,默認是/hive/cluster/delegation;

hive.cluster.delegation.token.store.zookeeper.acl:

token存儲的ACL谨朝,默認是sasl:hive/host1@example.com:cdrwa,sasl:hive/host2@example.com:cdrwa;

hive.metastore.cache.pinobjtypes:在cache中支持的metastore的對象類型卤妒,由逗號分隔甥绿,默認是Table,StorageDescriptor,SerDeInfo,Partition,Database,Type,FieldSchema,Order;

hive.optimize.reducededuplication:如果數據已經根據相同的key做好聚合,那么去除掉多余的map/reduce作業(yè)则披,此配置是文檔的推薦配置共缕,建議打開,默認是true;

hive.optimize.correlation : 默認false士复。利用內部查詢的相關性图谷。不明白。阱洪。便贵。。exploit intra-query correlations.

hive.optimize.reducededuplication.min.reducer:默認是4. 看不懂冗荸。承璃。。蚌本。盔粹。

******************************動態(tài)分區(qū)參數******************************************

hive.exec.dynamic.partition:在DML/DDL中是否支持動態(tài)分區(qū),默認false;

hive.exec.dynamic.partition.mode:默認strict程癌,在strict模式下舷嗡,動態(tài)分區(qū)的使用必須在一個靜態(tài)分區(qū)確認的情況下,其他分區(qū)可以是動態(tài);

hive.exec.max.dynamic.partitions:動態(tài)分區(qū)的上限嵌莉,默認1000;

hive.exec.max.dynamic.partitions.pernode:每個mapper/reducer節(jié)點可以創(chuàng)建的最大動態(tài)分區(qū)數进萄,默認100;

hive.exec.default.partition.name:當動態(tài)分區(qū)啟用時,如果數據列里包含null或者空字符串的話垮斯,數據會被插入到這個分區(qū)只祠,默認名字是HIVE_DEFAULT_PARTITION;


hive.exec.max.created.files:一個mapreduce作業(yè)能創(chuàng)建的HDFS文件最大數,默認是100000;

hive.stats.dbclass:存儲hive臨時統計信息的數據庫抛寝,默認是jdbc:derby;

hive.stats.autogather:在insert overwrite命令時自動收集統計信息,默認開啟true;

hive.stats.jdbcdriver:數據庫臨時存儲hive統計信息的jdbc驅動;

hive.stats.dbconnectionstring:

臨時統計信息數據庫連接串晶府,默認jdbc:derby:databaseName=TempStatsStore;create=true;

hive.stats.defaults.publisher:如果dbclass不是jdbc或者hbase钻趋,那么使用這個作為默認發(fā)布,必須實現StatsPublisher接口蛮位,默認是空;

hive.stats.jdbc.timeout:jdbc連接超時配置较沪,默認30秒;

hive.stats.retries.max:當統計發(fā)布合聚集在更新數據庫時出現異常時最大的重試次數鳞绕,默認是0,不重試;

hive.stats.retries.wait:重試次數之間的等待窗口尸曼,默認是3000毫秒;

hive.stats.reliable:默認是false们何,翻譯是,無論查詢是否失敗控轿。統計數據不能完全準確的收集;如果設置成true冤竹,reading/writing from/into一個分區(qū)都可能會失敗,因為數據無法準確計算茬射。(這個應該是跟蹤問題的時用的參數鹦蠕。。在抛。)

hive.stats.collect.tablekeys:默認false钟病。英文看不到太懂。應該是無論是join或者group by 的keys 都是由執(zhí)行計劃生成和維護的霜定。。廊鸥。這個有用的訪問識別表是否應該被分桶望浩。。惰说。好吧磨德。很亂。

hive.stats.collect.scancols:默認false吆视。應該是執(zhí)行計劃中跟蹤列的訪問典挑,在表的訪問中減少無用的列。

hive.stats.ndv.error:默認20.0啦吧。百分比表示的標準誤差您觉。提供了一個精度和計算成本之間的權衡琳水,一個較低的值的錯誤指示更高的精度和更高的計算成本在孝。 (我的理解是默認值低了私沮,錯誤的指示就高了仔燕,但是計算成本也高了)筋搏。

hive.stats.key.prefix.max.length:默認200奔脐。 翻譯看不明白髓迎。。排龄。橄维。

hive.support.concurrency:hive是否支持并發(fā)争舞,默認是false竞川,支持讀寫鎖的話委乌,必須要起zookeeper;

hive.lock.numretries:獲取鎖時嘗試的重試次數遭贸,默認是100;

hive.unlock.numretries:獲取解鎖時嘗試的重試次數革砸,默認是100;

hive.lock.sleep.between.retries:在重試間隔的睡眠時間算利,默認60秒;

hive.zookeeper.quorum:zk地址列表,默認是空;

hive.zookeeper.client.port:zk服務器的連接端口缎患,默認是2181;

hive.zookeeper.session.timeout:zk客戶端的session超時時間挤渔,默認是600000;

hive.zookeeper.namespace:在所有zk節(jié)點創(chuàng)建后的父節(jié)點嫉父,默認是hive_zookeeper_namespace;

hive.zookeeper.clean.extra.nodes:在session結束時清除所有額外node;

fs.har.impl:訪問Hadoop Archives的實現類绕辖,低于hadoop 0.20版本的都不兼容仪际,默認是org.apache.hadoop.hive.shims.HiveHarFileSystem;

hive.archive.enabled:是否允許歸檔操作树碱,默認是false;

hive.fetch.output.serde:FetchTask序列化fetch輸出時需要的SerDe成榜,默認是org.apache.hadoop.hive.serde2.DelimitedJSONSerDe;

hive.exec.mode.local.auto:是否由hive決定自動在local模式下運行雨饺,默認是false;

hive.exec.drop.ignorenoneexistent:在drop表或者視圖時如果發(fā)現表或視圖不存在额港,是否報錯移斩,默認是true;

hive.exec.show.job.failure.debug.info:在作業(yè)失敗時是否提供一個任務debug信息肠套,默認true;

hive.auto.progress.timeout:運行自動progressor的時間間隔你稚,默認是0等價于forever;

HBase存儲處理器參數

hive.hbase.wal.enabled:寫入hbase時是否強制寫wal日志刁赖,默認是true;

hive.table.parameters.default:新建表的屬性字段默認值,默認是empty空;

hive.entity.separator:用于構造表和分區(qū)的名稱的分隔符鸡典。

hive.ddl.createtablelike.properties.whitelist:當執(zhí)行創(chuàng)建表時,要復制的表屬性疗垛。默認是空;

hive.variable.substitute:是否支持變量替換贷腕,如果開啟的話泽裳,支持語法如{var}{system:var}和${env.var},默認是true;

hive.variable.substitute.depth:默認40瀑梗。字面翻譯替換引擎的最大替換抛丽。

hive.conf.validation:默認ture。應該是是否檢查注冊的hive配置的類型冤吨。

hive.security.authorization.enabled:hive客戶端是否認證垒探,默認是false;

hive.security.authorization.manager:

hive客戶端認證的管理類仔引,默認是org.apache.hadoop.hive.ql.security.authorization.DefaultHiveAuthorizationProvider;用戶定義的要實現org.apache.hadoop.hive.ql.security.authorization.HiveAuthorizationProvider;

hive.security.metastore.authorization.manager:metastore的認證管理類咖耘,默認是org.apache.hadoop.hive.ql.security.authorization.DefaultHiveMetastoreAuthorizationProvider;用戶定義的必須實現org.apache.hadoop.hive.ql.security.authorization.HiveMetastoreAuthorizationProvider接口;接口參數要包含org.apache.hadoop.hive.ql.security.authorization.StorageBasedAuthorizationProvider接口;使用HDFS的權限控制認證而不是hive的基于grant的方式;

hive.security.authenticator.manager:hive客戶端授權的管理類儿倒,默認是org.apache.hadoop.hive.ql.security.HadoopDefaultAuthenticator;用戶定義的需要實現org.apache.hadoop.hive.ql.security.HiveAuthenticatorProvider;

hive.security.metastore.authenticator.manager:metastore端的授權管理類,默認是org.apache.hadoop.hive.ql.security.HadoopDefaultMetastoreAuthenticator凰慈,自定義的必須實現org.apache.hadoop.hive.ql.security.HiveAuthenticatorProvider接口;

hive.security.authorization.createtable.user.grants:當表創(chuàng)建時自動授權給用戶微谓,默認是空;

hive.security.authorization.createtable.group.grants:同上豺型,自動授權給組,默認是空;

hive.security.authorization.createtable.role.grants:同上肴焊,自動授權給角色,默認是空;

hive.security.authorization.createtable.owner.grants:同上茂浮,自動授權給owner,默認是空;

hive.security.command.whitelist:hive授權用戶執(zhí)行的SQL命令列表谓厘,用逗號分隔。默認是set,reset,dfs,add,delete;

hive.conf.restricted.list:運行時的不可變配置列表聂宾,逗號分隔系谐。默認是空;

hive.metastore.authorization.storage.checks:在做類似drop partition操作時,metastore是否要認證權限茶袒,默認是false;

hive.error.on.empty.partition:在遇到結果為空的動態(tài)分區(qū)時是否報錯薪寓,默認是false;

hive.index.compact.file.ignore.hdfs:在索引文件中存儲的hdfs地址將在運行時被忽略,如果開啟的話;如果數據被遷移澜共,那么索引文件依然可用预愤,默認是false;

hive.optimize.index.filter.compact.minsize:壓縮索引自動應用的最小輸入大小,默認是5368709120;

hive.optimize.index.filter.compact.maxsize:同上咳胃,相反含義植康,如果是負值代表正無窮,默認是-1;

hive.index.compact.query.max.size:一個使用壓縮索引做的查詢能取到的最大數據量展懈,默認是10737418240 個byte;負值代表無窮大;

hive.index.compact.query.max.entries:使用壓縮索引查詢時能讀到的最大索引項數销睁,默認是10000000;負值代表無窮大;

hive.index.compact.binary.search:在索引表中是否開啟二分搜索進行索引項查詢,默認是true;

hive.exim.uri.scheme.whitelist:在導入導出數據時提供的一個白名單列表,列表項之間由逗號分隔葛虐,默認hdfs,pfile;

hive.lock.mapred.only.operation:控制是否在查詢時加鎖,默認是false;

**************************************LIMIT參數**************************************

hive.limit.row.max.size:字面意思理解就是在使用limit做數據的子集查詢時保證的最小行數據量,默認是100000;

hive.limit.optimize.limit.file:使用簡單limit查詢數據子集時邮偎,可抽樣的最大文件數泻云,默認是10;

hive.limit.optimize.enable:使用簡單limit抽樣數據時是否開啟優(yōu)化選項婆瓜,默認是false,關于limit的優(yōu)化問題逐虚,在hive programming書中解釋的是這個feature有drawback涤伐,對于抽樣的不確定性給出了風險提示;

hive.limit.optimize.fetch.max:使用簡單limit抽樣數據允許的最大行數,默認50000山害,查詢query受限钓简,insert不受影響;

hive.limit.pushdown.memory.usage:默認0.3f。 應該是查詢分配給hash RS算子最大內存;

hive.rework.mapredwork:是否重做mapreduce夏漱,默認是false;

hive.exec.concatenate.check.index:如果設置為true交播,那么在做ALTER TABLE tbl_name CONCATENATE on a table/partition(有索引) 操作時,拋出錯誤;可以幫助用戶避免index的刪除和重建;

hive.sample.seednumber:用來區(qū)分抽樣的數字皆愉,默認是0;

hive.io.exception.handlers:io異常處理handler類列表,默認是空疚沐,當record reader發(fā)生io異常時,由這些handler來處理異常;

hive.transform.escape.input:默認false哩簿。 這個參數避免了特殊字符(換行符、回車符和標簽)被傳遞給用戶腳本時帶來的影響是越。這可以然后hive表里包含含特俗字符的數據。

hive.exec.rcfile.use.explicit.header:默認為ture盔性。應該是跟文件的格式有關

hive.exec.orc.dictionary.key.size.threshold:默認0.8蛹尝。應該是如果在字典中的鍵數比例大于此部分的非空行總數愕难,則關閉字典編碼。1是默認一直使用字典編碼轮洋。

hive.multi.insert.move.tasks.share.dependencies:默認false。不是太懂。如果這個參數被設置稠集,多插入查詢在結束前只會執(zhí)行一次奶段。優(yōu)點:一旦啟用并發(fā),一旦查詢完成

hive.server2.async.exec.wait.queue.size:默認100剥纷。在HiveServer2異步線程池等待隊列的大小痹籍。打這個限制后,異步線程池會拒絕新的請求筷畦。

hive.server2.thrift.port:默認10000词裤。HiveServer2 Thrift接口的端口號”畋觯可以通過設置$HIVE_SERVER2_THRIFT_PORT重寫吼砂。

hive.server2.thrift.bind.host:綁定主機上運行HiveServer2 Thrift接口的端口《ξ模可以通過設置$hive_server2_thrift_bind_host重寫渔肩。該值默認為localhost,如果需要在其它機器遠程訪問Hive拇惋,則需要將它改成IP地址周偎。

hive.server2.authentication:授權模式,默認NONE撑帖,可選的包括NOSASL蓉坎、KERBEROS、LDAP胡嘿、PAM和CUSTOM等授權模式蛉艾。

客戶端身份驗證類型:

NONE:沒有驗證檢查

LDAP:LDAP / AD認證

Kerberos:Kerberos/GSSAPI認證

自定義:自定義身份驗證提供程序(使用hive.server2.custom.authentication.class的屬性)

hive.server2.custom.authentication.class:

用戶授權類,實現org.apache.hive.service.auth.PasswdAuthenticationProvider接口

hive.server2.authentication.kerberos.principal:Kerberos主服務器。默認空勿侯。

hive.server2.authentication.kerberos.keytab:服務principal的keytab拓瞪。默認空。

hive.server2.authentication.ldap.url:LDAP的URL助琐。默認空祭埂。

hive.server2.authentication.ldap.baseDN:基于DN的LDAP魔慷。默認空循签。

hive.server2.enable.doAs:匿名連接用戶钞钙,默認true摊腋。

hive.server2.table.type.mapping:默認CLASSIC。應該是此設置反映了HiveServer如何向JDBC和其他客戶端提供表的類型椭更,實現可用表和表類型的檢索。

HIVE:顯示hive自帶的表類型managed_table,external_table屁药,virtual_view。

CLASSIC:更一般類型柏锄,如表和視圖酿箭。

hive.server2.thrift.sasl.qop:SASL QOP值;設置為下列值使更高水平的客戶通信保護Hive Server2。

"auth" - 國際認證和完整性保護(默認)

"auth-int" - 身份驗證和完整性保護

"auth-conf" -身份驗證和完整性和機密性保護

這個只支持在Kerberos作為HS2客戶端的授權

標簽: hive 調優(yōu)

[好文要頂](javascript:void(0);) [關注我](javascript:void(0);) [收藏該文](javascript:void(0);) [
image

](javascript:void(0); "分享至新浪微博") [
image
](javascript:void(0); "分享至微信")
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末趾娃,一起剝皮案震驚了整個濱河市缭嫡,隨后出現的幾起案子,更是在濱河造成了極大的恐慌抬闷,老刑警劉巖妇蛀,帶你破解...
    沈念sama閱讀 210,835評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異笤成,居然都是意外死亡评架,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 89,900評論 2 383
  • 文/潘曉璐 我一進店門炕泳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來纵诞,“玉大人,你說我怎么就攤上這事培遵≌丬剑” “怎么了?”我有些...
    開封第一講書人閱讀 156,481評論 0 345
  • 文/不壞的土叔 我叫張陵籽腕,是天一觀的道長嗡呼。 經常有香客問我,道長皇耗,這世上最難降的妖魔是什么南窗? 我笑而不...
    開封第一講書人閱讀 56,303評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上矾瘾,老公的妹妹穿的比我還像新娘女轿。我一直安慰自己,他們只是感情好壕翩,可當我...
    茶點故事閱讀 65,375評論 5 384
  • 文/花漫 我一把揭開白布蛉迹。 她就那樣靜靜地躺著,像睡著了一般放妈。 火紅的嫁衣襯著肌膚如雪北救。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,729評論 1 289
  • 那天芜抒,我揣著相機與錄音珍策,去河邊找鬼。 笑死宅倒,一個胖子當著我的面吹牛攘宙,可吹牛的內容都是我干的。 我是一名探鬼主播拐迁,決...
    沈念sama閱讀 38,877評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼蹭劈,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了线召?” 一聲冷哼從身側響起铺韧,我...
    開封第一講書人閱讀 37,633評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎缓淹,沒想到半個月后哈打,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 44,088評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡讯壶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,443評論 2 326
  • 正文 我和宋清朗相戀三年料仗,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鹏溯。...
    茶點故事閱讀 38,563評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡罢维,死狀恐怖,靈堂內的尸體忽然破棺而出丙挽,到底是詐尸還是另有隱情肺孵,我是刑警寧澤,帶...
    沈念sama閱讀 34,251評論 4 328
  • 正文 年R本政府宣布颜阐,位于F島的核電站平窘,受9級特大地震影響,放射性物質發(fā)生泄漏凳怨。R本人自食惡果不足惜瑰艘,卻給世界環(huán)境...
    茶點故事閱讀 39,827評論 3 312
  • 文/蒙蒙 一是鬼、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧紫新,春花似錦均蜜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,712評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至偶芍,卻和暖如春充择,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背匪蟀。 一陣腳步聲響...
    開封第一講書人閱讀 31,943評論 1 264
  • 我被黑心中介騙來泰國打工椎麦, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人材彪。 一個月前我還...
    沈念sama閱讀 46,240評論 2 360
  • 正文 我出身青樓观挎,卻偏偏與公主長得像,于是被迫代替她去往敵國和親查刻。 傳聞我的和親對象是個殘疾皇子键兜,可洞房花燭夜當晚...
    茶點故事閱讀 43,435評論 2 348

推薦閱讀更多精彩內容

  • 生命是一場放逐和流浪凤类,只是大部分人都將自己交予了俗世穗泵,用別人和社會既定的軌道牽絆自己前行,而內心的聲音谜疤,早在懂得諂...
    杜盈賢閱讀 391評論 19 3
  • 總有些歲月可供回憶佃延,如果說最美好的就是在差不多青春的最后,試著做好為數不多的僅有的事夷磕! 在找一件事履肃,讓自己全身心投...
    志輝閱讀 407評論 0 0