本人的一些总结
有關(guān)idea
1、maven倉(cāng)庫(kù)的問題
步驟:
1、先看看設(shè)置里面的倉(cāng)庫(kù),是不是自己的倉(cāng)庫(kù)。如果不是的話,先換成自己的倉(cāng)庫(kù)。(必須注意的)
2、檢查一下你本地庫(kù)里面,是不是有未下載完的文件。類似與這樣的文件,刪一下,倉(cāng)庫(kù)可能沒有下載完畢。
2、mvn package看看
百度mvn package的使用方法。
3、idea上就是爆出xxx.jar不存在,明明配置了自己的maven倉(cāng)庫(kù)。
mvn dependency:sources // 命令jar包被下載下來
首選這種
有關(guān)flink
1、代碼中容易忽略的地址問題。
只要沒有new,就是同一個(gè)地址,也就是對(duì)同一個(gè)地址上的內(nèi)容進(jìn)行修改。
package com.atguigu.app.function;import com.alibaba.fastjson.JSONObject;public class test {public static void main(String[] args) {// {"after":"123456","tablename":"table1","db":"database","before2":"xyz","before1":"xyz"}JSONObject value=new JSONObject();value.put("db", "database") ;value.put("tablename", "table1");value.put("before1", "xyz");value.put("before2", "xyz");value.put("after", "123456");System.out.println(value.toString());// {"value":{"after":"123456","tablename":"table1","db":"database","before2":"xyz","before1":"xyz"}}JSONObject value1=new JSONObject();value1.put("value",value) ;// {"after":"123456","tablename":"table1","db":"database","before2":"xyz","before1":"xyz"}JSONObject data = value1.getJSONObject("value");String filterColumn = "db"+","+"tablename"+","+"after";test2.filterColumn(data, filterColumn);System.out.println(value1.toString());}} {"after":"123456","tablename":"table1","db":"database","before2":"xyz","before1":"xyz"} {"value":{"after":"123456","tablename":"table1","db":"database"}}用到的過濾方法
package com.atguigu.app.function;import com.alibaba.fastjson.JSONObject;import java.util.Arrays; import java.util.List;public class test2 {protected static void filterColumn(JSONObject data, String sinkColumns) {String[] fields = sinkColumns.split(",");List<String> columns = Arrays.asList(fields);data.entrySet().removeIf(next -> !columns.contains(next.getKey()));} }有關(guān)kafka
1、啟動(dòng)不起來Kafka
在日志中找到
在三臺(tái)機(jī)器上面的/opt/module/kafka/datas路徑下,分別:
/opt/module/kafka/datas下面的meta.properties的cluster.id改成iMgAX07PTsyBQnXIQZSfjA
kafka啟動(dòng)不輸出消息到控制臺(tái),輸出到指定的文件名。這里輸出到temp.log中。temp.log的路徑是執(zhí)行命令時(shí)候的當(dāng)前路徑。也就是在Kafka下面。
參考來源
2、有的節(jié)點(diǎn)啟動(dòng)不起來
打開日志(KafkaServer.out文件),然后最后一行是這樣的錯(cuò)誤。
ERROR Shutdown broker because all log dirs in /opt/module/kafka/data
have failed (kafka.log.LogManager)
注意:如果是重要數(shù)據(jù),一定要備份!!!不能只刪除。
之前可能是刪除過topic,爆出了這樣的錯(cuò)誤。
于是,試了一下,這樣做是可以的,網(wǎng)上其他的做法試了不行。
有關(guān)hbase、phoenix
1、一定要退出安全模式,在啟動(dòng)hbase之前,否則會(huì)有一些錯(cuò)誤,比如phoenix無法連接。
hdfs dfsadmin -safemode leave
2、phoenix遲遲連不上,首先檢查安全模式的有沒有關(guān),不行的話,然后試試下面的方法。
3、hbase中的rowkey設(shè)計(jì)
HBase的rowkey設(shè)計(jì)一直都是難點(diǎn)和痛點(diǎn),不合適的rowkey設(shè)計(jì)會(huì)導(dǎo)致讀寫性能、吞吐不佳等諸多問題。
hbase中的rowkey設(shè)計(jì)的參考文章
有關(guān)副本
HBase的副本機(jī)制是通過通過底層的HDFS實(shí)現(xiàn)的。所以,HBase的副本與分片是解耦的,是存儲(chǔ)計(jì)算分離的。這使得region可以在RS之間靈活的移動(dòng),而不需要進(jìn)行數(shù)據(jù)遷移,這賦予了HBase秒級(jí)擴(kuò)容的能力和極大的靈活性。好的分布是怎么樣的?
對(duì)于單個(gè)表而言,一個(gè)“好”的數(shù)據(jù)分布,應(yīng)該是:-- 每個(gè)region的數(shù)據(jù)量大小相近,請(qǐng)求量(吞吐)接近,每臺(tái)機(jī)器調(diào)度的region數(shù)量大致相同。這樣,這張表的數(shù)據(jù)和訪問能夠均勻的分布在整個(gè)集群中,從而得到最好的資源利用率和服務(wù)質(zhì)量,即達(dá)到負(fù)載均衡。當(dāng)集群進(jìn)行擴(kuò)容、縮容時(shí),我們希望這種“均衡”能夠自動(dòng)保持。如果數(shù)據(jù)分布未能實(shí)現(xiàn)負(fù)載均衡,則 ---負(fù)載較高的機(jī)器--- 很容易稱為整個(gè)系統(tǒng)的瓶頸,這臺(tái)機(jī)器的響應(yīng)慢,可能導(dǎo)致客戶端的大部分線程都在等待這臺(tái)機(jī)器返回,從而影響整體吞吐。所以,負(fù)載均衡是region劃分和調(diào)度的重要目標(biāo)。負(fù)載均衡問題:
數(shù)據(jù)的邏輯分布:即region劃分/分布,是rowkey到region的映射問題 數(shù)據(jù)的物理分布:即region在RS上的調(diào)度問題 訪問的分布:即系統(tǒng)吞吐(請(qǐng)求)在各個(gè)RS上的分布問題,涉及數(shù)據(jù)量和訪問量之間的關(guān)系,訪問熱點(diǎn)等。HBase能夠?qū)崿F(xiàn)靈活調(diào)度、秒級(jí)擴(kuò)容的關(guān)鍵
可見,一行數(shù)據(jù)的分布(找到一行數(shù)據(jù)所在的RS),存在2個(gè)層級(jí)的路由:一是rowkey到region的路由,二是region到RS的路由。這一點(diǎn)是HBase能夠?qū)崿F(xiàn)靈活調(diào)度、秒級(jí)擴(kuò)容的關(guān)鍵。邏輯分布 – 基于rowkey范圍的region劃分
就是: 一張表如何劃分成多個(gè)region region劃分的粒度是行,region就是這個(gè)表中多個(gè)連續(xù)的行構(gòu)成的集合。行的唯一標(biāo)識(shí)符是rowkey,所以,可以將region理解為一段連續(xù)分布的rowkey的集合。所以,稱這種方式為基于rowkey范圍的劃分。一個(gè)region負(fù)責(zé)的rowkey范圍是一個(gè)左閉右開區(qū)間,所以,后一個(gè)region的start key是前一個(gè)region的end key。注意,第一個(gè)region是沒有start key的,最后一個(gè)region是沒有end key的。這樣,這個(gè)表的所有region加在一起就能覆蓋任意的rowkey值域。 一般來說,region的生成有3種方式:建表時(shí)進(jìn)行預(yù)分區(qū):通過對(duì)rowkey進(jìn)行預(yù)估,預(yù)先劃分好region region分裂:手工分裂,或達(dá)到一定條件時(shí)自動(dòng)分裂(如region大小超過一個(gè)閾值) region合并:手工合并 所以,為了使表從一開始就具備良好的吞吐和性能,實(shí)際生產(chǎn)環(huán)境中建表通常都需要進(jìn)行預(yù)分區(qū)。但也有一些例外,比如無法預(yù)先對(duì)rowkey范圍進(jìn)行預(yù)估,或者,不容易對(duì)rowkey范圍進(jìn)行均勻的拆分,此時(shí),也可以創(chuàng)建只有一個(gè)region的表,由系統(tǒng)自己分裂,從而逐漸形成一個(gè)“均勻的”region分布。總結(jié)
- 上一篇: 德邦物流年营收313亿:扣非后亏损2亿
- 下一篇: 币圈一声雷:李笑来教你割韭菜内部录音52