From 5249b0476ebc6c403d2fd8e0b12d4bd3d7c4a251 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BD=97=E7=A5=A5?= <1366971433@qq.com> Date: Mon, 1 Jun 2020 14:35:36 +0800 Subject: [PATCH] add pictures --- ...0_\347\232\204\344\275\277\347\224\250.md" | 3 +++ ...0_\347\232\204\344\275\277\347\224\250.md" | 3 +++ "notes/Azkaban\347\256\200\344\273\213.md" | 3 +++ notes/Flink_Data_Sink.md | 3 +++ notes/Flink_Data_Source.md | 3 +++ notes/Flink_Data_Transformation.md | 3 +++ notes/Flink_Windows.md | 3 +++ ...57\345\242\203\346\220\255\345\273\272.md" | 3 +++ ...02\345\277\265\347\273\274\350\277\260.md" | 3 +++ ...45\347\202\271\346\234\272\345\210\266.md" | 3 +++ "notes/Flume\346\225\264\345\220\210Kafka.md" | 3 +++ ...72\346\234\254\344\275\277\347\224\250.md" | 3 +++ notes/HDFS-Java-API.md | 3 +++ ...7\224\250Shell\345\221\275\344\273\244.md" | 3 +++ notes/Hadoop-HDFS.md | 3 +++ notes/Hadoop-MapReduce.md | 3 +++ notes/Hadoop-YARN.md | 3 +++ notes/Hbase_Java_API.md | 3 +++ notes/Hbase_Shell.md | 3 +++ ...06\345\231\250\350\257\246\350\247\243.md" | 3 +++ ...76\344\270\216\345\244\207\344\273\275.md" | 3 +++ ...70\255\351\227\264\345\261\202_Phoenix.md" | 3 +++ "notes/Hbase\347\256\200\344\273\213.md" | 3 +++ ...60\346\215\256\347\273\223\346\236\204.md" | 3 +++ ...44\345\231\250\350\257\246\350\247\243.md" | 3 +++ ...72\346\234\254\344\275\277\347\224\250.md" | 3 +++ ...14\345\210\206\346\241\266\350\241\250.md" | 3 +++ ...347\224\250DDL\346\223\215\344\275\234.md" | 3 +++ ...347\224\250DML\346\223\215\344\275\234.md" | 3 +++ ...45\350\257\242\350\257\246\350\247\243.md" | 3 +++ ...70\345\277\203\346\246\202\345\277\265.md" | 3 +++ ...76\345\222\214\347\264\242\345\274\225.md" | 3 +++ ...71\350\200\205\350\257\246\350\247\243.md" | 3 +++ ...57\346\234\254\346\234\272\345\210\266.md" | 3 +++ ...47\350\200\205\350\257\246\350\247\243.md" | 3 +++ "notes/Kafka\347\256\200\344\273\213.md" | 3 +++ ...60\345\222\214\351\227\255\345\214\205.md" | 3 +++ ...27\350\241\250\345\222\214\351\233\206.md" | 3 +++ ...14\350\277\220\347\256\227\347\254\246.md" | 3 +++ "notes/Scala\346\225\260\347\273\204.md" | 3 +++ ...04\345\222\214\345\205\203\347\273\204.md" | 3 +++ ...41\345\274\217\345\214\271\351\205\215.md" | 3 +++ ...47\345\210\266\350\257\255\345\217\245.md" | 3 +++ ...57\345\242\203\351\205\215\347\275\256.md" | 3 +++ ...73\345\222\214\345\257\271\350\261\241.md" | 3 +++ ...73\345\236\213\345\217\202\346\225\260.md" | 3 +++ ...77\345\222\214\347\211\271\350\264\250.md" | 3 +++ ...20\345\274\217\345\217\202\346\225\260.md" | 3 +++ ...06\345\220\210\347\261\273\345\236\213.md" | 3 +++ ...2\214DataFrame\347\256\200\344\273\213.md" | 3 +++ ...50\346\225\260\346\215\256\346\272\220.md" | 3 +++ ...32\345\220\210\345\207\275\346\225\260.md" | 3 +++ ...24\347\273\223\346\223\215\344\275\234.md" | 3 +++ notes/Spark_RDD.md | 3 +++ ...16\346\265\201\345\244\204\347\220\206.md" | 3 +++ ...72\346\234\254\346\223\215\344\275\234.md" | 3 +++ ...Streaming\346\225\264\345\220\210Flume.md" | 3 +++ ...Streaming\346\225\264\345\220\210Kafka.md" | 3 +++ ...72\346\234\254\344\275\277\347\224\250.md" | 3 +++ ...\222\214Action\347\256\227\345\255\220.md" | 3 +++ "notes/Spark\347\256\200\344\273\213.md" | 3 +++ ...77\346\222\255\345\217\230\351\207\217.md" | 3 +++ ...34\344\270\232\346\217\220\344\272\244.md" | 3 +++ ...ybtais+Phoenix\346\225\264\345\220\210.md" | 3 +++ ...72\346\234\254\344\275\277\347\224\250.md" | 3 +++ ...13\344\270\216\345\256\211\350\243\205.md" | 3 +++ ...71\346\257\224\345\210\206\346\236\220.md" | 3 +++ ...04\347\220\206\347\256\200\344\273\213.md" | 3 +++ ...02\345\277\265\350\257\246\350\247\243.md" | 3 +++ ...41\345\236\213\350\257\246\350\247\243.md" | 3 +++ ...3\206\346\210\220HBase\345\222\214HDFS.md" | 3 +++ "notes/Storm\351\233\206\346\210\220Kakfa.md" | 3 +++ ...6\210\220Redis\350\257\246\350\247\243.md" | 3 +++ ...03\351\231\220\346\216\247\345\210\266.md" | 3 +++ ...256\242\346\210\267\347\253\257Curator.md" | 3 +++ ...7\224\250Shell\345\221\275\344\273\244.md" | 3 +++ ...70\345\277\203\346\246\202\345\277\265.md" | 3 +++ ...21\345\217\212\351\203\250\347\275\262.md" | 3 +++ .../installation/Flink_Standalone_Cluster.md | 3 +++ ...57\345\242\203\346\220\255\345\273\272.md" | 3 +++ ...57\345\242\203\346\220\255\345\273\272.md" | 3 +++ ...57\345\242\203\346\220\255\345\273\272.md" | 3 +++ ...57\345\242\203\346\220\255\345\273\272.md" | 3 +++ ...me\347\232\204\345\256\211\350\243\205.md" | 3 +++ ...344\270\213JDK\345\256\211\350\243\205.md" | 3 +++ ...\270\213Python\345\256\211\350\243\205.md" | 3 +++ ...11\350\243\205\351\203\250\347\275\262.md" | 3 +++ ...57\345\242\203\346\220\255\345\273\272.md" | 3 +++ ...57\345\242\203\346\220\255\345\273\272.md" | 3 +++ ...57\345\242\203\346\220\255\345\273\272.md" | 3 +++ ...57\345\242\203\346\220\255\345\273\272.md" | 3 +++ ...57\345\242\203\346\220\255\345\273\272.md" | 3 +++ ...57\347\224\250\351\233\206\347\276\244.md" | 3 +++ ...57\347\224\250\351\233\206\347\276\244.md" | 3 +++ ...\345\244\232IP\351\205\215\347\275\256.md" | 3 +++ ...46\344\271\240\350\267\257\347\272\277.md" | 3 +++ ...11\350\243\205\346\214\207\345\215\227.md" | 3 +++ ...23\345\214\205\346\226\271\345\274\217.md" | 3 +++ ...35\347\273\264\345\257\274\345\233\276.md" | 3 +++ ...45\345\205\267\346\216\250\350\215\220.md" | 3 +++ pictures/weixin-desc.png | Bin 45299 -> 34582 bytes 101 files changed, 300 insertions(+) diff --git "a/notes/Azkaban_Flow_1.0_\347\232\204\344\275\277\347\224\250.md" "b/notes/Azkaban_Flow_1.0_\347\232\204\344\275\277\347\224\250.md" index 0f1b05bc..a4b61f40 100644 --- "a/notes/Azkaban_Flow_1.0_\347\232\204\344\275\277\347\224\250.md" +++ "b/notes/Azkaban_Flow_1.0_\347\232\204\344\275\277\347\224\250.md" @@ -223,3 +223,6 @@ memCheck.enabled=false + + +
\ No newline at end of file diff --git "a/notes/Azkaban_Flow_2.0_\347\232\204\344\275\277\347\224\250.md" "b/notes/Azkaban_Flow_2.0_\347\232\204\344\275\277\347\224\250.md" index ff303387..51e47194 100644 --- "a/notes/Azkaban_Flow_2.0_\347\232\204\344\275\277\347\224\250.md" +++ "b/notes/Azkaban_Flow_2.0_\347\232\204\344\275\277\347\224\250.md" @@ -294,3 +294,6 @@ nodes: 1. [Azkaban Flow 2.0 Design](https://github.com/azkaban/azkaban/wiki/Azkaban-Flow-2.0-Design) 2. [Getting started with Azkaban Flow 2.0](https://github.com/azkaban/azkaban/wiki/Getting-started-with-Azkaban-Flow-2.0) + + +
\ No newline at end of file diff --git "a/notes/Azkaban\347\256\200\344\273\213.md" "b/notes/Azkaban\347\256\200\344\273\213.md" index 668fd693..625fe3d3 100644 --- "a/notes/Azkaban\347\256\200\344\273\213.md" +++ "b/notes/Azkaban\347\256\200\344\273\213.md" @@ -74,3 +74,6 @@ Azkaban 和 Oozie 都是目前使用最为广泛的工作流调度程序,其 + **配置方面**:Azkaban Flow 1.0 基于 Properties 文件来定义工作流,这个时候的限制可能会多一点。但是在 Flow 2.0 就支持了 YARM。YARM 语法更加灵活简单,著名的微服务框架 Spring Boot 就采用的 YAML 代替了繁重的 XML。 + + +
\ No newline at end of file diff --git a/notes/Flink_Data_Sink.md b/notes/Flink_Data_Sink.md index f77559c0..c1ee9900 100644 --- a/notes/Flink_Data_Sink.md +++ b/notes/Flink_Data_Sink.md @@ -266,3 +266,6 @@ env.execute(); 2. Streaming Connectors:https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/connectors/index.html 3. Apache Kafka Connector: https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/connectors/kafka.html + + +
\ No newline at end of file diff --git a/notes/Flink_Data_Source.md b/notes/Flink_Data_Source.md index a8d065fb..ec1bb86a 100644 --- a/notes/Flink_Data_Source.md +++ b/notes/Flink_Data_Source.md @@ -282,3 +282,6 @@ bin/kafka-console-producer.sh --broker-list hadoop001:9092 --topic flink-stream- 1. data-sources:https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/datastream_api.html#data-sources 2. Streaming Connectors:https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/connectors/index.html 3. Apache Kafka Connector: https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/connectors/kafka.html + + +
\ No newline at end of file diff --git a/notes/Flink_Data_Transformation.md b/notes/Flink_Data_Transformation.md index 3f5a1c80..94781620 100644 --- a/notes/Flink_Data_Transformation.md +++ b/notes/Flink_Data_Transformation.md @@ -309,3 +309,6 @@ someStream.filter(...).slotSharingGroup("slotSharingGroupName"); ## 参考资料 Flink Operators: https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/stream/operators/ + + +
\ No newline at end of file diff --git a/notes/Flink_Windows.md b/notes/Flink_Windows.md index 816a6ed1..7615f7fc 100644 --- a/notes/Flink_Windows.md +++ b/notes/Flink_Windows.md @@ -126,3 +126,6 @@ public WindowedStream countWindow(long size, long slide) { ## 参考资料 Flink Windows: https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/stream/operators/windows.html + + +
\ No newline at end of file diff --git "a/notes/Flink\345\274\200\345\217\221\347\216\257\345\242\203\346\220\255\345\273\272.md" "b/notes/Flink\345\274\200\345\217\221\347\216\257\345\242\203\346\220\255\345\273\272.md" index a933e048..1b319cff 100644 --- "a/notes/Flink\345\274\200\345\217\221\347\216\257\345\242\203\346\220\255\345\273\272.md" +++ "b/notes/Flink\345\274\200\345\217\221\347\216\257\345\242\203\346\220\255\345\273\272.md" @@ -302,3 +302,6 @@ Flink 大多数版本都提供有 Scala 2.11 和 Scala 2.12 两个版本的安 + + +
\ No newline at end of file diff --git "a/notes/Flink\346\240\270\345\277\203\346\246\202\345\277\265\347\273\274\350\277\260.md" "b/notes/Flink\346\240\270\345\277\203\346\246\202\345\277\265\347\273\274\350\277\260.md" index 397ecc73..c4ae5a64 100644 --- "a/notes/Flink\346\240\270\345\277\203\346\246\202\345\277\265\347\273\274\350\277\260.md" +++ "b/notes/Flink\346\240\270\345\277\203\346\246\202\345\277\265\347\273\274\350\277\260.md" @@ -171,3 +171,6 @@ Flink 的所有组件都基于 Actor System 来进行通讯。Actor system是多 + + +
\ No newline at end of file diff --git "a/notes/Flink\347\212\266\346\200\201\347\256\241\347\220\206\344\270\216\346\243\200\346\237\245\347\202\271\346\234\272\345\210\266.md" "b/notes/Flink\347\212\266\346\200\201\347\256\241\347\220\206\344\270\216\346\243\200\346\237\245\347\202\271\346\234\272\345\210\266.md" index e5d3da2a..d678daa4 100644 --- "a/notes/Flink\347\212\266\346\200\201\347\256\241\347\220\206\344\270\216\346\243\200\346\237\245\347\202\271\346\234\272\345\210\266.md" +++ "b/notes/Flink\347\212\266\346\200\201\347\256\241\347\220\206\344\270\216\346\243\200\346\237\245\347\202\271\346\234\272\345\210\266.md" @@ -368,3 +368,6 @@ state.checkpoints.dir: hdfs://namenode:40010/flink/checkpoints + + +
\ No newline at end of file diff --git "a/notes/Flume\346\225\264\345\220\210Kafka.md" "b/notes/Flume\346\225\264\345\220\210Kafka.md" index 9cc34d11..c1f80ddd 100644 --- "a/notes/Flume\346\225\264\345\220\210Kafka.md" +++ "b/notes/Flume\346\225\264\345\220\210Kafka.md" @@ -114,3 +114,6 @@ flume-ng agent \ 可以看到 `flume-kafka` 主题的消费端已经收到了对应的消息:
+ + +
\ No newline at end of file diff --git "a/notes/Flume\347\256\200\344\273\213\345\217\212\345\237\272\346\234\254\344\275\277\347\224\250.md" "b/notes/Flume\347\256\200\344\273\213\345\217\212\345\237\272\346\234\254\344\275\277\347\224\250.md" index f5f752ec..f98c8049 100644 --- "a/notes/Flume\347\256\200\344\273\213\345\217\212\345\237\272\346\234\254\344\275\277\347\224\250.md" +++ "b/notes/Flume\347\256\200\344\273\213\345\217\212\345\237\272\346\234\254\344\275\277\347\224\250.md" @@ -373,3 +373,6 @@ flume-ng agent \ 可以看到已经从 8888 端口监听到内容,并成功输出到控制台:
+ + +
\ No newline at end of file diff --git a/notes/HDFS-Java-API.md b/notes/HDFS-Java-API.md index f5ec70df..5d28f1e2 100644 --- a/notes/HDFS-Java-API.md +++ b/notes/HDFS-Java-API.md @@ -386,3 +386,6 @@ public void getFileBlockLocations() throws Exception {
**以上所有测试用例下载地址**:[HDFS Java API](https://github.com/heibaiying/BigData-Notes/tree/master/code/Hadoop/hdfs-java-api) + + +
\ No newline at end of file diff --git "a/notes/HDFS\345\270\270\347\224\250Shell\345\221\275\344\273\244.md" "b/notes/HDFS\345\270\270\347\224\250Shell\345\221\275\344\273\244.md" index 933eceb5..d6cf7871 100644 --- "a/notes/HDFS\345\270\270\347\224\250Shell\345\221\275\344\273\244.md" +++ "b/notes/HDFS\345\270\270\347\224\250Shell\345\221\275\344\273\244.md" @@ -139,3 +139,6 @@ hadoop fs -test - [defsz] URI # 示例 hadoop fs -test -e filename ``` + + +
\ No newline at end of file diff --git a/notes/Hadoop-HDFS.md b/notes/Hadoop-HDFS.md index 5e88e955..cfa57b0b 100644 --- a/notes/Hadoop-HDFS.md +++ b/notes/Hadoop-HDFS.md @@ -174,3 +174,6 @@ HDFS 具有良好的跨平台移植性,这使得其他大数据计算框架都 2. Tom White . hadoop 权威指南 [M] . 清华大学出版社 . 2017. 3. [翻译经典 HDFS 原理讲解漫画](https://blog.csdn.net/hudiefenmu/article/details/37655491) + + +
\ No newline at end of file diff --git a/notes/Hadoop-MapReduce.md b/notes/Hadoop-MapReduce.md index 616bc9e4..2163a09a 100644 --- a/notes/Hadoop-MapReduce.md +++ b/notes/Hadoop-MapReduce.md @@ -382,3 +382,6 @@ job.setNumReduceTasks(WordCountDataUtils.WORD_LIST.size()); + + +
\ No newline at end of file diff --git a/notes/Hadoop-YARN.md b/notes/Hadoop-YARN.md index cd7cb903..10a87558 100644 --- a/notes/Hadoop-YARN.md +++ b/notes/Hadoop-YARN.md @@ -126,3 +126,6 @@ YARN 中的任务将其进度和状态 (包括 counter) 返回给应用管理器 + + +
\ No newline at end of file diff --git a/notes/Hbase_Java_API.md b/notes/Hbase_Java_API.md index c75522e4..66dfef45 100644 --- a/notes/Hbase_Java_API.md +++ b/notes/Hbase_Java_API.md @@ -759,3 +759,6 @@ connection = ConnectionFactory.createConnection(config); 1. [连接 HBase 的正确姿势](https://yq.aliyun.com/articles/581702?spm=a2c4e.11157919.spm-cont-list.1.146c27aeFxoMsN%20%E8%BF%9E%E6%8E%A5HBase%E7%9A%84%E6%AD%A3%E7%A1%AE%E5%A7%BF%E5%8A%BF) 2. [Apache HBase ™ Reference Guide](http://hbase.apache.org/book.htm) + + +
\ No newline at end of file diff --git a/notes/Hbase_Shell.md b/notes/Hbase_Shell.md index d9417f25..6404c31e 100644 --- a/notes/Hbase_Shell.md +++ b/notes/Hbase_Shell.md @@ -277,3 +277,6 @@ scan 'Student', FILTER=>"PrefixFilter('wr')" + + +
\ No newline at end of file diff --git "a/notes/Hbase\345\215\217\345\244\204\347\220\206\345\231\250\350\257\246\350\247\243.md" "b/notes/Hbase\345\215\217\345\244\204\347\220\206\345\231\250\350\257\246\350\247\243.md" index eb55627a..50bdae70 100644 --- "a/notes/Hbase\345\215\217\345\244\204\347\220\206\345\231\250\350\257\246\350\247\243.md" +++ "b/notes/Hbase\345\215\217\345\244\204\347\220\206\345\231\250\350\257\246\350\247\243.md" @@ -488,3 +488,6 @@ hbase > get 'magazine','rowkey1','article:content' 1. [Apache HBase Coprocessors](http://hbase.apache.org/book.html#cp) 2. [Apache HBase Coprocessor Introduction](https://blogs.apache.org/hbase/entry/coprocessor_introduction) 3. [HBase 高階知識](https://www.itread01.com/content/1546245908.html) + + +
\ No newline at end of file diff --git "a/notes/Hbase\345\256\271\347\201\276\344\270\216\345\244\207\344\273\275.md" "b/notes/Hbase\345\256\271\347\201\276\344\270\216\345\244\207\344\273\275.md" index 2a3d150c..bdebc1ef 100644 --- "a/notes/Hbase\345\256\271\347\201\276\344\270\216\345\244\207\344\273\275.md" +++ "b/notes/Hbase\345\256\271\347\201\276\344\270\216\345\244\207\344\273\275.md" @@ -194,3 +194,6 @@ hbase> restore_snapshot '快照名' 1. [Online Apache HBase Backups with CopyTable](https://blog.cloudera.com/blog/2012/06/online-hbase-backups-with-copytable-2/) 2. [Apache HBase ™ Reference Guide](http://hbase.apache.org/book.htm) + + +
\ No newline at end of file diff --git "a/notes/Hbase\347\232\204SQL\344\270\255\351\227\264\345\261\202_Phoenix.md" "b/notes/Hbase\347\232\204SQL\344\270\255\351\227\264\345\261\202_Phoenix.md" index 9c4f004a..7b64e3b5 100644 --- "a/notes/Hbase\347\232\204SQL\344\270\255\351\227\264\345\261\202_Phoenix.md" +++ "b/notes/Hbase\347\232\204SQL\344\270\255\351\227\264\345\261\202_Phoenix.md" @@ -239,3 +239,6 @@ public class PhoenixJavaApi { # 参考资料 1. http://phoenix.apache.org/ + + +
\ No newline at end of file diff --git "a/notes/Hbase\347\256\200\344\273\213.md" "b/notes/Hbase\347\256\200\344\273\213.md" index 9a2f4720..b406d922 100644 --- "a/notes/Hbase\347\256\200\344\273\213.md" +++ "b/notes/Hbase\347\256\200\344\273\213.md" @@ -86,3 +86,6 @@ Hbase 的表具有以下特点: + + +
\ No newline at end of file diff --git "a/notes/Hbase\347\263\273\347\273\237\346\236\266\346\236\204\345\217\212\346\225\260\346\215\256\347\273\223\346\236\204.md" "b/notes/Hbase\347\263\273\347\273\237\346\236\266\346\236\204\345\217\212\346\225\260\346\215\256\347\273\223\346\236\204.md" index eb66f4f7..3d61164e 100644 --- "a/notes/Hbase\347\263\273\347\273\237\346\236\266\346\236\204\345\217\212\346\225\260\346\215\256\347\273\223\346\236\204.md" +++ "b/notes/Hbase\347\263\273\347\273\237\346\236\266\346\236\204\345\217\212\346\225\260\346\215\256\347\273\223\346\236\204.md" @@ -220,3 +220,6 @@ HBase 系统遵循 Master/Salve 架构,由三种不同类型的组件组成: + + +
\ No newline at end of file diff --git "a/notes/Hbase\350\277\207\346\273\244\345\231\250\350\257\246\350\247\243.md" "b/notes/Hbase\350\277\207\346\273\244\345\231\250\350\257\246\350\247\243.md" index 69188cb5..614d04e6 100644 --- "a/notes/Hbase\350\277\207\346\273\244\345\231\250\350\257\246\350\247\243.md" +++ "b/notes/Hbase\350\277\207\346\273\244\345\231\250\350\257\246\350\247\243.md" @@ -443,3 +443,6 @@ scan.setFilter(filterList); ## 参考资料 [HBase: The Definitive Guide _> Chapter 4. Client API: Advanced Features](https://www.oreilly.com/library/view/hbase-the-definitive/9781449314682/ch04.html) + + +
\ No newline at end of file diff --git "a/notes/HiveCLI\345\222\214Beeline\345\221\275\344\273\244\350\241\214\347\232\204\345\237\272\346\234\254\344\275\277\347\224\250.md" "b/notes/HiveCLI\345\222\214Beeline\345\221\275\344\273\244\350\241\214\347\232\204\345\237\272\346\234\254\344\275\277\347\224\250.md" index cdbd8d7f..38ad9925 100644 --- "a/notes/HiveCLI\345\222\214Beeline\345\221\275\344\273\244\350\241\214\347\232\204\345\237\272\346\234\254\344\275\277\347\224\250.md" +++ "b/notes/HiveCLI\345\222\214Beeline\345\221\275\344\273\244\350\241\214\347\232\204\345\237\272\346\234\254\344\275\277\347\224\250.md" @@ -277,3 +277,6 @@ Hive 可选的配置参数非常多,在用到时查阅官方文档即可[Admin 1. [HiveServer2 Clients](https://cwiki.apache.org/confluence/display/Hive/HiveServer2+Clients) 2. [LanguageManual Cli](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Cli) 3. [AdminManual Configuration](https://cwiki.apache.org/confluence/display/Hive/AdminManual+Configuration) + + +
\ No newline at end of file diff --git "a/notes/Hive\345\210\206\345\214\272\350\241\250\345\222\214\345\210\206\346\241\266\350\241\250.md" "b/notes/Hive\345\210\206\345\214\272\350\241\250\345\222\214\345\210\206\346\241\266\350\241\250.md" index d5525755..e1d79247 100644 --- "a/notes/Hive\345\210\206\345\214\272\350\241\250\345\222\214\345\210\206\346\241\266\350\241\250.md" +++ "b/notes/Hive\345\210\206\345\214\272\350\241\250\345\222\214\345\210\206\346\241\266\350\241\250.md" @@ -166,3 +166,6 @@ SELECT * FROM page_view WHERE dt='2009-02-25'; ## 参考资料 1. [LanguageManual DDL BucketedTables](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL+BucketedTables) + + +
\ No newline at end of file diff --git "a/notes/Hive\345\270\270\347\224\250DDL\346\223\215\344\275\234.md" "b/notes/Hive\345\270\270\347\224\250DDL\346\223\215\344\275\234.md" index dc8f387d..299ae809 100644 --- "a/notes/Hive\345\270\270\347\224\250DDL\346\223\215\344\275\234.md" +++ "b/notes/Hive\345\270\270\347\224\250DDL\346\223\215\344\275\234.md" @@ -448,3 +448,6 @@ SHOW CREATE TABLE ([db_name.]table_name|view_name); ## 参考资料 [LanguageManual DDL](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL) + + +
\ No newline at end of file diff --git "a/notes/Hive\345\270\270\347\224\250DML\346\223\215\344\275\234.md" "b/notes/Hive\345\270\270\347\224\250DML\346\223\215\344\275\234.md" index 6e633fa0..28af9be0 100644 --- "a/notes/Hive\345\270\270\347\224\250DML\346\223\215\344\275\234.md" +++ "b/notes/Hive\345\270\270\347\224\250DML\346\223\215\344\275\234.md" @@ -327,3 +327,6 @@ SELECT * FROM emp_ptn; 1. [Hive Transactions](https://cwiki.apache.org/confluence/display/Hive/Hive+Transactions) 2. [Hive Data Manipulation Language](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML) + + +
\ No newline at end of file diff --git "a/notes/Hive\346\225\260\346\215\256\346\237\245\350\257\242\350\257\246\350\247\243.md" "b/notes/Hive\346\225\260\346\215\256\346\237\245\350\257\242\350\257\246\350\247\243.md" index 33d7838c..12ca4cd5 100644 --- "a/notes/Hive\346\225\260\346\215\256\346\237\245\350\257\242\350\257\246\350\247\243.md" +++ "b/notes/Hive\346\225\260\346\215\256\346\237\245\350\257\242\350\257\246\350\247\243.md" @@ -392,3 +392,6 @@ SET hive.exec.mode.local.auto=true; 2. [LanguageManual Joins](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Joins) 3. [LanguageManual GroupBy](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+GroupBy) 4. [LanguageManual SortBy](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+SortBy) + + +
\ No newline at end of file diff --git "a/notes/Hive\347\256\200\344\273\213\345\217\212\346\240\270\345\277\203\346\246\202\345\277\265.md" "b/notes/Hive\347\256\200\344\273\213\345\217\212\346\240\270\345\277\203\346\246\202\345\277\265.md" index 284159ba..50915c70 100644 --- "a/notes/Hive\347\256\200\344\273\213\345\217\212\346\240\270\345\277\203\346\246\202\345\277\265.md" +++ "b/notes/Hive\347\256\200\344\273\213\345\217\212\346\240\270\345\277\203\346\246\202\345\277\265.md" @@ -200,3 +200,6 @@ CREATE TABLE page_view(viewTime INT, userid BIGINT) 3. [LanguageManual DDL](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL) 4. [LanguageManual Types](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types) 5. [Managed vs. External Tables](https://cwiki.apache.org/confluence/display/Hive/Managed+vs.+External+Tables) + + +
\ No newline at end of file diff --git "a/notes/Hive\350\247\206\345\233\276\345\222\214\347\264\242\345\274\225.md" "b/notes/Hive\350\247\206\345\233\276\345\222\214\347\264\242\345\274\225.md" index 89aa9be6..a269c417 100644 --- "a/notes/Hive\350\247\206\345\233\276\345\222\214\347\264\242\345\274\225.md" +++ "b/notes/Hive\350\247\206\345\233\276\345\222\214\347\264\242\345\274\225.md" @@ -234,3 +234,6 @@ SHOW INDEX ON emp; 2. [Materialized views](https://cwiki.apache.org/confluence/display/Hive/Materialized+views) 3. [Hive 索引](http://lxw1234.com/archives/2015/05/207.htm) 4. [Overview of Hive Indexes](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Indexing) + + +
\ No newline at end of file diff --git "a/notes/Kafka\346\266\210\350\264\271\350\200\205\350\257\246\350\247\243.md" "b/notes/Kafka\346\266\210\350\264\271\350\200\205\350\257\246\350\247\243.md" index 8c8b2340..0642de1a 100644 --- "a/notes/Kafka\346\266\210\350\264\271\350\200\205\350\257\246\350\247\243.md" +++ "b/notes/Kafka\346\266\210\350\264\271\350\200\205\350\257\246\350\247\243.md" @@ -390,3 +390,6 @@ broker 返回给消费者数据的等待时间,默认是 500ms。 1. Neha Narkhede, Gwen Shapira ,Todd Palino(著) , 薛命灯 (译) . Kafka 权威指南 . 人民邮电出版社 . 2017-12-26 + + +
\ No newline at end of file diff --git "a/notes/Kafka\346\267\261\345\205\245\347\220\206\350\247\243\345\210\206\345\214\272\345\211\257\346\234\254\346\234\272\345\210\266.md" "b/notes/Kafka\346\267\261\345\205\245\347\220\206\350\247\243\345\210\206\345\214\272\345\211\257\346\234\254\346\234\272\345\210\266.md" index 20a5499a..2b7c92fe 100644 --- "a/notes/Kafka\346\267\261\345\205\245\347\220\206\350\247\243\345\210\206\345\214\272\345\211\257\346\234\254\346\234\272\345\210\266.md" +++ "b/notes/Kafka\346\267\261\345\205\245\347\220\206\350\247\243\345\210\206\345\214\272\345\211\257\346\234\254\346\234\272\345\210\266.md" @@ -159,3 +159,6 @@ Exception: Replication factor: 3 larger than available brokers: 1. 1. Neha Narkhede, Gwen Shapira ,Todd Palino(著) , 薛命灯 (译) . Kafka 权威指南 . 人民邮电出版社 . 2017-12-26 2. [Kafka 高性能架构之道](http://www.jasongj.com/kafka/high_throughput/) + + +
\ No newline at end of file diff --git "a/notes/Kafka\347\224\237\344\272\247\350\200\205\350\257\246\350\247\243.md" "b/notes/Kafka\347\224\237\344\272\247\350\200\205\350\257\246\350\247\243.md" index 862db023..177a3c60 100644 --- "a/notes/Kafka\347\224\237\344\272\247\350\200\205\350\257\246\350\247\243.md" +++ "b/notes/Kafka\347\224\237\344\272\247\350\200\205\350\257\246\350\247\243.md" @@ -362,3 +362,6 @@ acks 参数指定了必须要有多少个分区副本收到消息,生产者才 ## 参考资料 1. Neha Narkhede, Gwen Shapira ,Todd Palino(著) , 薛命灯 (译) . Kafka 权威指南 . 人民邮电出版社 . 2017-12-26 + + +
\ No newline at end of file diff --git "a/notes/Kafka\347\256\200\344\273\213.md" "b/notes/Kafka\347\256\200\344\273\213.md" index 802e7912..81808c44 100644 --- "a/notes/Kafka\347\256\200\344\273\213.md" +++ "b/notes/Kafka\347\256\200\344\273\213.md" @@ -65,3 +65,6 @@ Broker 是集群 (Cluster) 的组成部分。每一个集群都会选举出一 ## 参考资料 Neha Narkhede, Gwen Shapira ,Todd Palino(著) , 薛命灯 (译) . Kafka 权威指南 . 人民邮电出版社 . 2017-12-26 + + +
\ No newline at end of file diff --git "a/notes/Scala\345\207\275\346\225\260\345\222\214\351\227\255\345\214\205.md" "b/notes/Scala\345\207\275\346\225\260\345\222\214\351\227\255\345\214\205.md" index 482255cf..2c1f59b3 100644 --- "a/notes/Scala\345\207\275\346\225\260\345\222\214\351\227\255\345\214\205.md" +++ "b/notes/Scala\345\207\275\346\225\260\345\222\214\351\227\255\345\214\205.md" @@ -310,3 +310,6 @@ object ScalaApp extends App { + + +
\ No newline at end of file diff --git "a/notes/Scala\345\210\227\350\241\250\345\222\214\351\233\206.md" "b/notes/Scala\345\210\227\350\241\250\345\222\214\351\233\206.md" index 208d42ea..3da271f4 100644 --- "a/notes/Scala\345\210\227\350\241\250\345\222\214\351\233\206.md" +++ "b/notes/Scala\345\210\227\350\241\250\345\222\214\351\233\206.md" @@ -540,3 +540,6 @@ object ScalaApp extends App { 1. Martin Odersky . Scala 编程 (第 3 版)[M] . 电子工业出版社 . 2018-1-1 2. 凯.S.霍斯特曼 . 快学 Scala(第 2 版)[M] . 电子工业出版社 . 2017-7 + + +
\ No newline at end of file diff --git "a/notes/Scala\345\237\272\346\234\254\346\225\260\346\215\256\347\261\273\345\236\213\345\222\214\350\277\220\347\256\227\347\254\246.md" "b/notes/Scala\345\237\272\346\234\254\346\225\260\346\215\256\347\261\273\345\236\213\345\222\214\350\277\220\347\256\227\347\254\246.md" index d54fb462..308d5e03 100644 --- "a/notes/Scala\345\237\272\346\234\254\346\225\260\346\215\256\347\261\273\345\236\213\345\222\214\350\277\220\347\256\227\347\254\246.md" +++ "b/notes/Scala\345\237\272\346\234\254\346\225\260\346\215\256\347\261\273\345\236\213\345\222\214\350\277\220\347\256\227\347\254\246.md" @@ -272,3 +272,6 @@ res6: Boolean = true ## 参考资料 1. Martin Odersky . Scala 编程 (第 3 版)[M] . 电子工业出版社 . 2018-1-1 + + +
\ No newline at end of file diff --git "a/notes/Scala\346\225\260\347\273\204.md" "b/notes/Scala\346\225\260\347\273\204.md" index d7215a89..d5762439 100644 --- "a/notes/Scala\346\225\260\347\273\204.md" +++ "b/notes/Scala\346\225\260\347\273\204.md" @@ -191,3 +191,6 @@ object ScalaApp extends App { 1. Martin Odersky . Scala 编程 (第 3 版)[M] . 电子工业出版社 . 2018-1-1 2. 凯.S.霍斯特曼 . 快学 Scala(第 2 版)[M] . 电子工业出版社 . 2017-7 + + +
\ No newline at end of file diff --git "a/notes/Scala\346\230\240\345\260\204\345\222\214\345\205\203\347\273\204.md" "b/notes/Scala\346\230\240\345\260\204\345\222\214\345\205\203\347\273\204.md" index ec47e12c..eb4b5af0 100644 --- "a/notes/Scala\346\230\240\345\260\204\345\222\214\345\205\203\347\273\204.md" +++ "b/notes/Scala\346\230\240\345\260\204\345\222\214\345\205\203\347\273\204.md" @@ -280,3 +280,6 @@ object ScalaApp extends App { 1. Martin Odersky . Scala 编程 (第 3 版)[M] . 电子工业出版社 . 2018-1-1 2. 凯.S.霍斯特曼 . 快学 Scala(第 2 版)[M] . 电子工业出版社 . 2017-7 + + +
\ No newline at end of file diff --git "a/notes/Scala\346\250\241\345\274\217\345\214\271\351\205\215.md" "b/notes/Scala\346\250\241\345\274\217\345\214\271\351\205\215.md" index 7c652674..91ddad50 100644 --- "a/notes/Scala\346\250\241\345\274\217\345\214\271\351\205\215.md" +++ "b/notes/Scala\346\250\241\345\274\217\345\214\271\351\205\215.md" @@ -170,3 +170,6 @@ object ScalaApp extends App { 1. Martin Odersky . Scala 编程 (第 3 版)[M] . 电子工业出版社 . 2018-1-1 2. 凯.S.霍斯特曼 . 快学 Scala(第 2 版)[M] . 电子工业出版社 . 2017-7 + + +
\ No newline at end of file diff --git "a/notes/Scala\346\265\201\347\250\213\346\216\247\345\210\266\350\257\255\345\217\245.md" "b/notes/Scala\346\265\201\347\250\213\346\216\247\345\210\266\350\257\255\345\217\245.md" index 8b1c2191..78f9988e 100644 --- "a/notes/Scala\346\265\201\347\250\213\346\216\247\345\210\266\350\257\255\345\217\245.md" +++ "b/notes/Scala\346\265\201\347\250\213\346\216\247\345\210\266\350\257\255\345\217\245.md" @@ -209,3 +209,6 @@ println(s"Hello, ${name}! Next year, you will be ${age + 1}.") 1. Martin Odersky . Scala 编程 (第 3 版)[M] . 电子工业出版社 . 2018-1-1 2. 凯.S.霍斯特曼 . 快学 Scala(第 2 版)[M] . 电子工业出版社 . 2017-7 + + +
\ No newline at end of file diff --git "a/notes/Scala\347\256\200\344\273\213\345\217\212\345\274\200\345\217\221\347\216\257\345\242\203\351\205\215\347\275\256.md" "b/notes/Scala\347\256\200\344\273\213\345\217\212\345\274\200\345\217\221\347\216\257\345\242\203\351\205\215\347\275\256.md" index e16065e1..57f64db1 100644 --- "a/notes/Scala\347\256\200\344\273\213\345\217\212\345\274\200\345\217\221\347\216\257\345\242\203\351\205\215\347\275\256.md" +++ "b/notes/Scala\347\256\200\344\273\213\345\217\212\345\274\200\345\217\221\347\216\257\345\242\203\351\205\215\347\275\256.md" @@ -131,3 +131,6 @@ IDEA 默认不支持 Scala 语言的开发,需要通过插件进行扩展。 1. Martin Odersky(著),高宇翔 (译) . Scala 编程 (第 3 版)[M] . 电子工业出版社 . 2018-1-1 2. https://www.scala-lang.org/download/ + + +
\ No newline at end of file diff --git "a/notes/Scala\347\261\273\345\222\214\345\257\271\350\261\241.md" "b/notes/Scala\347\261\273\345\222\214\345\257\271\350\261\241.md" index 881ebe2b..65cb39ae 100644 --- "a/notes/Scala\347\261\273\345\222\214\345\257\271\350\261\241.md" +++ "b/notes/Scala\347\261\273\345\222\214\345\257\271\350\261\241.md" @@ -410,3 +410,6 @@ true 1. Martin Odersky . Scala 编程 (第 3 版)[M] . 电子工业出版社 . 2018-1-1 2. 凯.S.霍斯特曼 . 快学 Scala(第 2 版)[M] . 电子工业出版社 . 2017-7 + + +
\ No newline at end of file diff --git "a/notes/Scala\347\261\273\345\236\213\345\217\202\346\225\260.md" "b/notes/Scala\347\261\273\345\236\213\345\217\202\346\225\260.md" index 26be482f..299391f4 100644 --- "a/notes/Scala\347\261\273\345\236\213\345\217\202\346\225\260.md" +++ "b/notes/Scala\347\261\273\345\236\213\345\217\202\346\225\260.md" @@ -465,3 +465,6 @@ def min[T <: SuperComparable[T]](p: Pair[T]) = {} 1. Martin Odersky . Scala 编程 (第 3 版)[M] . 电子工业出版社 . 2018-1-1 2. 凯.S.霍斯特曼 . 快学 Scala(第 2 版)[M] . 电子工业出版社 . 2017-7 + + +
\ No newline at end of file diff --git "a/notes/Scala\347\273\247\346\211\277\345\222\214\347\211\271\350\264\250.md" "b/notes/Scala\347\273\247\346\211\277\345\222\214\347\211\271\350\264\250.md" index 5b6bd4a1..9e871cbc 100644 --- "a/notes/Scala\347\273\247\346\211\277\345\222\214\347\211\271\350\264\250.md" +++ "b/notes/Scala\347\273\247\346\211\277\345\222\214\347\211\271\350\264\250.md" @@ -416,3 +416,6 @@ class Employee extends Person with InfoLogger with ErrorLogger {...} + + +
\ No newline at end of file diff --git "a/notes/Scala\351\232\220\345\274\217\350\275\254\346\215\242\345\222\214\351\232\220\345\274\217\345\217\202\346\225\260.md" "b/notes/Scala\351\232\220\345\274\217\350\275\254\346\215\242\345\222\214\351\232\220\345\274\217\345\217\202\346\225\260.md" index 37b63cea..fcf9e211 100644 --- "a/notes/Scala\351\232\220\345\274\217\350\275\254\346\215\242\345\222\214\351\232\220\345\274\217\345\217\202\346\225\260.md" +++ "b/notes/Scala\351\232\220\345\274\217\350\275\254\346\215\242\345\222\214\351\232\220\345\274\217\345\217\202\346\225\260.md" @@ -354,3 +354,6 @@ object Pair extends App { + + +
\ No newline at end of file diff --git "a/notes/Scala\351\233\206\345\220\210\347\261\273\345\236\213.md" "b/notes/Scala\351\233\206\345\220\210\347\261\273\345\236\213.md" index edcb8319..33d2819b 100644 --- "a/notes/Scala\351\233\206\345\220\210\347\261\273\345\236\213.md" +++ "b/notes/Scala\351\233\206\345\220\210\347\261\273\345\236\213.md" @@ -257,3 +257,6 @@ res8: Boolean = false 1. https://docs.scala-lang.org/overviews/collections/overview.html 2. https://docs.scala-lang.org/overviews/collections/trait-traversable.html 3. https://docs.scala-lang.org/overviews/collections/trait-iterable.html + + +
\ No newline at end of file diff --git "a/notes/SparkSQL_Dataset\345\222\214DataFrame\347\256\200\344\273\213.md" "b/notes/SparkSQL_Dataset\345\222\214DataFrame\347\256\200\344\273\213.md" index 3ddc40c8..d6e06722 100644 --- "a/notes/SparkSQL_Dataset\345\222\214DataFrame\347\256\200\344\273\213.md" +++ "b/notes/SparkSQL_Dataset\345\222\214DataFrame\347\256\200\344\273\213.md" @@ -145,3 +145,6 @@ DataFrame、DataSet 和 Spark SQL 的实际执行流程都是相同的: 2. [Spark SQL, DataFrames and Datasets Guide](https://spark.apache.org/docs/latest/sql-programming-guide.html) 3. [且谈 Apache Spark 的 API 三剑客:RDD、DataFrame 和 Dataset(译文)](https://www.infoq.cn/article/three-apache-spark-apis-rdds-dataframes-and-datasets) 4. [A Tale of Three Apache Spark APIs: RDDs vs DataFrames and Datasets(原文)](https://databricks.com/blog/2016/07/14/a-tale-of-three-apache-spark-apis-rdds-dataframes-and-datasets.html) + + +
\ No newline at end of file diff --git "a/notes/SparkSQL\345\244\226\351\203\250\346\225\260\346\215\256\346\272\220.md" "b/notes/SparkSQL\345\244\226\351\203\250\346\225\260\346\215\256\346\272\220.md" index f2dd0fee..765a75f3 100644 --- "a/notes/SparkSQL\345\244\226\351\203\250\346\225\260\346\215\256\346\272\220.md" +++ "b/notes/SparkSQL\345\244\226\351\203\250\346\225\260\346\215\256\346\272\220.md" @@ -497,3 +497,6 @@ df.write.option(“maxRecordsPerFile”, 5000) 1. Matei Zaharia, Bill Chambers . Spark: The Definitive Guide[M] . 2018-02 2. https://spark.apache.org/docs/latest/sql-data-sources.html + + +
\ No newline at end of file diff --git "a/notes/SparkSQL\345\270\270\347\224\250\350\201\232\345\220\210\345\207\275\346\225\260.md" "b/notes/SparkSQL\345\270\270\347\224\250\350\201\232\345\220\210\345\207\275\346\225\260.md" index c94a15c6..cf70bce4 100644 --- "a/notes/SparkSQL\345\270\270\347\224\250\350\201\232\345\220\210\345\207\275\346\225\260.md" +++ "b/notes/SparkSQL\345\270\270\347\224\250\350\201\232\345\220\210\345\207\275\346\225\260.md" @@ -337,3 +337,6 @@ object SparkSqlApp { ## 参考资料 1. Matei Zaharia, Bill Chambers . Spark: The Definitive Guide[M] . 2018-02 + + +
\ No newline at end of file diff --git "a/notes/SparkSQL\350\201\224\347\273\223\346\223\215\344\275\234.md" "b/notes/SparkSQL\350\201\224\347\273\223\346\223\215\344\275\234.md" index 23178f14..5b178ae2 100644 --- "a/notes/SparkSQL\350\201\224\347\273\223\346\223\215\344\275\234.md" +++ "b/notes/SparkSQL\350\201\224\347\273\223\346\223\215\344\275\234.md" @@ -183,3 +183,6 @@ empDF.join(broadcast(deptDF), joinExpression).show() ## 参考资料 1. Matei Zaharia, Bill Chambers . Spark: The Definitive Guide[M] . 2018-02 + + +
\ No newline at end of file diff --git a/notes/Spark_RDD.md b/notes/Spark_RDD.md index 9b284455..1ae1a243 100644 --- a/notes/Spark_RDD.md +++ b/notes/Spark_RDD.md @@ -235,3 +235,6 @@ RDD(s) 及其之间的依赖关系组成了 DAG(有向无环图),DAG 定义了 + + +
\ No newline at end of file diff --git "a/notes/Spark_Streaming\344\270\216\346\265\201\345\244\204\347\220\206.md" "b/notes/Spark_Streaming\344\270\216\346\265\201\345\244\204\347\220\206.md" index 0c8b7191..22cd826c 100644 --- "a/notes/Spark_Streaming\344\270\216\346\265\201\345\244\204\347\220\206.md" +++ "b/notes/Spark_Streaming\344\270\216\346\265\201\345\244\204\347\220\206.md" @@ -77,3 +77,6 @@ storm 和 Flink 都是真正意义上的流计算框架,但 Spark Streaming 1. [Spark Streaming Programming Guide](https://spark.apache.org/docs/latest/streaming-programming-guide.html) 2. [What is stream processing?](https://www.ververica.com/what-is-stream-processing) + + +
\ No newline at end of file diff --git "a/notes/Spark_Streaming\345\237\272\346\234\254\346\223\215\344\275\234.md" "b/notes/Spark_Streaming\345\237\272\346\234\254\346\223\215\344\275\234.md" index a1d1d971..1e8cf47f 100644 --- "a/notes/Spark_Streaming\345\237\272\346\234\254\346\223\215\344\275\234.md" +++ "b/notes/Spark_Streaming\345\237\272\346\234\254\346\223\215\344\275\234.md" @@ -333,3 +333,6 @@ storm storm flink azkaban ## 参考资料 Spark 官方文档:http://spark.apache.org/docs/latest/streaming-programming-guide.html + + +
\ No newline at end of file diff --git "a/notes/Spark_Streaming\346\225\264\345\220\210Flume.md" "b/notes/Spark_Streaming\346\225\264\345\220\210Flume.md" index e2a9e6fe..e79b141c 100644 --- "a/notes/Spark_Streaming\346\225\264\345\220\210Flume.md" +++ "b/notes/Spark_Streaming\346\225\264\345\220\210Flume.md" @@ -357,3 +357,6 @@ spark-submit \ - [streaming-flume-integration](https://spark.apache.org/docs/latest/streaming-flume-integration.html) - 关于大数据应用常用的打包方式可以参见:[大数据应用常用打包方式](https://github.com/heibaiying/BigData-Notes/blob/master/notes/大数据应用常用打包方式.md) + + +
\ No newline at end of file diff --git "a/notes/Spark_Streaming\346\225\264\345\220\210Kafka.md" "b/notes/Spark_Streaming\346\225\264\345\220\210Kafka.md" index 375f30ce..67b5db4f 100644 --- "a/notes/Spark_Streaming\346\225\264\345\220\210Kafka.md" +++ "b/notes/Spark_Streaming\346\225\264\345\220\210Kafka.md" @@ -319,3 +319,6 @@ bin/kafka-console-producer.sh --broker-list hadoop001:9092 --topic spark-streami ## 参考资料 1. https://spark.apache.org/docs/latest/streaming-kafka-0-10-integration.html + + +
\ No newline at end of file diff --git "a/notes/Spark_Structured_API\347\232\204\345\237\272\346\234\254\344\275\277\347\224\250.md" "b/notes/Spark_Structured_API\347\232\204\345\237\272\346\234\254\344\275\277\347\224\250.md" index 30056aa6..6be29c5a 100644 --- "a/notes/Spark_Structured_API\347\232\204\345\237\272\346\234\254\344\275\277\347\224\250.md" +++ "b/notes/Spark_Structured_API\347\232\204\345\237\272\346\234\254\344\275\277\347\224\250.md" @@ -242,3 +242,6 @@ spark.sql("SELECT ename,job FROM global_temp.gemp").show() ## 参考资料 [Spark SQL, DataFrames and Datasets Guide > Getting Started](https://spark.apache.org/docs/latest/sql-getting-started.html) + + +
\ No newline at end of file diff --git "a/notes/Spark_Transformation\345\222\214Action\347\256\227\345\255\220.md" "b/notes/Spark_Transformation\345\222\214Action\347\256\227\345\255\220.md" index 150f0bba..c830bcc9 100644 --- "a/notes/Spark_Transformation\345\222\214Action\347\256\227\345\255\220.md" +++ "b/notes/Spark_Transformation\345\222\214Action\347\256\227\345\255\220.md" @@ -416,3 +416,6 @@ sc.parallelize(list).saveAsTextFile("/usr/file/temp") [RDD Programming Guide](http://spark.apache.org/docs/latest/rdd-programming-guide.html#rdd-programming-guide) + + +
\ No newline at end of file diff --git "a/notes/Spark\347\256\200\344\273\213.md" "b/notes/Spark\347\256\200\344\273\213.md" index bb91551d..53b1baf9 100644 --- "a/notes/Spark\347\256\200\344\273\213.md" +++ "b/notes/Spark\347\256\200\344\273\213.md" @@ -92,3 +92,6 @@ MLlib 是 Spark 的机器学习库。其设计目标是使得机器学习变得 GraphX 是 Spark 中用于图形计算和图形并行计算的新组件。在高层次上,GraphX 通过引入一个新的图形抽象来扩展 RDD(一种具有附加到每个顶点和边缘的属性的定向多重图形)。为了支持图计算,GraphX 提供了一组基本运算符(如: subgraph,joinVertices 和 aggregateMessages)以及优化后的 Pregel API。此外,GraphX 还包括越来越多的图形算法和构建器,以简化图形分析任务。 ## + + +
\ No newline at end of file diff --git "a/notes/Spark\347\264\257\345\212\240\345\231\250\344\270\216\345\271\277\346\222\255\345\217\230\351\207\217.md" "b/notes/Spark\347\264\257\345\212\240\345\231\250\344\270\216\345\271\277\346\222\255\345\217\230\351\207\217.md" index ca4da08e..a6bdcb86 100644 --- "a/notes/Spark\347\264\257\345\212\240\345\231\250\344\270\216\345\271\277\346\222\255\345\217\230\351\207\217.md" +++ "b/notes/Spark\347\264\257\345\212\240\345\231\250\344\270\216\345\271\277\346\222\255\345\217\230\351\207\217.md" @@ -103,3 +103,6 @@ sc.parallelize(broadcastVar.value).map(_ * 10).collect() [RDD Programming Guide](http://spark.apache.org/docs/latest/rdd-programming-guide.html#rdd-programming-guide) + + +
\ No newline at end of file diff --git "a/notes/Spark\351\203\250\347\275\262\346\250\241\345\274\217\344\270\216\344\275\234\344\270\232\346\217\220\344\272\244.md" "b/notes/Spark\351\203\250\347\275\262\346\250\241\345\274\217\344\270\216\344\275\234\344\270\232\346\217\220\344\272\244.md" index cb8289be..66749d22 100644 --- "a/notes/Spark\351\203\250\347\275\262\346\250\241\345\274\217\344\270\216\344\275\234\344\270\232\346\217\220\344\272\244.md" +++ "b/notes/Spark\351\203\250\347\275\262\346\250\241\345\274\217\344\270\216\344\275\234\344\270\232\346\217\220\344\272\244.md" @@ -246,3 +246,6 @@ spark-submit \ + + +
\ No newline at end of file diff --git "a/notes/Spring+Mybtais+Phoenix\346\225\264\345\220\210.md" "b/notes/Spring+Mybtais+Phoenix\346\225\264\345\220\210.md" index 29f06606..4a2698b1 100644 --- "a/notes/Spring+Mybtais+Phoenix\346\225\264\345\220\210.md" +++ "b/notes/Spring+Mybtais+Phoenix\346\225\264\345\220\210.md" @@ -384,3 +384,6 @@ UPSERT INTO us_population VALUES('CA','San Diego',1255540); UPSERT INTO us_population VALUES('CA','San Jose',912332); ``` + + +
\ No newline at end of file diff --git "a/notes/Sqoop\345\237\272\346\234\254\344\275\277\347\224\250.md" "b/notes/Sqoop\345\237\272\346\234\254\344\275\277\347\224\250.md" index d4cec854..513a0b59 100644 --- "a/notes/Sqoop\345\237\272\346\234\254\344\275\277\347\224\250.md" +++ "b/notes/Sqoop\345\237\272\346\234\254\344\275\277\347\224\250.md" @@ -385,3 +385,6 @@ $ sqoop import ... --map-column-java id=String,value=Integer ## 参考资料 [Sqoop User Guide (v1.4.7)](http://sqoop.apache.org/docs/1.4.7/SqoopUserGuide.html) + + +
\ No newline at end of file diff --git "a/notes/Sqoop\347\256\200\344\273\213\344\270\216\345\256\211\350\243\205.md" "b/notes/Sqoop\347\256\200\344\273\213\344\270\216\345\256\211\350\243\205.md" index 7603b8d7..27b4a90a 100644 --- "a/notes/Sqoop\347\256\200\344\273\213\344\270\216\345\256\211\350\243\205.md" +++ "b/notes/Sqoop\347\256\200\344\273\213\344\270\216\345\256\211\350\243\205.md" @@ -145,3 +145,6 @@ if [ ! -d "${ZOOKEEPER_HOME}" ]; then fi ``` + + +
\ No newline at end of file diff --git "a/notes/Storm\344\270\211\347\247\215\346\211\223\345\214\205\346\226\271\345\274\217\345\257\271\346\257\224\345\210\206\346\236\220.md" "b/notes/Storm\344\270\211\347\247\215\346\211\223\345\214\205\346\226\271\345\274\217\345\257\271\346\257\224\345\210\206\346\236\220.md" index e0218173..5b39fa7c 100644 --- "a/notes/Storm\344\270\211\347\247\215\346\211\223\345\214\205\346\226\271\345\274\217\345\257\271\346\257\224\345\210\206\346\236\220.md" +++ "b/notes/Storm\344\270\211\347\247\215\346\211\223\345\214\205\346\226\271\345\274\217\345\257\271\346\257\224\345\210\206\346\236\220.md" @@ -313,3 +313,6 @@ jar:file:/usr/appjar/storm-hdfs-integration-1.0.jar!/defaults.yaml] ## 参考资料 关于 maven-shade-plugin 的更多配置可以参考: [maven-shade-plugin 入门指南](https://www.jianshu.com/p/7a0e20b30401) + + +
\ No newline at end of file diff --git "a/notes/Storm\345\222\214\346\265\201\345\244\204\347\220\206\347\256\200\344\273\213.md" "b/notes/Storm\345\222\214\346\265\201\345\244\204\347\220\206\347\256\200\344\273\213.md" index 2949d757..e505c00e 100644 --- "a/notes/Storm\345\222\214\346\265\201\345\244\204\347\220\206\347\256\200\344\273\213.md" +++ "b/notes/Storm\345\222\214\346\265\201\345\244\204\347\220\206\347\256\200\344\273\213.md" @@ -96,3 +96,6 @@ storm 和 Flink 都是真正意义上的实时计算框架。其对比如下: 1. [What is stream processing?](https://www.ververica.com/what-is-stream-processing) 2. [流计算框架 Flink 与 Storm 的性能对比](http://bigdata.51cto.com/art/201711/558416.htm) + + +
\ No newline at end of file diff --git "a/notes/Storm\346\240\270\345\277\203\346\246\202\345\277\265\350\257\246\350\247\243.md" "b/notes/Storm\346\240\270\345\277\203\346\246\202\345\277\265\350\257\246\350\247\243.md" index 11cf338f..b7208f3d 100644 --- "a/notes/Storm\346\240\270\345\277\203\346\246\202\345\277\265\350\257\246\350\247\243.md" +++ "b/notes/Storm\346\240\270\345\277\203\346\246\202\345\277\265\350\257\246\350\247\243.md" @@ -157,3 +157,6 @@ Task 是组成 Component 的代码单元。Topology 启动后,1 个 Component 3. [Understanding the Parallelism of a Storm Topology](http://storm.apache.org/releases/1.2.2/Understanding-the-parallelism-of-a-Storm-topology.html) 4. [Storm nimbus 单节点宕机的处理](https://blog.csdn.net/daiyutage/article/details/52049519) + + +
\ No newline at end of file diff --git "a/notes/Storm\347\274\226\347\250\213\346\250\241\345\236\213\350\257\246\350\247\243.md" "b/notes/Storm\347\274\226\347\250\213\346\250\241\345\236\213\350\257\246\350\247\243.md" index 1cabfdcb..28f328b0 100644 --- "a/notes/Storm\347\274\226\347\250\213\346\250\241\345\236\213\350\257\246\350\247\243.md" +++ "b/notes/Storm\347\274\226\347\250\213\346\250\241\345\236\213\350\257\246\350\247\243.md" @@ -509,3 +509,6 @@ private String productData() { 1. [Running Topologies on a Production Cluster](http://storm.apache.org/releases/2.0.0-SNAPSHOT/Running-topologies-on-a-production-cluster.html) 2. [Pre-defined Descriptor Files](http://maven.apache.org/plugins/maven-assembly-plugin/descriptor-refs.html) + + +
\ No newline at end of file diff --git "a/notes/Storm\351\233\206\346\210\220HBase\345\222\214HDFS.md" "b/notes/Storm\351\233\206\346\210\220HBase\345\222\214HDFS.md" index 2c9c1460..53ac3654 100644 --- "a/notes/Storm\351\233\206\346\210\220HBase\345\222\214HDFS.md" +++ "b/notes/Storm\351\233\206\346\210\220HBase\345\222\214HDFS.md" @@ -487,3 +487,6 @@ SimpleHBaseMapper mapper = new SimpleHBaseMapper() 1. [Apache HDFS Integration](http://storm.apache.org/releases/2.0.0-SNAPSHOT/storm-hdfs.html) 2. [Apache HBase Integration](http://storm.apache.org/releases/2.0.0-SNAPSHOT/storm-hbase.html) + + +
\ No newline at end of file diff --git "a/notes/Storm\351\233\206\346\210\220Kakfa.md" "b/notes/Storm\351\233\206\346\210\220Kakfa.md" index 5645bc04..f27717fd 100644 --- "a/notes/Storm\351\233\206\346\210\220Kakfa.md" +++ "b/notes/Storm\351\233\206\346\210\220Kakfa.md" @@ -365,3 +365,6 @@ public class DefaultRecordTranslator implements RecordTranslator { ## 参考资料 1. [Storm Kafka Integration (0.10.x+)](http://storm.apache.org/releases/2.0.0-SNAPSHOT/storm-kafka-client.html) + + +
\ No newline at end of file diff --git "a/notes/Storm\351\233\206\346\210\220Redis\350\257\246\350\247\243.md" "b/notes/Storm\351\233\206\346\210\220Redis\350\257\246\350\247\243.md" index 13cbaa49..46f2ff7b 100644 --- "a/notes/Storm\351\233\206\346\210\220Redis\350\257\246\350\247\243.md" +++ "b/notes/Storm\351\233\206\346\210\220Redis\350\257\246\350\247\243.md" @@ -653,3 +653,6 @@ public class CustomRedisCountApp { ## 参考资料 1. [Storm Redis Integration](http://storm.apache.org/releases/2.0.0-SNAPSHOT/storm-redis.html) + + +
\ No newline at end of file diff --git "a/notes/Zookeeper_ACL\346\235\203\351\231\220\346\216\247\345\210\266.md" "b/notes/Zookeeper_ACL\346\235\203\351\231\220\346\216\247\345\210\266.md" index 478a7303..5b4b6fff 100644 --- "a/notes/Zookeeper_ACL\346\235\203\351\231\220\346\216\247\345\210\266.md" +++ "b/notes/Zookeeper_ACL\346\235\203\351\231\220\346\216\247\345\210\266.md" @@ -281,3 +281,6 @@ public class AclOperation { ``` > 完整源码见本仓库: https://github.com/heibaiying/BigData-Notes/tree/master/code/Zookeeper/curator + + +
\ No newline at end of file diff --git "a/notes/Zookeeper_Java\345\256\242\346\210\267\347\253\257Curator.md" "b/notes/Zookeeper_Java\345\256\242\346\210\267\347\253\257Curator.md" index 0725f5f8..eba7ca5a 100644 --- "a/notes/Zookeeper_Java\345\256\242\346\210\267\347\253\257Curator.md" +++ "b/notes/Zookeeper_Java\345\256\242\346\210\267\347\253\257Curator.md" @@ -334,3 +334,6 @@ public void permanentChildrenNodesWatch() throws Exception { Thread.sleep(1000 * 1000); //休眠以观察测试效果 } ``` + + +
\ No newline at end of file diff --git "a/notes/Zookeeper\345\270\270\347\224\250Shell\345\221\275\344\273\244.md" "b/notes/Zookeeper\345\270\270\347\224\250Shell\345\221\275\344\273\244.md" index 23581177..2b48bcfc 100644 --- "a/notes/Zookeeper\345\270\270\347\224\250Shell\345\221\275\344\273\244.md" +++ "b/notes/Zookeeper\345\270\270\347\224\250Shell\345\221\275\344\273\244.md" @@ -263,3 +263,6 @@ Mode: standalone Node count: 167 ``` + + +
\ No newline at end of file diff --git "a/notes/Zookeeper\347\256\200\344\273\213\345\217\212\346\240\270\345\277\203\346\246\202\345\277\265.md" "b/notes/Zookeeper\347\256\200\344\273\213\345\217\212\346\240\270\345\277\203\346\246\202\345\277\265.md" index 29dc72d8..6bfcd571 100644 --- "a/notes/Zookeeper\347\256\200\344\273\213\345\217\212\346\240\270\345\277\203\346\246\202\345\277\265.md" +++ "b/notes/Zookeeper\347\256\200\344\273\213\345\217\212\346\240\270\345\277\203\346\246\202\345\277\265.md" @@ -205,3 +205,6 @@ Zookeeper 还能解决大多数分布式系统中的问题: + + +
\ No newline at end of file diff --git "a/notes/installation/Azkaban_3.x_\347\274\226\350\257\221\345\217\212\351\203\250\347\275\262.md" "b/notes/installation/Azkaban_3.x_\347\274\226\350\257\221\345\217\212\351\203\250\347\275\262.md" index b9984b24..d2a45b77 100644 --- "a/notes/installation/Azkaban_3.x_\347\274\226\350\257\221\345\217\212\351\203\250\347\275\262.md" +++ "b/notes/installation/Azkaban_3.x_\347\274\226\350\257\221\345\217\212\351\203\250\347\275\262.md" @@ -122,3 +122,6 @@ tar -zxvf azkaban-solo-server-3.70.0.tar.gz
+ + +
\ No newline at end of file diff --git a/notes/installation/Flink_Standalone_Cluster.md b/notes/installation/Flink_Standalone_Cluster.md index 0ccf0d6f..bfd2025f 100644 --- a/notes/installation/Flink_Standalone_Cluster.md +++ b/notes/installation/Flink_Standalone_Cluster.md @@ -268,3 +268,6 @@ the classpath/dependencies. + [Standalone Cluster](https://ci.apache.org/projects/flink/flink-docs-release-1.9/ops/deployment/cluster_setup.html#standalone-cluster) + [JobManager High Availability (HA)](https://ci.apache.org/projects/flink/flink-docs-release-1.9/ops/jobmanager_high_availability.html) + + +
\ No newline at end of file diff --git "a/notes/installation/HBase\345\215\225\346\234\272\347\216\257\345\242\203\346\220\255\345\273\272.md" "b/notes/installation/HBase\345\215\225\346\234\272\347\216\257\345\242\203\346\220\255\345\273\272.md" index 56cc598e..566b6a96 100644 --- "a/notes/installation/HBase\345\215\225\346\234\272\347\216\257\345\242\203\346\220\255\345\273\272.md" +++ "b/notes/installation/HBase\345\215\225\346\234\272\347\216\257\345\242\203\346\220\255\345\273\272.md" @@ -225,3 +225,6 @@ hadoop001 验证方式二 :访问 HBase Web UI 界面,需要注意的是 1.2 版本的 HBase 的访问端口为 `60010`
+ + +
\ No newline at end of file diff --git "a/notes/installation/HBase\351\233\206\347\276\244\347\216\257\345\242\203\346\220\255\345\273\272.md" "b/notes/installation/HBase\351\233\206\347\276\244\347\216\257\345\242\203\346\220\255\345\273\272.md" index d57bf601..80a71828 100644 --- "a/notes/installation/HBase\351\233\206\347\276\244\347\216\257\345\242\203\346\220\255\345\273\272.md" +++ "b/notes/installation/HBase\351\233\206\347\276\244\347\216\257\345\242\203\346\220\255\345\273\272.md" @@ -198,3 +198,6 @@ hadoop002 上的 HBase 出于备用状态:
+ + +
\ No newline at end of file diff --git "a/notes/installation/Hadoop\345\215\225\346\234\272\347\216\257\345\242\203\346\220\255\345\273\272.md" "b/notes/installation/Hadoop\345\215\225\346\234\272\347\216\257\345\242\203\346\220\255\345\273\272.md" index 05316686..1bc301df 100644 --- "a/notes/installation/Hadoop\345\215\225\346\234\272\347\216\257\345\242\203\346\220\255\345\273\272.md" +++ "b/notes/installation/Hadoop\345\215\225\346\234\272\347\216\257\345\242\203\346\220\255\345\273\272.md" @@ -260,3 +260,6 @@ cp mapred-site.xml.template mapred-site.xml 方式二:查看 Web UI 界面,端口号为 `8088`:
+ + +
\ No newline at end of file diff --git "a/notes/installation/Hadoop\351\233\206\347\276\244\347\216\257\345\242\203\346\220\255\345\273\272.md" "b/notes/installation/Hadoop\351\233\206\347\276\244\347\216\257\345\242\203\346\220\255\345\273\272.md" index 477dea4f..88515d01 100644 --- "a/notes/installation/Hadoop\351\233\206\347\276\244\347\216\257\345\242\203\346\220\255\345\273\272.md" +++ "b/notes/installation/Hadoop\351\233\206\347\276\244\347\216\257\345\242\203\346\220\255\345\273\272.md" @@ -231,3 +231,6 @@ start-yarn.sh hadoop jar /usr/app/hadoop-2.6.0-cdh5.15.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.15.2.jar pi 3 3 ``` + + +
\ No newline at end of file diff --git "a/notes/installation/Linux\344\270\213Flume\347\232\204\345\256\211\350\243\205.md" "b/notes/installation/Linux\344\270\213Flume\347\232\204\345\256\211\350\243\205.md" index 2e8b46ae..3aef07f5 100644 --- "a/notes/installation/Linux\344\270\213Flume\347\232\204\345\256\211\350\243\205.md" +++ "b/notes/installation/Linux\344\270\213Flume\347\232\204\345\256\211\350\243\205.md" @@ -66,3 +66,6 @@ export JAVA_HOME=/usr/java/jdk1.8.0_201 ![flume-version](https://github.com/heibaiying/BigData-Notes/blob/master/pictures/flume-version.png) + + +
\ No newline at end of file diff --git "a/notes/installation/Linux\344\270\213JDK\345\256\211\350\243\205.md" "b/notes/installation/Linux\344\270\213JDK\345\256\211\350\243\205.md" index 5459e044..3923a4df 100644 --- "a/notes/installation/Linux\344\270\213JDK\345\256\211\350\243\205.md" +++ "b/notes/installation/Linux\344\270\213JDK\345\256\211\350\243\205.md" @@ -53,3 +53,6 @@ Java(TM) SE Runtime Environment (build 1.8.0_201-b09) Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode) ``` + + +
\ No newline at end of file diff --git "a/notes/installation/Linux\344\270\213Python\345\256\211\350\243\205.md" "b/notes/installation/Linux\344\270\213Python\345\256\211\350\243\205.md" index 20fa1914..707f26e1 100644 --- "a/notes/installation/Linux\344\270\213Python\345\256\211\350\243\205.md" +++ "b/notes/installation/Linux\344\270\213Python\345\256\211\350\243\205.md" @@ -69,3 +69,6 @@ Type "help", "copyright", "credits" or "license" for more information. [root@hadoop001 app]# ``` + + +
\ No newline at end of file diff --git "a/notes/installation/Linux\347\216\257\345\242\203\344\270\213Hive\347\232\204\345\256\211\350\243\205\351\203\250\347\275\262.md" "b/notes/installation/Linux\347\216\257\345\242\203\344\270\213Hive\347\232\204\345\256\211\350\243\205\351\203\250\347\275\262.md" index 802b23fc..22a0e727 100644 --- "a/notes/installation/Linux\347\216\257\345\242\203\344\270\213Hive\347\232\204\345\256\211\350\243\205\351\203\250\347\275\262.md" +++ "b/notes/installation/Linux\347\216\257\345\242\203\344\270\213Hive\347\232\204\345\256\211\350\243\205\351\203\250\347\275\262.md" @@ -179,3 +179,6 @@ Hive 内置了 HiveServer 和 HiveServer2 服务,两者都允许客户端使 ```
+ + +
\ No newline at end of file diff --git "a/notes/installation/Spark\345\274\200\345\217\221\347\216\257\345\242\203\346\220\255\345\273\272.md" "b/notes/installation/Spark\345\274\200\345\217\221\347\216\257\345\242\203\346\220\255\345\273\272.md" index c961ed6c..60fe77fc 100644 --- "a/notes/installation/Spark\345\274\200\345\217\221\347\216\257\345\242\203\346\220\255\345\273\272.md" +++ "b/notes/installation/Spark\345\274\200\345\217\221\347\216\257\345\242\203\346\220\255\345\273\272.md" @@ -176,3 +176,6 @@ IDEA 默认不支持 Scala 语言的开发,需要通过插件进行扩展。 **另外在 IDEA 中以本地模式运行 Spark 项目是不需要在本机搭建 Spark 和 Hadoop 环境的。** + + +
\ No newline at end of file diff --git "a/notes/installation/Spark\351\233\206\347\276\244\347\216\257\345\242\203\346\220\255\345\273\272.md" "b/notes/installation/Spark\351\233\206\347\276\244\347\216\257\345\242\203\346\220\255\345\273\272.md" index 7b4eb2e0..24ded20b 100644 --- "a/notes/installation/Spark\351\233\206\347\276\244\347\216\257\345\242\203\346\220\255\345\273\272.md" +++ "b/notes/installation/Spark\351\233\206\347\276\244\347\216\257\345\242\203\346\220\255\345\273\272.md" @@ -188,3 +188,6 @@ spark-submit \ 100 ``` + + +
\ No newline at end of file diff --git "a/notes/installation/Storm\345\215\225\346\234\272\347\216\257\345\242\203\346\220\255\345\273\272.md" "b/notes/installation/Storm\345\215\225\346\234\272\347\216\257\345\242\203\346\220\255\345\273\272.md" index efcf5867..95806fdb 100644 --- "a/notes/installation/Storm\345\215\225\346\234\272\347\216\257\345\242\203\346\220\255\345\273\272.md" +++ "b/notes/installation/Storm\345\215\225\346\234\272\347\216\257\345\242\203\346\220\255\345\273\272.md" @@ -79,3 +79,6 @@ nohup sh storm logviewer & 验证方式二: 访问 8080 端口,查看 Web-UI 界面:
+ + +
\ No newline at end of file diff --git "a/notes/installation/Storm\351\233\206\347\276\244\347\216\257\345\242\203\346\220\255\345\273\272.md" "b/notes/installation/Storm\351\233\206\347\276\244\347\216\257\345\242\203\346\220\255\345\273\272.md" index 69b9c211..2afc41e4 100644 --- "a/notes/installation/Storm\351\233\206\347\276\244\347\216\257\345\242\203\346\220\255\345\273\272.md" +++ "b/notes/installation/Storm\351\233\206\347\276\244\347\216\257\345\242\203\346\220\255\345\273\272.md" @@ -165,3 +165,6 @@ nohup sh storm logviewer & 这里手动模拟主 `Nimbus` 异常的情况,在 hadoop001 上使用 `kill` 命令杀死 `Nimbus` 的线程,此时可以看到 hadoop001 上的 `Nimbus` 已经处于 `offline` 状态,而 hadoop002 上的 `Nimbus` 则成为新的 `Leader`。
+ + +
\ No newline at end of file diff --git "a/notes/installation/Zookeeper\345\215\225\346\234\272\347\216\257\345\242\203\345\222\214\351\233\206\347\276\244\347\216\257\345\242\203\346\220\255\345\273\272.md" "b/notes/installation/Zookeeper\345\215\225\346\234\272\347\216\257\345\242\203\345\222\214\351\233\206\347\276\244\347\216\257\345\242\203\346\220\255\345\273\272.md" index eec970bf..7698a4f9 100644 --- "a/notes/installation/Zookeeper\345\215\225\346\234\272\347\216\257\345\242\203\345\222\214\351\233\206\347\276\244\347\216\257\345\242\203\346\220\255\345\273\272.md" +++ "b/notes/installation/Zookeeper\345\215\225\346\234\272\347\216\257\345\242\203\345\222\214\351\233\206\347\276\244\347\216\257\345\242\203\346\220\255\345\273\272.md" @@ -185,3 +185,6 @@ echo "3" > /usr/local/zookeeper-cluster/data/myid
+ + +
\ No newline at end of file diff --git "a/notes/installation/\345\237\272\344\272\216Zookeeper\346\220\255\345\273\272Hadoop\351\253\230\345\217\257\347\224\250\351\233\206\347\276\244.md" "b/notes/installation/\345\237\272\344\272\216Zookeeper\346\220\255\345\273\272Hadoop\351\253\230\345\217\257\347\224\250\351\233\206\347\276\244.md" index d54db8dd..5d69f316 100644 --- "a/notes/installation/\345\237\272\344\272\216Zookeeper\346\220\255\345\273\272Hadoop\351\253\230\345\217\257\347\224\250\351\233\206\347\276\244.md" +++ "b/notes/installation/\345\237\272\344\272\216Zookeeper\346\220\255\345\273\272Hadoop\351\253\230\345\217\257\347\224\250\351\233\206\347\276\244.md" @@ -512,3 +512,6 @@ yarn-daemon.sh start resourcemanager [Hadoop NameNode 高可用 (High Availability) 实现解析](https://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop-name-node/index.html) + + +
\ No newline at end of file diff --git "a/notes/installation/\345\237\272\344\272\216Zookeeper\346\220\255\345\273\272Kafka\351\253\230\345\217\257\347\224\250\351\233\206\347\276\244.md" "b/notes/installation/\345\237\272\344\272\216Zookeeper\346\220\255\345\273\272Kafka\351\253\230\345\217\257\347\224\250\351\233\206\347\276\244.md" index 3a3fb6b9..85502f19 100644 --- "a/notes/installation/\345\237\272\344\272\216Zookeeper\346\220\255\345\273\272Kafka\351\253\230\345\217\257\347\224\250\351\233\206\347\276\244.md" +++ "b/notes/installation/\345\237\272\344\272\216Zookeeper\346\220\255\345\273\272Kafka\351\253\230\345\217\257\347\224\250\351\233\206\347\276\244.md" @@ -237,3 +237,6 @@ bin/kafka-topics.sh --describe --bootstrap-server hadoop001:9092 --topic my-repl + + +
\ No newline at end of file diff --git "a/notes/installation/\350\231\232\346\213\237\346\234\272\351\235\231\346\200\201IP\345\217\212\345\244\232IP\351\205\215\347\275\256.md" "b/notes/installation/\350\231\232\346\213\237\346\234\272\351\235\231\346\200\201IP\345\217\212\345\244\232IP\351\205\215\347\275\256.md" index aee8ceb5..fc6c49e0 100644 --- "a/notes/installation/\350\231\232\346\213\237\346\234\272\351\235\231\346\200\201IP\345\217\212\345\244\232IP\351\205\215\347\275\256.md" +++ "b/notes/installation/\350\231\232\346\213\237\346\234\272\351\235\231\346\200\201IP\345\217\212\345\244\232IP\351\205\215\347\275\256.md" @@ -116,3 +116,6 @@ DEVICE=enp0s8 使用时只需要根据所处的网络环境,勾选对应的网卡即可,不使用的网卡尽量不要勾选启动。
+ + +
\ No newline at end of file diff --git "a/notes/\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\350\267\257\347\272\277.md" "b/notes/\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\350\267\257\347\272\277.md" index acaffe02..fe1520cc 100644 --- "a/notes/\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\350\267\257\347\272\277.md" +++ "b/notes/\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\350\267\257\347\272\277.md" @@ -167,3 +167,6 @@ Scala 是一门综合了面向对象和函数式编程概念的静态类型的 以上就是个人关于大数据的学习心得和路线推荐。本片文章对大数据技术栈做了比较狭义的限定,随着学习的深入,大家也可以把 Python 语言、推荐系统、机器学习等逐步加入到自己的大数据技术栈中。 + + +
\ No newline at end of file diff --git "a/notes/\345\244\247\346\225\260\346\215\256\345\270\270\347\224\250\350\275\257\344\273\266\345\256\211\350\243\205\346\214\207\345\215\227.md" "b/notes/\345\244\247\346\225\260\346\215\256\345\270\270\347\224\250\350\275\257\344\273\266\345\256\211\350\243\205\346\214\207\345\215\227.md" index 390afb87..6c39b511 100644 --- "a/notes/\345\244\247\346\225\260\346\215\256\345\270\270\347\224\250\350\275\257\344\273\266\345\256\211\350\243\205\346\214\207\345\215\227.md" +++ "b/notes/\345\244\247\346\225\260\346\215\256\345\270\270\347\224\250\350\275\257\344\273\266\345\256\211\350\243\205\346\214\207\345\215\227.md" @@ -65,3 +65,6 @@ hadoop-2.6.0-cdh5.15.2.tar.gz hbase-1.2.0-cdh5.15.2 hive-1.1.0-cdh5.15.2.tar.gz ``` + + +
\ No newline at end of file diff --git "a/notes/\345\244\247\346\225\260\346\215\256\345\272\224\347\224\250\345\270\270\347\224\250\346\211\223\345\214\205\346\226\271\345\274\217.md" "b/notes/\345\244\247\346\225\260\346\215\256\345\272\224\347\224\250\345\270\270\347\224\250\346\211\223\345\214\205\346\226\271\345\274\217.md" index f166e3da..adab2267 100644 --- "a/notes/\345\244\247\346\225\260\346\215\256\345\272\224\347\224\250\345\270\270\347\224\250\346\211\223\345\214\205\346\226\271\345\274\217.md" +++ "b/notes/\345\244\247\346\225\260\346\215\256\345\272\224\347\224\250\345\270\270\347\224\250\346\211\223\345\214\205\346\226\271\345\274\217.md" @@ -304,3 +304,6 @@ Strom 官方文档 Running Topologies on a Production Cluster 章节: + maven-dependency-plugin : http://maven.apache.org/components/plugins/maven-dependency-plugin/ 关于 maven-shade-plugin 的更多配置也可以参考该博客: [maven-shade-plugin 入门指南](https://www.jianshu.com/p/7a0e20b30401) + + +
\ No newline at end of file diff --git "a/notes/\345\244\247\346\225\260\346\215\256\346\212\200\346\234\257\346\240\210\346\200\235\347\273\264\345\257\274\345\233\276.md" "b/notes/\345\244\247\346\225\260\346\215\256\346\212\200\346\234\257\346\240\210\346\200\235\347\273\264\345\257\274\345\233\276.md" index a28d2560..d6e312c5 100644 --- "a/notes/\345\244\247\346\225\260\346\215\256\346\212\200\346\234\257\346\240\210\346\200\235\347\273\264\345\257\274\345\233\276.md" +++ "b/notes/\345\244\247\346\225\260\346\215\256\346\212\200\346\234\257\346\240\210\346\200\235\347\273\264\345\257\274\345\233\276.md" @@ -1,2 +1,5 @@
+ + +
\ No newline at end of file diff --git "a/notes/\350\265\204\346\226\231\345\210\206\344\272\253\344\270\216\345\267\245\345\205\267\346\216\250\350\215\220.md" "b/notes/\350\265\204\346\226\231\345\210\206\344\272\253\344\270\216\345\267\245\345\205\267\346\216\250\350\215\220.md" index b7e3b33a..031d7587 100644 --- "a/notes/\350\265\204\346\226\231\345\210\206\344\272\253\344\270\216\345\267\245\345\205\267\346\216\250\350\215\220.md" +++ "b/notes/\350\265\204\346\226\231\345\210\206\344\272\253\344\270\216\345\267\245\345\205\267\346\216\250\350\215\220.md" @@ -54,3 +54,6 @@ ProcessOn 式一个在线绘图平台,使用起来非常便捷,可以用于 官方网站:https://www.processon.com/ + + +
\ No newline at end of file diff --git a/pictures/weixin-desc.png b/pictures/weixin-desc.png index 3217ead100aa8b1ede81b4527a6d3d60f8147343..e6a2b6d1c8537c6a96edf7d1763e6f84156d894b 100644 GIT binary patch literal 34582 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 literal 45299 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

B|fQ$U` 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%0AXI!bnSyJ&dWIEJ~e2300jxQ^v?V& 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