首页 文章 精选 留言 我的

精选列表

搜索[搭建],共10000篇文章
优秀的个人博客,低调大师

容器服务之快速搭建使用阿里云rds的wordpress网站

登录容器服务控制台,创建好集群,如果用户已有ECS机器,可以创建0节点的集群,然后将已有机器加入集群。 登录容器服务控制台,选择侧边栏的应用,在下拉框选择相应的集群,选择创建应用 填写应用名称,本例为wordpress-rds, 选择使用编排模板创建 在编辑框中输入以下编排模板请注意将WORDPRESS_DB_USER修改为您数据库用户名,将WORDPRESS_DB_PASSWORD修改为您数据库的密码,将WORDPRESS_DB_NAME修改为您数据库的名称,同时将db服务下面的host修改为您要连接的数据库的域名,将ports修改为您要连接的数据库的端口。 web: image: wordpress ports: - '80' restart: always li

优秀的个人博客,低调大师

使用Eclipse开发及测试Spark的环境搭建及简单测试

一、下载专门开发的Scala的Eclipse 1、下载地址:http://scala-ide.org/download/sdk.html,或链接:http://pan.baidu.com/s/1hrexmx2 密码:x0za 2、打开后新建一个名为WordCount的工程(这个应该都知道吧File-->New-->Scala Project),会发现有个Scala Library container[2.11.7],因为这个不是我们需要的版本,需要改一下;即右击WordCount-->Properties-->Scala Compile-->Use Project Settings-->Scala Installation,选择第二个,即Latest 2.10 bundle (dynamic),然后点击OK PS:如果你的scala版本是2.11.x,则可以忽略这步。 3、右击WordCount-->Build Path-->Configure Build Path-->Libraries-->Add External JARs...选择你解压的spark-assembly-1.0.0-hadoop1.0.4.jar,然后点击OK 下载地址:http://spark.apache.org/downloads.html,或链接:http://pan.baidu.com/s/1eRpWIdG 密码:ue3l,下载后解压即可。 4、此时所有的包依赖都导入成功,然后新建一个Scala类,即可开发Spark。 二、具体开发程序 下面给出史上最详细的程序: 1、如果想要在本地上搞Spark的话: 1 package com.df.spark 2 import org.apache.spark.SparkConf 3 import org.apache.spark.SparkContext 4 import org.apache.spark.SparkContext._ 5 import org.apache.spark.rdd.RDD 6 /** 7 * 使用Scala开发集群运行的Spark WordCount程序 8 * @author liuzhongfeng 9 */ 10 object WordCount_Cluster { 11 def main(args: Array[String]){ 12 /** 13 * 第一步:创建Spark的配置对象SparkConf,设置Spark程序的运行时的配置信息 14 * 例如说通过setMaster来设置程序要链接的Spark集群的Master的URL,如果设置为local, 15 * 则代表Spark程序在本地运行,特别适合机器配置条件差的初学者。 16 */ 17 val conf=new SparkConf()//创建SparkConf对象 18 conf.setAppName("My First Spark App!")//设置应用程序的名称,在程序运行的监控界面可以看到名称 19 conf.setMaster("spark://cMaster-spark:7077")//程序此时运行在Spark集群 20 21 /** 22 * 第二步:创建SparkContext对象, 23 * SparkContext是Spark程序所有功能的唯一入口,无论是采用Scala、Java、Python、R等都必须有一个SparkContext 24 * SparkContext的核心作用:初始化Spark应用程序运行所需要的核心组件,包括DAGScheduler、TaskScheduler、SchedulerBacken 25 * 同时还会负责Spark程序往Master注册程序等 26 * SparkContext是整个Spark应用程序中至关重要的一个对象 27 */ 28 val sc=new SparkContext(conf)//通过创建SparkContext对象,通过传入SparkConf实例来定制Spark运行的具体参数和配置信息 29 30 /** 31 * 第三步:根据具体的数据来源(HDFS、HBase、Local FS、S3)通过SparkContext来创建RDD 32 * RDD的创建基本有三种方式:根据外部的数据来源(例如HDFS)、根据Scala集合、由其他的RDD操作 33 * 数据会被RDD划分称为一些列的Partitions,分配到每个Partition的数据属于一个Task的处理范畴 34 */ 35 // val lines: RDD[String]=sc.textFile("H://下载//linux软件包//linux-spark的文件//spark//spark-1.0.0-bin-hadoop1//README.md", 1) 36 //读取本地文件并设置为一个Partition 37 //val lines=sc.textFile("H://下载//linux软件包//linux-spark的文件//spark//spark-1.0.0-bin-hadoop1//README.md", 1) 38 val lines=sc.textFile("/in", 1) 39 /** 40 * 第四步:对初始的RDD进行Transformation级别的处理,例如map、filter等高阶函数的编程,来进行具体的数据计算 41 * 第4.1步:将每一行的字符串拆分成单个的单词 42 */ 43 val words=lines.flatMap { line => line.split(" ")}//对每一行的字符串进行单词切分,并把所有行的切分结果通过flat合并成一个大的单词集合 44 /** 45 * 第四步:对初始的RDD进行Transformation级别的处理,例如map、filter等高阶函数的编程,来进行具体的数据计算 46 * 第4.2步:在单词切分的基础上,对每个单词实例的计数为1,也就是word=>(word,1) 47 */ 48 val pairs=words.map { word => (word,1) } 49 /** 50 * 第四步:对初始的RDD进行Transformation级别的处理,例如map、filter等高阶函数的编程,来进行具体的数据计算 51 * 第4.3步:在每个单词实例计数为1的基础之上统计每个单词在文件中出现的总次数 52 */ 53 val wordCounts=pairs.reduceByKey(_+_)//对相同的Key,进行Value的累计(包括Local和Reducer级别同时Reduce) 54 wordCounts.collect.foreach(wordNumberPair=>println(wordNumberPair._1+" : "+wordNumberPair._2)) 55 sc.stop() 56 } 57 } View Code 通过点击右键,选择Run As-->Scala Application,然后出现运行结果: 16/01/27 16:55:27 INFO SecurityManager: Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties 16/01/27 16:55:27 INFO SecurityManager: Changing view acls to: liuzhongfeng 16/01/27 16:55:27 INFO SecurityManager: SecurityManager: authentication disabled; ui acls disabled; users with view permissions: Set(liuzhongfeng) 16/01/27 16:55:28 INFO Slf4jLogger: Slf4jLogger started 16/01/27 16:55:28 INFO Remoting: Starting remoting 16/01/27 16:55:28 INFO Remoting: Remoting started; listening on addresses :[akka.tcp://spark@Frank:38059] 16/01/27 16:55:28 INFO Remoting: Remoting now listens on addresses: [akka.tcp://spark@Frank:38059] 16/01/27 16:55:28 INFO SparkEnv: Registering MapOutputTracker 16/01/27 16:55:28 INFO SparkEnv: Registering BlockManagerMaster 16/01/27 16:55:28 INFO DiskBlockManager: Created local directory at C:\Users\LIUZHO~1\AppData\Local\Temp\spark-local-20160127165528-81e4 16/01/27 16:55:28 INFO MemoryStore: MemoryStore started with capacity 1068.9 MB. 16/01/27 16:55:28 INFO ConnectionManager: Bound socket to port 38062 with id = ConnectionManagerId(Frank,38062) 16/01/27 16:55:28 INFO BlockManagerMaster: Trying to register BlockManager 16/01/27 16:55:28 INFO BlockManagerInfo: Registering block manager Frank:38062 with 1068.9 MB RAM 16/01/27 16:55:28 INFO BlockManagerMaster: Registered BlockManager 16/01/27 16:55:28 INFO HttpServer: Starting HTTP Server 16/01/27 16:55:28 INFO HttpBroadcast: Broadcast server started at http://192.168.1.107:38063 16/01/27 16:55:28 INFO HttpFileServer: HTTP File server directory is C:\Users\LIUZHO~1\AppData\Local\Temp\spark-59ecde39-31f6-4f84-ac49-e86194415dec 16/01/27 16:55:28 INFO HttpServer: Starting HTTP Server 16/01/27 16:55:28 INFO SparkUI: Started SparkUI at http://Frank:4040 16/01/27 16:55:29 INFO MemoryStore: ensureFreeSpace(32816) called with curMem=0, maxMem=1120822886 16/01/27 16:55:29 INFO MemoryStore: Block broadcast_0 stored as values to memory (estimated size 32.0 KB, free 1068.9 MB) 16/01/27 16:55:29 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 16/01/27 16:55:29 WARN LoadSnappy: Snappy native library not loaded 16/01/27 16:55:29 INFO FileInputFormat: Total input paths to process : 1 16/01/27 16:55:29 INFO SparkContext: Starting job: foreach at WordCount.scala:53 16/01/27 16:55:29 INFO DAGScheduler: Registering RDD 4 (reduceByKey at WordCount.scala:52) 16/01/27 16:55:29 INFO DAGScheduler: Got job 0 (foreach at WordCount.scala:53) with 1 output partitions (allowLocal=false) 16/01/27 16:55:29 INFO DAGScheduler: Final stage: Stage 0(foreach at WordCount.scala:53) 16/01/27 16:55:29 INFO DAGScheduler: Parents of final stage: List(Stage 1) 16/01/27 16:55:29 INFO DAGScheduler: Missing parents: List(Stage 1) 16/01/27 16:55:29 INFO DAGScheduler: Submitting Stage 1 (MapPartitionsRDD[4] at reduceByKey at WordCount.scala:52), which has no missing parents 16/01/27 16:55:29 INFO DAGScheduler: Submitting 1 missing tasks from Stage 1 (MapPartitionsRDD[4] at reduceByKey at WordCount.scala:52) 16/01/27 16:55:29 INFO TaskSchedulerImpl: Adding task set 1.0 with 1 tasks 16/01/27 16:55:29 INFO TaskSetManager: Starting task 1.0:0 as TID 0 on executor localhost: localhost (PROCESS_LOCAL) 16/01/27 16:55:29 INFO TaskSetManager: Serialized task 1.0:0 as 2172 bytes in 2 ms 16/01/27 16:55:29 INFO Executor: Running task ID 0 16/01/27 16:55:29 INFO BlockManager: Found block broadcast_0 locally 16/01/27 16:55:29 INFO HadoopRDD: Input split: file:/H:/下载/linux软件包/linux-spark的文件/spark/spark-1.0.0-bin-hadoop1/README.md:0+4221 16/01/27 16:55:29 INFO Executor: Serialized size of result for 0 is 775 16/01/27 16:55:29 INFO Executor: Sending result for 0 directly to driver 16/01/27 16:55:29 INFO Executor: Finished task ID 0 16/01/27 16:55:29 INFO TaskSetManager: Finished TID 0 in 231 ms on localhost (progress: 1/1) 16/01/27 16:55:29 INFO DAGScheduler: Completed ShuffleMapTask(1, 0) 16/01/27 16:55:29 INFO TaskSchedulerImpl: Removed TaskSet 1.0, whose tasks have all completed, from pool 16/01/27 16:55:29 INFO DAGScheduler: Stage 1 (reduceByKey at WordCount.scala:52) finished in 0.240 s 16/01/27 16:55:29 INFO DAGScheduler: looking for newly runnable stages 16/01/27 16:55:29 INFO DAGScheduler: running: Set() 16/01/27 16:55:29 INFO DAGScheduler: waiting: Set(Stage 0) 16/01/27 16:55:29 INFO DAGScheduler: failed: Set() 16/01/27 16:55:29 INFO DAGScheduler: Missing parents for Stage 0: List() 16/01/27 16:55:29 INFO DAGScheduler: Submitting Stage 0 (MapPartitionsRDD[6] at reduceByKey at WordCount.scala:52), which is now runnable 16/01/27 16:55:29 INFO DAGScheduler: Submitting 1 missing tasks from Stage 0 (MapPartitionsRDD[6] at reduceByKey at WordCount.scala:52) 16/01/27 16:55:29 INFO TaskSchedulerImpl: Adding task set 0.0 with 1 tasks 16/01/27 16:55:29 INFO TaskSetManager: Starting task 0.0:0 as TID 1 on executor localhost: localhost (PROCESS_LOCAL) 16/01/27 16:55:29 INFO TaskSetManager: Serialized task 0.0:0 as 2003 bytes in 1 ms 16/01/27 16:55:29 INFO Executor: Running task ID 1 16/01/27 16:55:29 INFO BlockManager: Found block broadcast_0 locally 16/01/27 16:55:29 INFO BlockFetcherIterator$BasicBlockFetcherIterator: maxBytesInFlight: 50331648, targetRequestSize: 10066329 16/01/27 16:55:29 INFO BlockFetcherIterator$BasicBlockFetcherIterator: Getting 1 non-empty blocks out of 1 blocks 16/01/27 16:55:29 INFO BlockFetcherIterator$BasicBlockFetcherIterator: Started 0 remote fetches in 6 ms For : 5 Programs : 1 gladly : 1 Because : 1 The : 1 agree : 1 cluster. : 1 webpage : 1 its : 1 under : 2 legal : 1 1.x, : 1 have : 2 Try : 1 MRv1, : 1 add : 2 through : 1 several : 1 This : 2 Whether : 1 "yarn-cluster" : 1 % : 2 storage : 1 To : 2 setting : 1 any : 2 Once : 1 application : 1 explicitly, : 1 use: : 1 prefer : 1 SparkPi : 2 version : 3 file : 1 documentation, : 1 Along : 1 the : 28 entry : 1 author. : 1 are : 2 systems. : 1 params : 1 not : 2 different : 1 refer : 1 Interactive : 2 given. : 1 if : 5 file's : 1 build : 3 when : 2 be : 2 Tests : 1 Apache : 6 ./bin/run-example : 2 programs, : 1 including : 1 <http://spark.apache.org/documentation.html>. : 1 Spark. : 2 2.0.5-alpha : 1 package. : 1 1000).count() : 1 project's : 3 Versions : 1 HDFS : 1 license : 3 email, : 1 <artifactId>hadoop-client</artifactId> : 1 >>> : 1 "org.apache.hadoop" : 1 <version>1.2.1</version> : 1 programming : 1 Testing : 1 run: : 1 environment : 2 pull : 3 1000: : 2 v2 : 1 <groupId>org.apache.hadoop</groupId> : 1 Please : 1 is : 6 run : 7 URL, : 1 SPARK_HADOOP_VERSION=2.2.0 : 1 threads. : 1 same : 1 MASTER=spark://host:7077 : 1 on : 4 built : 2 against : 1 tests : 1 examples : 2 at : 1 usage : 1 using : 3 Maven, : 1 talk : 1 submitting : 1 Shell : 2 class : 2 adding : 1 abbreviated : 1 directory. : 1 README : 1 overview : 1 dependencies. : 1 `examples` : 2 example: : 1 ## : 9 N : 1 set : 2 use : 3 Hadoop-supported : 1 running : 1 find : 1 via : 2 contains : 1 project : 3 SPARK_HADOOP_VERSION=2.0.5-alpha : 1 Pi : 1 need : 1 request, : 1 or : 5 </dependency> : 1 <class> : 1 uses : 1 "hadoop-client" : 2 Hadoop, : 1 (You : 1 requires : 1 Contributions : 1 SPARK_HADOOP_VERSION=1.2.1 : 1 Documentation : 1 of : 3 cluster : 1 using: : 1 accepted : 1 must : 1 "1.2.1" : 1 1.2.1 : 2 built, : 1 Hadoop : 11 means : 1 Spark : 12 this : 4 Python : 2 original : 2 YARN, : 3 2.1.X, : 1 pre-built : 1 [Configuration : 1 locally. : 1 ./bin/pyspark : 1 A : 1 locally : 2 # : 6 sc.parallelize(1 : 1 only : 1 library : 1 Configuration : 1 basic : 1 MapReduce : 2 documentation : 1 first : 1 which : 2 following : 2 changed : 1 also : 4 Cloudera : 4 without : 1 should : 2 for : 1 "yarn-client" : 1 [params]`. : 1 `SPARK_YARN=true`: : 1 setup : 1 mesos:// : 1 <http://spark.apache.org/> : 1 GitHub : 1 requests : 1 latest : 1 your : 6 test : 1 MASTER : 1 example : 3 authority : 1 SPARK_YARN=true : 3 scala> : 1 guide](http://spark.apache.org/docs/latest/configuration.html) : 1 configure : 1 artifact : 1 can : 7 About : 1 you're : 1 instructions. : 1 do : 3 2.0.X, : 1 easiest : 1 no : 1 When : 1 how : 1 newer : 1 `./bin/run-example : 1 source : 2 copyrighted : 1 material : 2 Note : 1 2.10. : 1 by : 3 please : 1 Lightning-Fast : 1 spark:// : 1 so. : 1 Scala : 3 Alternatively, : 1 If : 1 Cluster : 1 variable : 1 submit : 1 an : 2 thread, : 1 them, : 1 2.2.X : 1 And : 1 application, : 1 return : 2 developing : 1 ./bin/spark-shell : 1 `<dependencies>` : 1 warrant : 1 "local" : 1 start : 1 You : 4 <dependency> : 1 Spark](#building-spark). : 1 one : 2 help : 1 with : 8 print : 1 CDH : 4 2.2.X, : 1 $ : 5 SPARK_HADOOP_VERSION=2.0.0-mr1-cdh4.2.0 : 1 in : 4 Contributing : 1 downloaded : 1 versions : 4 online : 1 `libraryDependencies`: : 1 - : 1 section: : 1 4.2.0 : 2 comes : 1 [building : 1 Python, : 1 0.23.x, : 1 `SPARK_HADOOP_VERSION` : 1 Many : 1 other : 4 Running : 1 sbt/sbt : 5 building : 1 way : 1 SBT, : 1 Online : 1 change : 1 MRv2, : 1 contribution : 1 from : 1 Example : 1 POM : 1 open : 2 sc.parallelize(range(1000)).count() : 1 you : 8 runs. : 1 Building : 1 protocols : 1 that : 4 a : 5 their : 1 guide, : 1 name : 1 example, : 1 state : 2 work : 2 will : 1 instance: : 1 to : 19 v1 : 1 core : 1 : 149 license. : 1 "local[N]" : 1 programs : 2 package.) : 1 shell: : 2 ./sbt/sbt : 2 assembly : 6 specify : 1 and : 9 Computing : 1 command, : 2 SPARK_HADOOP_VERSION=2.0.0-cdh4.2.0 : 1 sample : 1 requests, : 1 16/01/27 16:55:29 INFO Executor: Serialized size of result for 1 is 825 16/01/27 16:55:29 INFO Executor: Sending result for 1 directly to driver 16/01/27 16:55:29 INFO Executor: Finished task ID 1 16/01/27 16:55:29 INFO DAGScheduler: Completed ResultTask(0, 0) 16/01/27 16:55:29 INFO DAGScheduler: Stage 0 (foreach at WordCount.scala:53) finished in 0.126 s 16/01/27 16:55:29 INFO TaskSetManager: Finished TID 1 in 123 ms on localhost (progress: 1/1) 16/01/27 16:55:29 INFO TaskSchedulerImpl: Removed TaskSet 0.0, whose tasks have all completed, from pool 16/01/27 16:55:29 INFO SparkContext: Job finished: foreach at WordCount.scala:53, took 0.521885349 s 16/01/27 16:55:29 INFO SparkUI: Stopped Spark web UI at http://Frank:4040 16/01/27 16:55:29 INFO DAGScheduler: Stopping DAGScheduler 16/01/27 16:55:31 INFO MapOutputTrackerMasterActor: MapOutputTrackerActor stopped! 16/01/27 16:55:31 INFO ConnectionManager: Selector thread was interrupted! 16/01/27 16:55:31 INFO ConnectionManager: ConnectionManager stopped 16/01/27 16:55:31 INFO MemoryStore: MemoryStore cleared 16/01/27 16:55:31 INFO BlockManager: BlockManager stopped 16/01/27 16:55:31 INFO BlockManagerMasterActor: Stopping BlockManagerMaster 16/01/27 16:55:31 INFO BlockManagerMaster: BlockManagerMaster stopped 16/01/27 16:55:31 INFO SparkContext: Successfully stopped SparkContext 16/01/27 16:55:31 INFO RemoteActorRefProvider$RemotingTerminator: Shutting down remote daemon. 16/01/27 16:55:31 INFO RemoteActorRefProvider$RemotingTerminator: Remote daemon shut down; proceeding with flushing remote transports. View Code 2、如果想要在集群上搞Spark的话: 1 package com.df.spark 2 import org.apache.spark.SparkConf 3 import org.apache.spark.SparkContext 4 import org.apache.spark.SparkContext._ 5 import org.apache.spark.rdd.RDD 6 /** 7 * 使用Scala开发集群运行的Spark WordCount程序 8 * @author liuzhongfeng 9 */ 10 object WordCount_Cluster { 11 def main(args: Array[String]){ 12 /** 13 * 第一步:创建Spark的配置对象SparkConf,设置Spark程序的运行时的配置信息 14 * 例如说通过setMaster来设置程序要链接的Spark集群的Master的URL,如果设置为local, 15 * 则代表Spark程序在本地运行,特别适合机器配置条件差的初学者。 16 */ 17 val conf=new SparkConf()//创建SparkConf对象 18 conf.setAppName("My First Spark App!")//设置应用程序的名称,在程序运行的监控界面可以看到名称 19 conf.setMaster("spark://cMaster-spark:7077")//程序此时运行在Spark集群 20 21 /** 22 * 第二步:创建SparkContext对象, 23 * SparkContext是Spark程序所有功能的唯一入口,无论是采用Scala、Java、Python、R等都必须有一个SparkContext 24 * SparkContext的核心作用:初始化Spark应用程序运行所需要的核心组件,包括DAGScheduler、TaskScheduler、SchedulerBacken 25 * 同时还会负责Spark程序往Master注册程序等 26 * SparkContext是整个Spark应用程序中至关重要的一个对象 27 */ 28 val sc=new SparkContext(conf)//通过创建SparkContext对象,通过传入SparkConf实例来定制Spark运行的具体参数和配置信息 29 30 /** 31 * 第三步:根据具体的数据来源(HDFS、HBase、Local FS、S3)通过SparkContext来创建RDD 32 * RDD的创建基本有三种方式:根据外部的数据来源(例如HDFS)、根据Scala集合、由其他的RDD操作 33 * 数据会被RDD划分称为一些列的Partitions,分配到每个Partition的数据属于一个Task的处理范畴 34 */ 35 36 val lines=sc.textFile("/in", 1)//导入你的hdfs上的文件 37 /** 38 * 第四步:对初始的RDD进行Transformation级别的处理,例如map、filter等高阶函数的编程,来进行具体的数据计算 39 * 第4.1步:将每一行的字符串拆分成单个的单词 40 */ 41 val words=lines.flatMap { line => line.split(" ")}//对每一行的字符串进行单词切分,并把所有行的切分结果通过flat合并成一个大的单词集合 42 /** 43 * 第四步:对初始的RDD进行Transformation级别的处理,例如map、filter等高阶函数的编程,来进行具体的数据计算 44 * 第4.2步:在单词切分的基础上,对每个单词实例的计数为1,也就是word=>(word,1) 45 */ 46 val pairs=words.map { word => (word,1) } 47 /** 48 * 第四步:对初始的RDD进行Transformation级别的处理,例如map、filter等高阶函数的编程,来进行具体的数据计算 49 * 第4.3步:在每个单词实例计数为1的基础之上统计每个单词在文件中出现的总次数 50 */ 51 val wordCounts=pairs.reduceByKey(_+_)//对相同的Key,进行Value的累计(包括Local和Reducer级别同时Reduce) 52 wordCounts.collect.foreach(wordNumberPair=>println(wordNumberPair._1+" : "+wordNumberPair._2)) 53 sc.stop() 54 } 55 } View Code (1)将你的程序打包到你的linux,运行Spark集群。具体的打包过程为:右键你需要打包的文件名如:WordCount.scala,然后-->Export-->Java-->JAR file,选择想要导出的路径,点击OK! (2)然后导出的包复制到你的linux系统上,我的目录为 然后打开你的hadoop集群和spark集群,用jps查看一下。 然后执行命令: 此时运行成功!当神已无能为力,那便是魔渡众生

优秀的个人博客,低调大师

docker 中 NGINX+PHP+MYSQL+REDIS+Elasticsearch 环境搭建 (windows系统)

windows 下 boot2docker fox.风来了 1.boot2docker 先安装这个: Docker虽然是Linux内核,但是官方还是支持了Windows和OS X。Boot2Docker官方下载地址:https://github.com/boot2docker/windows-installer/releasesBoot2Docker官方安装手顺:http://docs.docker.com/installation/windows/ 启动方法 windows 桌面 打开Boot2Docker Start 这个快捷方式,出现的命令界面中执行 2.启动不成功 #先关闭 boot2docker stop #然后启动 boot2docker start 如果出现以下错误 Writing /Users/mylxsw/.boot2docker/certs/boot2docker-vm/ca.pem Writing /Users/mylxsw/.boot2docker/certs/boot2docker-vm/cert.pem Writing /Users/mylxsw/.boot2docker/certs/boot2docker-vm/key.pem export DOCKER_HOST=tcp://192.168.59.103:2376 export DOCKER_CERT_PATH=/Users/mylxsw/.boot2docker/certs/boot2docker-vm export DOCKER_TLS_VERIFY=1解决方法: 设置三个变量 可以手动 到WINDOWS里面设置也可以,用以下命令设置 eval "$(boot2docker shellinit)" #命令查看状态 bash-4.3$ boot2docker status running #命令查看版本 bash-4.3$ boot2docker version Boot2Docker-cli version: v1.8.0 Git commit: 9a26066 bash-4.3$ 3.进入docker boot2docker ssh 4.文件夹项目 windows boot2docker 默认共享 /c/当前用户名 例如(我的本地):/c/Users/lanmps/ 如果在一个分区可以使用 mklink /H "C:\Users\lanmps\git" "C:\git" MKLINK [[/D] | [/H] | [/J]] Link Target /D 创建目录符号链接。默认为文件 符号链接。 /H 创建硬链接,而不是符号链接。 /J 创建目录联接。 Link 指定新的符号链接名称。 Target 指定新链接引用的路径 (相对或绝对)。 5. 设置其他盘文件夹为 项目文件夹 5.1 先关闭boot2docker windows 桌面 打开Boot2Docker Start 这个快捷方式,出现的命令界面中执行 boot2docker stop 5.2 设置共享文件夹 在虚拟机管理界面中, boot2docker-vm 一定要是 关闭状态(图中是我已经设置好的所以是运行的) 设置的共享文件夹名称 c/Users 不能改变,如果改变了一定要改回来 5.3 boot2docker启动 boot2docker start启动成功后,如果有问题, 重复 2 3 两个步骤就可以了 #进入docker boot2docker ssh #进入共享目录 cd /c/Users #查看列表 ll 发现e:\git目录下的全都有了 6.注意 因为boot2docker使用的是 内存 linux,所以只要关机/重启 时候,没有把该 boot2docker-vm 设置为 休眠或者 快照,那么关机/重启 之后,虚拟机内所有数据全部都是不存在的。 x.镜像下载 和 linux 一样 http://blog.csdn.net/fenglailea/article/details/50100311

优秀的个人博客,低调大师

docker 中 NGINX+PHP+MYSQL+REDIS+Elasticsearch 环境搭建 (linux系统)

项目中N次使用PHP+MYSQL+NGINX+REDIS+ Elasticsearch,为了方便所以使用了docker fox.风来了 完整版地址: http://blog.csdn.net/fenglailea/article/details/50451555 目前是 LINUX 下,稍后制作 WINDOWS下的 1.docker 环境安装 http://blog.csdn.net/fenglailea/article/details/44886427 推荐使用方法二 2.下载镜像 国外和国内的docker hub 是两种速度体验,访问国外的HUB 的时间,可以和朋友一起搓一顿都够了。 可以使用国内的docker HUB 使用国外下载 docker hub 时,有时会报错,比如超时,或者有代理什么的,直接PASS,重新PULL 2.1 nginx+php+redis 镜像下载 docker pull foxiswho/docker-nginx-php大约2小时,docker hub 国内没有服务器就是慢,可以使用国内的一些docker 仓库如 阿里云等 2.2elasticsearch 镜像下载 docker pull elasticsearch大约 1 小时 2.3 mysql 或其他 docker pull mysql:5.5.27大约1小时 3. 启动设置容器 3.1elasticsearch docker run --name es -p 9200:9200 -p 9300:9300 -d elasticsearch:latest --name 容器别名 -p 主机端口:容器端口 -d 镜像 3.2 mysql docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.6.27 3.3 nginx+php+redis docker run --name web --link mysql:db --link es:es -p 8080:80 -v /www/wwwroot/web:/usr/share/nginx/html -d foxiswho/docker-nginx-php:latest--link 容器内之间链接,比如访问数据库 原来 是 localhost或者 127.0.0.1 ,现在只要填写 db 就可以了 -v 本地目录:容器目录 ,例如 本地目录/www/wwwroot/web 注意 本地 目录设置权限和用户组 chown -R www-data:www-data/www/wwwroot/web chmod -R 777/www/wwwroot/web 这个时候访问本机 127.0.0.1:8080 就可以看到 你的项目站点了 4.容器操作 4.1 已启动的容器 如果启动成功了使用命令就可以看到已启动的容器: docker ps 4.1 所有容器 docker ps -a

优秀的个人博客,低调大师

centos+scala2.11.4+hadoop2.3+spark1.3.1环境搭建

一、Java安装 1、安装包准备: 首先到官网下载jdk,http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html,我下载jdk-7u79-linux-x64.tar.gz,下载到主目录 2、解压安装包 通过终端在/usr/local目录下新建java文件夹,命令行: sudo mkdir /usr/local/java 然后将下载到压缩包拷贝到java文件夹中,命令行: 进入jdk压缩包所在目录 cp jdk-7u79-linux-x64.tar.gz /usr/local/java 然后进入java目录,命令行: cd /usr/local/java 解压压缩包,命令行: sudo tar xvf jdk-7u79-linux-x64.tar.gz 然后可以把压缩包删除,命令行: sudo rm jdk-7u79-linux-x64.tar.gz 3、设置jdk环境变量 这里采用全局设置方法,就是修改etc/profile,它是是所有用户的共用的环境变量 sudo vi /etc/profile 打开之后在末尾添加 export JAVA_HOME=/usr/local/java/jdk1.7.0_79 export JRE_HOME=/usr/local/java/jdk1.7.0_79/jre export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin: $PATH 使profile生效 source /etc/profile 4、检验是否安装成功 在终端 java -version 显示如下 java version "1.7.0_79"Java(TM) SE Runtime Environment (build 1.7.0_79-b15)Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode) PS:后来发现直接rpm包jdk-7u79-linux-x64.rpm桌面双击安装也OK,^_^ 二、scala2.11.4安装 1、安装包准备: 首先到官网下载scala,http://www.scala-lang.org/,下载scala-2.11.4.tgz,并复制到/usr/bib 2、解压安装包 tar -zxf scala-2.11.4.tgz 3、设置scala环境变量 这里采用全局设置方法,就是修改etc/profile,它是是所有用户的共用的环境变量 sudo vi /etc/profile 打开之后在末尾添加 export SCALA_HOME=/usr/lib/scala-2.11.4export PATH=$SCALA_HOME/bin:$PATH 使profile生效 source /etc/profile 4、检验是否安装成功 在终端 scala -version 显示如下 Scala code runner version 2.11.4 -- Copyright 2002-2013, LAMP/EPFL 三、hadoop2.3安装 1、安装包准备: hadoop版本有点混乱,除了http://hadoop.apache.org/有众多版本之外,还有Cloudera公司的CDH版本,请从观望下载hadoop-2.3.0.tar.gz或者下载CDH版本hadoop-2.3.0-cdh5.0.0.tar.gz,本文环境是在hadoop-2.3.0-cdh5.0.0.tar.gz之上建立。 2、解压安装包 下载安装包之后复制到/usr目录。 tar -zxf hadoop-2.3.0-cdh5.0.0.tar.gz 解压后生成hadoop-2.3.0-cdh5.0.0,重命名为hadoop-2.3.0。 3、配置环境 这里采用全局设置方法,就是修改etc/profile,它是是所有用户的共用的环境变量 sudo vi /etc/profile 打开之后在末尾添加 export HADOOP_HOME=/home/zero/hadoop/hadoop-2.3.0 export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin 使profile生效 source /etc/profile 3、建立hadoop用户 useradd hadoop passwd hadoop 3、配置SSH免登录 su hadoop //切换到hadoop用户目录下 ssh-keygen-t rsa(一路回车 生成密钥) cd/home/hadoop/.ssh/ scp id_rsa.pub hadoop@slave1:/home/hadoop/.ssh/ mv id_rsa.pub authorized_keys 四、spark1.3.1安装 1、安装包准备: spark官网下载spark-1.3.1-bin-hadoop2.3.tgz。 2、解压安装包 下载安装包之后复制到/usr目录。 tar -zxf spark-1.3.1-bin-hadoop2.3.tgz 解压后生成spark-1.3.1-bin-hadoop2.3,重命名为spark-1.3.1-hadoop2.3。 3、配置环境 这里采用全局设置方法,就是修改etc/profile,它是是所有用户的共用的环境变量 sudo vi /etc/profile 打开之后在末尾添加 export SPARK_HOME=/usr/spark-1.3.1-hadoop2.3export PATH=$SPARK_HOME/bin:$PATH 使profile生效 source /etc/profile 4、配置环境 这里采用全局设置方法,就是修改etc/profile,它是是所有用户的共用的环境变量 sudo vi /etc/profile 打开之后在末尾添加 export SPARK_HOME=/usr/spark-1.3.1-hadoop2.3export PATH=$SPARK_HOME/bin:$PATH 使profile生效 source /etc/profile 配置Spark环境变量 cd $SPARK_HOME/confcp spark-env.sh.template spark-env.sh vi spark-env.sh 添加以下内容: export JAVA_HOME=/usr/local/java-1.7.0_79 export HADOOP_HOME=/usr/hadoop-2.3.0 export HADOOP_CONF_DIR=/etc/hadoop/conf export SCALA_HOME=/usr/lib/scala-2.11.4 export SPARK_HOME=/usr/spark-1.3.1-hadoop2.3 export SPARK_MASTER_IP=127.0.0.1 export SPARK_MASTER_PORT=7077 export SPARK_MASTER_WEBUI_PORT=8099 export SPARK_WORKER_CORES=3 //每个Worker使用的CPU核数 export SPARK_WORKER_INSTANCES=1 //每个Slave中启动几个Worker实例 export SPARK_WORKER_MEMORY=10G //每个Worker使用多大的内存 export SPARK_WORKER_WEBUI_PORT=8081 //Worker的WebUI端口号 export SPARK_EXECUTOR_CORES=1 //每个Executor使用使用的核数 export SPARK_EXECUTOR_MEMORY=1G //每个Executor使用的内存 export SPARK_CLASSPATH=/usr/spark-1.3.1-hadoop2.3/lib/sequoiadb-driver-1.12.jar:/usr/spark-1.3.1-hadoop2.3/lib/spark-sequoiadb_2.11.2-1.12.jar //使用巨衫数据库export SPARK_CLASSPATH=$SPARK_CLASSPATH:$CLASSPATHexport LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$HADOOP_HOME/lib/nativ 配置Slave cp slaves.template slavesvi slaves 添加以下内容:localhost 5、启动Spark Master cd $SPARK_HOME/sbin/./start-master.sh 6、启动Spark Slave cd $SPARK_HOME/sbin/./start-slaves.sh

优秀的个人博客,低调大师

Elasticsearch、Logstash、Kibana搭建统一日志分析平台

ELKstack是Elasticsearch、Logstash、Kibana三个开源软件的组合。目前都在Elastic.co公司名下。ELK是一套常用的开源日志监控和分析系统,包括一个分布式索引与搜索服务Elasticsearch,一个管理日志和事件的工具logstash,和一个数据可视化服务Kibanalogstash_1.5.3 负责日志的收集,处理和储存elasticsearch-1.7.2 负责日志检索和分析kibana-4.1.2-linux-x64.tar.gz 负责日志的可视化redis-2.4.14 DB以及日志传输的通道来处理 用一张图来表示他们之间的关系 此文以两个服务器为例来部署 服务器A:192.168.0.1 java elasticsearch redis kibana logstash(agent indexer) 服务器B:192.168.0.2 java logstash(agent) 首先安装服务器A相关软件 一、安装基础软件 yum -y install curl wget lrzsz axel 二、安装配置redis服务 1、安装tcl8.6.1 a) tar -xf tcl8.6.1-src.tar.gz --strip-components=1 b) cd tcl8.6.1/unix c) ./configure --prefix=/usr/local d) make e) make test f) make install g) make install-private-headers h) ln -v -sf tclsh8.6 /usr/bin/tclsh i) chmod -v 755 /usr/lib/libtcl8.6.so(可选,并且如报找不到文件,没关系) 2、安装redis-3.0.2 wget http://download.redis.io/releases/redis-3.0.2.tar.gz tar xzf redis-3.0.2.tar.gz /usr/local/redis cd redis-3.0.2 make MALLOC=libc make test make install 2、配置redis a) mkdir /etc/redis b) mkdir /var/redis c) cp utils/redis_init_script /etc/init.d/redis d) vim /etc/init.d/redis头部添加: #chkconfig: 345 60 60 #!/bin/bash e) mkdir /var/redis/6379 f) cp redis.conf /etc/redis/6379.conf g) vim /etc/redis/6379.conf #设置daemonize为yes #设置pidfile为/var/run/redis_6379.pid #设置loglevel #设置logfile为/var/log/redis_6379.log #设置dir为/var/redis/6379 h) sysctl vm.overcommit_memory=1 i) chkconfig --add redis j) chkconfig redis on 3、重启服务 service redis start/stop 4、查看进程和端口1)查看进程 ps -ef |grep redis root 31927 25099 0 18:26 pts/0 00:00:00 vi /etc/init.d/redis 2)查看端口 netstat -tupnl |grep redis tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 31966/redis-server tcp 0 0 :::6379 :::* LISTEN 31966/redis-server 三、安装java环境 1、安装包 yum -y list java* yum -y install openjdk-7-jdk 2、查看版本 java -version java version "1.7.0_91" OpenJDK Runtime Environment (rhel-2.6.2.2.el6_7-x86_64 u91-b00) OpenJDK 64-Bit Server VM (build 24.91-b01, mixed mode) 四、安装elasticsearch 1、下载elasticsearch wget https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.7.2.noarch.rpm 2、安装elasticsearch rpm -ivh elasticsearch-1.7.2.noarch.rpm 3、配置1)备份配置 cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak 2)修改配置 echo "network.bind_host: 192.168.0.1" >> /etc/elasticsearch/elasticsearch.yml 4、启动elasticsearch服务 /etc/init.d/elasticsearch start /etc/init.d/elasticsearch stop 5、查看进程和端口 1)查看进程 ps -ef |grep java 2)查看端口 netstat -tupnl |grep java 6、测试 curl -X GET http://192.168.54.147:9200 { "status" : 200, "name" : "Miguel O'Hara", "cluster_name" : "elasticsearch", "version" : { "number" : "1.7.2", "build_hash" : "e43676b1385b8125d647f593f7202acbd816e8ec", "build_timestamp" : "2015-09-14T09:49:53Z", "build_snapshot" : false, "lucene_version" : "4.10.4" }, "tagline" : "You Know, for Search" } 7、添加到开机启动 update-rc.d elasticsearch defaults update-rc.d: using dependency based boot sequencing 五、安装logstash 1、下载logstash wget https://download.elastic.co/logstash/logstash/packages/centos/logstash-1.5.4-1.noarch.rpm 2、安装logstash rpm -ivh logstash-1.5.4-1.noarch.rpm 3、配置(默认没有这个配置文件) vim /etc/logstash/conf.d/logstash_indexer.conf input { redis { host => "192.168.0.1" data_type => "list" key => "logstash:redis" type => "redis-input" port => "6379" } } output { elasticsearch { host => "192.168.0.1" } } 4、启动服务 /etc/init.d/logstash start 5、使用jps -mlv或ps -ef来查看下进程 ps -ef|grep logst 6、设置开机启动 update-rc.d logstash defaults update-rc.d: using dependency based boot sequencing 六、安装kibana(前端web) 1、下载 wget https://download.elastic.co/kibana/kibana/kibana-4.1.2-linux-x64.tar.gz 2、解压到指定目录 tar zxvf kibana-4.1.2-linux-x64.tar.gz -C /opt 3、创建日志目录 mkdir -p /opt/kibanalog 4、配置1)备份配置 cp /opt/kibana-4.1.2-linux-x64/config/kibana.yml /opt/kibana-4.1.2-linux-x64/config/kibana.yml.bak 2)修改配置 sed -i 's!^elasticsearch_url: .*!elasticsearch_url: "http://192.168.0.1:9200"!g' /opt/kibana-4.1.2-linux-x64/config/kibana.yml sed -i 's!^host: .*!host: "192.168.0.1"!g' /opt/kibana-4.1.2-linux-x64/config/kibana.yml 5、启动服务 cd /opt/kibanalog && nohup /opt/kibana-4.1.2-linux-x64/bin/kibana & 6、查看进程和端口1)查看进程 ps aux |grep kibana 2)查看端口 netstat -tupnl|grep 5601 7、在windows上访问 http://192.168.0.1:5601 8、设置开机启动 echo "cd /opt/kibanalog && nohup /opt/kibana-4.1.2-linux-x64/bin/kibana &" >> /etc/rc.local 到此服务器A的相关软件全部安装完成; 现在安装日志采集端的程序(服务器B),可以有多个 clientB安装配置logstash(agent) 1、安装java环境 yum -y list java* yum -y install openjdk-7-jdk 1、下载logstash wget https://download.elastic.co/logstash/logstash/packages/centos/logstash-1.5.4-1.noarch.rpm 2、安装logstash rpm -ivh logstash-1.5.4-1.noarch.rpm 3、配置(默认没有这个配置文件)1)配置logstash_agent vim /etc/logstash/conf.d/logstash_agent.conf input { file { path => "/tmp/*.log" start_position => beginning } } output { redis { host => "192.168.0.1" data_type => "list" key => "logstash:redis" } } 5、启动服务 /etc/init.d/logstash start logstash started. 6、使用jps -mlv或ps -ef来查看下进程 ps -ef|grep logst 7、设置开机启动 update-rc.d logstash defaults update-rc.d: using dependency based boot sequencing 至此服务器B也安装配置完成,根据日志采集端的需要可以配置N个服务B 如何查看日志: 1、查看redis日志 cat /var/log/redis/redis-server.log 2、查看elasticsearch日志 cat /var/log/elasticsearch/elasticsearch.log tail -300f /var/log/elasticsearch/elasticsearch.log 3、查看logstash日志 cat /var/log/logstash/logstash.errtail -30f /var/log/logstash/logstash.err 4、查看kibana日志 cat /opt/kibanalog/nohup.out tail -30f /opt/kibanalog/nohup.out 错误处理 1)unable to fetch mapping, do you have indices matching the pattem? kibana 报这个错误就是因为没有从logstash 过来任何数据一般检查一下数据传输

优秀的个人博客,低调大师

Discord x Pulsar: 使用Pulsar、Flink和Iceburg搭建流式机器学习平台

本文整理自 Discord 机器学习工程师 David Christle 在 Pulsar Summit NA 上的演讲内容,一起来看Discord 是如何实现兼顾安全和个性化功能的实时流式机器学习平台的。 1. 背景 Discord 是一个实时⾳视频通信平台,⽀持⽂本/语⾳/视频频道交流,广泛应用于1对1、中小团队或⼤型社区的在线交流场景,能支持用户从私密聊天到百万级社区通信的不同需求。平台于2015年创立,最初在游戏社区中流行起来,目前已扩展到多个领域,月活用户达1.5亿。 2. 挑战 Discord 面临的核心挑战是升级其实时流式机器学习平台,以应对安全和个性化需求,例如限制垃圾信息访问或保护用户账户免遭入侵。其原先架构是为启发式规则设计的,而非机器学习。为了寻求一个稳健、可扩展且实时的解决方案,他们探索了集成 Apache Pulsar、Flink和 Iceberg 的方案。 2.1 需求 “该系统的运行速度和可扩展性是关键所在。” “该框架非常强大,支持过滤、转换、连接、聚合等操作;你在数据处理方式上拥有极大的自由度,即使在实时场景下效率也非常高。这些管道可以非常简单,比如事件采集和去重;也可以用来完成 ETL 任务。我们能在流数据上以极低延迟进行机器学习。” 安全 反垃圾邮件:通过跨职能团队协作,最大程度避免⽤户对垃圾内容和垃圾邮件发送者的接触 账户安全:主动保护⽤户账户免遭⼊侵,并在⼊侵发⽣时实现快速检测 处理速度和可扩展性:解决⽅案的速度和可扩展性⾄关重要,直接影响⽤户体验和安全防护效果 个性化 发现服务器(Discord Server,类似兴趣组):帮助⽤户快速发现感兴趣的新服务器 通知优化:实时确定最佳通知内容和发送时机,确保信息时效性 响应速度:需要在⼏分钟内完成相关计算,避免内容过时失效 2.2 痛点 规则引擎不适合ML: 专为人工规则设计,无法处理历史数据,基础计算困难,导致新特征上线延迟长达一个月。 批处理延迟高、整合难: 数据获取的延迟依赖批处理的效率,手动拼接批处理与实时特征易错难调,模型问题诊断困难。 微服务臃肿低效: 每个模型独立部署微服务带来高复杂度与部署负担,响应速度跟不上威胁变化,灵活性牺牲了实时性。 3. 解决方案 Discord 采用了基于 Pulsar、Flink和 Iceberg的实时流处理方案。其中,从 Google Cloud Pub/Sub(GCP) 迁移到 Pulsar 是一个关键决策,显著提升了效率和可扩展性。Flink 和 Iceberg 则在分析实时数据、管理历史事件以及回填(backfill)方面发挥了至关重要的作用。 “对我们而言,Pulsar 的关键优势在于它不仅拥有队列传输模式(这在 Discord 非常常用),还提供了分区式传输模式。” “Pulsar分区传输在保障顺序性的同时,还能实现极低的延迟 ;我们利用这一点实现了近乎即时的水位线(watermark)体验,并在低延迟的情况下获得了准确的结果。” GCP 提供了一种无状态且无序的内部事件流量托管方案,适用于不关⼼时间顺序的宽泛分发队列、大规模并⾏处理的⽆状态任务,但存在以下问题: Connector:Flink-PubSub连接器维护不⾜且过时;需要依赖开源PR才能实现统⼀批流API 高延迟:高达20-40s的延迟 高成本:随着规模扩大成本明显拉高 在这种场景下,Pulsar 凭借丰富的 Connector支持、分区和队列双模式、存算分离、原生多租户支持及优秀的低延迟表现从众多方案中脱颖而出。 基于业务需求,Discord的工程师团队构建了一个成熟精简、高效灵活且突破传统限制的生产级架构,Pulsar在其中扮演了实时数据主干网与流批融合关键枢纽的角色。 精简架构与生产就绪的ML生态系统: 该方案显著简化了架构,减少了部署组件。工程师无需关注底层数据来源的复杂性,系统自动处理数据分区和可靠交付。数据处理流程清晰高效:利用Flink作业进行实时的特征计算(过滤、聚合、连接等),并将长期运行(数月)的计算结果直接输出到Iceberg表中,作为高质量的训练数据集。模型部署采用ONNX格式,兼容XGBoost、PyTorch、TensorFlow等主流框架,其二进制文件可直接嵌入Flink作业运行,完全摒弃了传统独立的模型服务,这不仅大幅降低了系统复杂度和潜在错误,也使得开发调试更简单快速,显著提升了开发效率。 灵活流处理与混合源能力:系统的关键创新在于利用Flink的HybridSource技术,无缝融合了批处理源(Iceberg)和流处理源(Pulsar)。Pulsar作为核心的实时数据流来源,与Iceberg的历史数据结合得天衣无缝。系统能够在预定时间戳自动在批处理和流处理源之间透明切换,这对工程师完全隐藏了底层复杂性。这种设计确保了开发环境与生产环境数据源的高度一致性,工程师可以直接使用Pulsar流和Iceberg表进行开发测试,并支持从历史任意时间点(数月甚至一年前)启动作业,进行回溯或调试。即使在处理海量数据时,基于Pulsar提供的稳定实时流和Iceberg的可靠存储,系统也表现出极强的稳定性和增量处理能力。 突破实时状态与回填限制:该架构彻底解决了实时ML系统常见的状态管理和历史数据回填(backfill)难题。得益于流批一体的设计(核心是Pulsar流与Iceberg表的融合)和模型内嵌于Flink作业的简化架构(模型仅是作业中的一个“小方块”),系统发生变更后,历史数据的回填速度极快,仅需3-4小时即可完成。这使得快速训练新模型并部署上线观察效果成为现实,极大加速了模型迭代周期。运维层面,通过自定义Bazel规则简化了ML工程师的工作流,并利用Flink Kubernetes Operator自动化管理作业的完整生命周期(包括部署、保存点、高可用性),确保了系统的稳健运行。Pulsar提供的持久化、可重放实时流,是支撑快速、稳定回填的关键基础设施之一。 关键安全指标提升与广泛适用性:此系统在Discord最核心的安全场景(如垃圾邮件过滤和账户保护)中实现了两位数的关键指标提升,并成功将平台超过60%的安全评分决策从传统启发式规则迁移至实时ML模型驱动。这得益于Pulsar提供的高吞吐、低延迟实时数据流,使得系统能够在虚假账户和僵尸网络发起攻击、造成实际损害前就进行主动检测与拦截,显著增强了平台的实时防御能力。更重要的是,该架构设计具备高度通用性,其基于成熟开源技术栈(Flink、Pulsar、Iceberg)的精简模型和流批一体能力,使其可轻松扩展应用于A/B测试、用户实验、个性化推荐等多个场景。 4. 结语 Discord 的成功实践充分验证了由 Apache Pulsar、Flink 和 Iceberg 构建的实时机器学习平台的高效性与强大潜力。利用 Pulsar 作为高吞吐、低延迟的实时数据主干网,无缝连接流处理与批处理,为 Flink 的实时特征计算和模型嵌入提供了坚实基础。David Christle 的分享不仅展示了这一技术栈(尤其是 Pulsar 在流批融合中的关键作用)的强大实力,更凸显了小型团队基于成熟开源技术打造精简、高效生产系统的卓越能力。该案例也为业界探索实时机器学习融合、构建以可靠消息流(如 Pulsar)为核心的实时数据管道提供了极具参考价值的范本。

优秀的个人博客,低调大师

雷池 WAF 离线安装搭建全流程指南(2025 年最新版)

一、环境要求与准备工作 系统要求 操作系统:Debian12+(推荐大版本一致,如内网使用debian12,在线主机也需debian系列) CPU架构:x86_64,需支持SSSE3指令集(可通过 lscpu | grep ssse3 验证) 最小配置:1核CPU/1GB内存/5GB磁盘空间(高流量场景需扩容) 软件依赖 Docker 20.10.14+ Docker Compose 2.0.0+ 若离线环境需提前准备以下文件: Docker RPM包及本地YUM源(含createrepo工具生成) 雷池镜像包( image.tar.gz ) compose.yaml 编排脚本 二、在线环境生成离线包(联网主机操作) 在可联网设备上操作 # 创建离线包目录 2mkdir docker-offline && cd docker-offline 3 4# 安装必要工具 5sudo apt-get update && sudo apt-get install -y curl gnupg 6 7# 添加DockerGPG密钥 8curl -fsSL http://mirrors.volces.com/docker/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg 9 10# 配置Docker镜像源 11echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] http://mirrors.volces.com/docker/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null 12 13# 更新软件源 14sudo apt-get update 15 16# 下载docker全家桶及核心依赖(--download-only确保仅下载) 17sudo apt-get download \ 18 docker-ce \ 19 docker-ce-cli \ 20 containerd.io \ 21 docker-buildx-plugin \ 22 docker-compose-plugin \ 23 ca-certificates \ 24 libltdl7 \ 25 libseccomp2 \ 26 iptables \ 27 libdevmapper1.02.1 28 29# 收集所有deb包 30cp /var/cache/apt/archives/*.deb . 31 32# 确保没有遗漏的依赖,可以通过apt-cache depends命令检查每个包的依赖关系 33for pkg in docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin; do 34 echo "Checking dependencies for $pkg" 35 apt-cache depends $pkg | grep "Depends" | sed "s/Depends: //" | xargs -I % sudo apt-get download % 36done 37 38# 校验文件完整性(可选) 39md5sum *.deb > checksum.md5 40 41# 输出收集到的.deb包列表以供确认 42echo "Collected .deb packages:" 43ls -lh *.deb 打包压缩离线包目录 1tar -cvf docker-offline.tar.gz docker-offline/ 三、离线环境部署(内网主机操作) 1.文件传输将打包好的docker-offline目录通过物理介质拷贝到目标服务器的/tmp目录,然后执行命令解压 tar -xvf docker-offline.tar.gz -C /tmp 2.安装Docker环境 1 cd /tmp/docker-offline 2 3 # 按依赖顺序安装 4 sudo dpkg -i /tmp/docker-offline/ca-certificates*.deb 5 sudo dpkg -i /tmp/docker-offline/lib*.deb 6 sudo dpkg -i containerd.io*.deb 7 sudo dpkg -i docker-ce-cli*.deb 8 sudo dpkg -i docker-ce*.deb 9 sudo dpkg -i docker-buildx-plugin_*.deb docker-compose-plugin_*.deb 10 sudo dpkg -i *.deb 3.服务管理 1 # 配置守护进程 2 sudo mkdir -p /etc/docker 3 sudo tee /etc/docker/daemon.json <<-'EOF' 4 { 5 "registry-mirrors": ["https://registry-docker.cdnmirror.top"] 6 } 7 EOF 8 9 # 启动服务 10 sudo systemctl enable docker 11 12 sudo systemctl start docker 13 14 # 验证版本 15 sudo docker --version 4.增强配置 1.用户权限配置 1# 添加当前用户到docker组 2sudo usermod -aG docker $USER 3 4# 立即生效需要重新登录 5newgrp docker || true 2.镜像预加载(可选) # 在在线环境提前拉取并打包镜像 docker pull ubuntu:22.04 docker save ubuntu:22.04 > ubuntu.tar # 在离线环境加载 sudo docker load -i ubuntu.tar 5.下载雷池镜像与安装启动服务 创建雷池目录 mkdir -p /data/safeline && cd /data/safeline 下载雷池社区版镜像包 cd /data/safeline 2wget https://demo.waf-ce.chaitin.cn/image.tar.gz 下载compose编排脚本 cd /data/safeline 2wget https://waf-ce.chaitin.cn/release/latest/compose.yaml 加载雷池社区版镜像包 cat image.tar.gz | gzip -d | docker load 配置环境变量 cat > .env <<EOF 2SAFELINE_DIR=/data/safeline 3IMAGE_TAG=latest 4MGT_PORT=9443 5POSTGRES_PASSWORD=$(tr -dc A-Za-z0-9 </dev/urandom | head -c 32) 6SUBNET_PREFIX=172.22.222 7IMAGE_PREFIX=swr.cn-east-3.myhuaweicloud.com/chaitin-safeline 8ARCH_SUFFIX= 9RELEASE= 10REGION= 11EOF 启动雷池服务 docker compose up -d 四、配置与验证 初始化控制台 访问 https://<服务器IP>:9443 ,首次登录需执行命令获取随机密码。 docker exec safeline-mgt resetadmin 添加防护站点 上游服务器配置 :根据业务架构选择(如反向代理至Nginx或直接指向应用服务器)。 证书管理 :上传SSL证书至控制台,支持HTTP自动跳转HTTPS。 防护测试 1 # 模拟攻击验证拦截效果 2 curl "http://<域名>/?id=1%20AND%201=1" # SQL注入测试 3 curl "http://<域名>/?html=<script>alert(1)</script>" # XSS测试 五、常见问题与优化 启动报错处理 unknown shorthand flag: 'd' in -d :升级Docker Compose至2.0+。 镜像加载失败:检查镜像完整性,重新导出加载。 性能调优 资源限制 :通过 docker-compose.yaml 调整容器内存与CPU配额。 日志管理 :挂载外部目录持久化日志,避免磁盘占满。 升级与迁移 离线升级 :替换镜像包后执行 docker compose down && docker compose up -d 。 跨服务器迁移 :备份 /data/safeline 目录,复制至新主机按相同步骤启动。 六、总结 本文基于雷池社区实践整合了雷池WAF离线部署的最优路径,覆盖环境准备、离线包生成、服务配置及故障排查全流程。通过语义分析引擎与轻量级设计,雷池社区版可有效防御OWASP Top 10攻击,适合内网及无外网环境的业务防护。建议定期关注官方更新,结合业务流量调整防护策略。

优秀的个人博客,低调大师

Ollama 介绍,搭建本地 AI 大模型 deepseek,并使用 Web 界面调用

Ollama 是一个基于 Go 语言的本地大语言模型运行框架,类 Docker 产品(支持 list,pull,push,run 等命令),事实上它保留了 Docker 的操作习惯,支持上传大语言模型仓库 (有 deepseek、llama 2,mistral,qwen 等模型,你也可以自定义模型上传)。 在管理模型的同时,它还提供了一些 Api 接口,让你能够像调用 OpenAI 提供的接口那样进行交互。 一、下载安装 Ollama Ollama 支持多平台部署,你可以在官网,选择适合的安装包。 下载地址:https://ollama.com 运行之后,访问 localhost:11434,查看是否正常运行: 二、AI 模型管理 ollama 安装之后,其同时还是一个命令,与模型交互就是通过命令来进行的。 ollama list:显示模型列表。 ollama show:显示模型的信息 ollama pull:拉取模型 ollama push:推送模型 ollama cp:拷贝一个模型 ollama rm:删除一个模型 ollama run:运行一个模型 官方提供了一个模型仓库,https://ollama.com/library, 你可以搜索你想要的模型。 官方建议:应该至少有 8 GB 可用 RAM 来运行 7 B 型号,16 GB 来运行 13 B 型号,32 GB 来运行 33 B 型号。 在这里我选择下载目前最火的开源 deepseek-r1 模型来做演示。模型地址为:https://ollama.com/library/deepseek-r1,因我的电脑有 32G,所以选择了 14b 的模型来调试。 ollama run deepseek-r1:14b 执行命令,如果本地没有该模型,则会先下载模型再运行。首次运行启动可能略慢。 三、简单交互 模型运行之后,会默认进入到交互状态,你可以按下Ctrl + D退出交互,但此时模型并不会退出,仍旧可以正常通过 Api 接口交互。 终端交互示例: 接口请求参考官方文档的介绍API 文档,下边是简单的示例: curl http://localhost:11434/api/generate -d "{\"model\":\"deepseek-r1:14b\", \"prompt\":\"介绍下JeecgBoot是什么项目\", \"stream\": false}" 接口请求支持 stream 模式,上边这个请求响应 10s 左右,如果使用 stream 模式,体验会提升不少。 四、通过 Web 界面调用大模型 这里介绍几个 UI 框架可以直接与 ollama 大模型对接。 项目一 :ollama-webui-lite 项目地址:https://github.com/ollama-webui/ollama-webui-lite 此项目是 open-webui 的简化版,注意需:node >= 16。 git clone https://github.com/ollama-webui/ollama-webui-lite.git cd ollama-webui-lite yarn yarn dev 运行之后,你可以对连接信息进行设置,默认是连接本机的http://localhost:11434/api,如果你也是本机部署,那就不用更改。然后界面选择启动的模型,就可以对话了。 项目二 :lobe-chat 项目地址:https://github.com/lobehub/lobe-chat 这是一个集成多种模型能力的对话聊天 UI,部署简单,界面酷炫。 Docker 部署命令: docker run -itd --name=lobechat -p 3210:3210 registry.cn-hangzhou.aliyuncs.com/jeecgdocker/lobe-chat 如果你是本地 ollama 部署,启动之后,就可以在 web 界面进行交互了。 目前最新版还不支持 deepseek v3,可以先用其他大模型测试下

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册