大数据项目实践过程笔记
开发工具intelijidea 2.19.3
目前围绕Hadoop体系的大数据架构包括:
传统大数据架构
数据分析的业务没有发生任何变化,但是因为数据量、性能等问题导致系统无法正常使用,需要进行升级改造,那么此类架构便是为了解决这个问题。依然保留了ETL的动作,将数据经过ETL动作进入数据存储。数据分析需求依旧以BI场景为主,但是因为数据量、性能等问题无法满足日常使用。
流式架构
在传统大数据架构的基础上,流式架构数据全程以流的形式处理,在数据接入端将ETL替换为数据通道。经过流处理加工后的数据,以消息的形式直接推送给了消费者。存储部分在外围系统以窗口的形式进行存储。适用于预警、监控、对数据有有效期要求的情况。
Lambda架构
Lambda架构算大数据系统里面举足轻重的架构,数据通道分为两条分支:实时流和离线。实时流依照流式架构,保障了其实时性,而离线则以批处理方式为主,保障了最终一致性。适用于同时存在实时和离线需求的情况。
Kappa架构
Kappa架构在Lambda的基础上进行了优化,将实时和流部分进行了合并,将数据通道以消息队列进行替代。因此对于Kappa架构来说,依旧以流处理为主,但是数据却在数据湖层面进行了存储,当需要进行离线分析或者再次计算的时候,则将数据湖的数据再次经过消息队列重播一次则可。
Unifield架构
Unifield架构将机器学习和数据处理揉为一体,在流处理层新增了机器学习层。数据在经过数据通道进入数据湖后,新增了模型训练部分,并且将其在流式层进行使用。同时流式层不单使用模型,也包含着对模型的持续训练。适用于有着大量数据需要分析,同时对机器学习方便又有着非常大的需求或者有规划的情况。
###eclipse maven 打包jar
最近写项目需要将其打成jar上传到服务器上,之前一直写到是web,打的是war包,这次写的是游戏服务器,是jar包。顺便记之。
maven打包
关于打包有两种类型:①不带依赖的打包,②带依赖的打包
默认情况下我们使用maven install打包生成的是第①种,如果想要第②种,可以使用插件实现使用插件:
<build><plugins><plugin><artifactId>maven-assembly-plugin</artifactId><version>2.2</version><configuration><archive><manifest><!-- 我运行这个jar所运行的主类 --><mainClass>com.lhcc.weblog.ReadWebLog</mainClass></manifest></archive><descriptorRefs><descriptorRef><!-- 必须是这样写 -->jar-with-dependencies</descriptorRef></descriptorRefs></configuration></plugin></plugins>
</build>
注意:需要在run build运行的时候添加如下参数:assembly:assembly
这样,将会生成①不带依赖的打包和②带依赖的打包。插件生成的jar.png生成带依赖jar主要两个步骤
①在pom中添加plugin依赖
②build的时候添加assembly:assembly参数
###myeclipse maven 打包jar
第一步:pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.lhcc</groupId><artifactId>hadoop-word-count</artifactId><version>1.0</version><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.3</version><configuration><source>8</source><target>8</target></configuration></plugin></plugins></build><!--以下内容不是打包必须的 因项目而异--><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><hadoop.version>2.6.0-cdh5.15.2</hadoop.version></properties><!---配置CDH仓库地址 确保maven配置的settings.xml中配置的镜像地址mirrorOf的值没有使用* 否则这边配的repositories就会被覆盖不生效--><repositories><repository><id>cloudera</id><url>https://repository.cloudera.com/artifactory/cloudera-repos/</url></repository></repositories><dependencies><!--Hadoop-client--><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>${hadoop.version}</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.8.1</version></dependency></dependencies>
</project>
第二步
maven install
###在ubuntu环境下面运行上面的jar
java -cp weblog.jar com.lhcc.weblog.ReadWebLog /home/fgq/codec/SogouQ.log /home/fgq/codec/weblogs.log
注意 SogouQ.log 网上下载的sogo的日志数据https://www.sogou.com/labs/resource/q.php
-----------------------------------------【flume】---------------------------------------------------------------
###flume 从[监听文件]中获取数据信息且下沉Sink到另一个监听ip(192.168.146.100)和端口(4545)中
1. [agent0.properties]a0.sources = s1a0.sinks = k1a0.channels = c1a0.sources.s1.type = avroa0.sources.s1.channels = c1#可以写死成192.168.146.100 也可以写成0.0.0.0a0.sources.s1.bind = 0.0.0.0a0.sources.s1.port = 4545a0.channels.c1.type = memorya0.channels.c1.capacity = 1000a0.channels.c1.transactionCapacity = 100a0.sinks.k1.type = loggera0.sinks.k1.channel = c12.先启动Avro[agent1.properties]的Source的监听端口(192.168.146.100:4545)flume-ng agent --conf conf --name a0 --conf-file conf/agent0.properties -Dflume.root.logger=INFO,console -Dorg.apache.flume.log.printconfig=true -Dorg.apache.flume.log.rawdata=true或flume-ng agent --conf conf --name a0 --conf-file conf/agent0.properties -Dflume.root.logger=INFO,console
3.[agent2.properties]a2.sources = r2a2.channels = c2a2.sinks = k2a2.sources.r2.type = exec#来源于监听文件weblogs.log文件a2.sources.r2.command = tail -F /home/fgq/codec/weblogs.loga2.sources.r2.channels = c2a2.channels.c2.type = memorya2.channels.c2.capacity = 1000a2.channels.c2.transactionCapacity = 100a2.channels.c2.keep-alive = 30a2.sinks.k2.type = avroa2.sinks.k2.channel = c2# 落地点是master机器的5555端口(主机名和端口号都必须与agent0.properties中开启的一致,否则会报错192.168.146.100:4545无法连接)a2.sinks.k2.hostname=192.168.146.100a2.sinks.k2.port=4545
4.再启动Avro的Sinkflume-ng agent --conf conf --name a2 --conf-file conf/agent2.properties -Dflume.root.logger=INFO,console -Dorg.apache.flume.log.printconfig=true -Dorg.apache.flume.log.rawdata=true或flume-ng agent --conf conf --name a2 --conf-file conf/agent2.properties -Dflume.root.logger=INFO,console*注意一定要先开启监听端口,后开启Avro的sink
-----------------------------------------【hbase】---------------------------------------------------------------
###在hbase shell中使用list命令报错:ERROR: Can’t get master address from ZooKeeper; znode data == null原因及解决方法
原因:运行hbase(zookeeper)的用户无法写入zookeeper文件,导致znode data为空。
解决方法:
方法一:重启hbase(可能是zookeeper或hbase不稳定造成的 重启不一定起作用)
方法二:在hbase-site.xml指定一个运行hbase的用户有写入文件权限的目录作为zookeeper数据目录,如<property><name>hbase.zookeeper.property.dataDir</name><value>/opt/zk_data</value></property>
方法三:格式化NameNode
(1)删除所有虚拟机上hadoop配置文件core-site.xml文件中指定的hadoop的临时目录(2)在slave1 slave2 slave3上启动journalnode 在两个NameNode(master或slave3)中选择一个(如master)执行hdfs格式化命令:hadoop namenode -format(3)把master上的fsimage文件拷贝到slave3上:scp -r /opt/hadoop-2.5.1 root@slave3:/opt(4)在两个NameNode(master slave3)中选择一个(如master)进行zookeeper格式化: hdfs zkfc -formatZK(5) 启动zookeeper(6)启动hdfs(7)启动hbase(8)进入hbase shell 命令行界面(9)输入list命令 就可以正常显示了
###s101: WARNING: /home/fgq/soft/hadoop-3.2.0/logs does not exist. Creating.
s102: /home/fgq/soft/hadoop/etc/hadoop/hadoop-env.sh: line 140: hbase: command not found
s102: WARNING: /home/fgq/soft/hadoop-3.2.0/logs does not exist. Creating.
Starting secondary namenodes [s103]
s103: /home/fgq/soft/hadoop/etc/hadoop/hadoop-env.sh: line 140: hbase: command not found
原因是 hbase的jar包没有正确导入到hadoop的classpath目录下面
参看 笔记hbase-day5的 hbase mr编程
hbase shell ERROR: Connection refused
确认一下是否启动了Hbase服务 start-hbase.sh
###阶段一操作
flume-ng agent --conf conf --name a0 --conf-file conf/agent0.properties -Dflume.root.logger=INFO,console
flume-ng agent --conf conf --name a2 --conf-file conf/agent2.properties -Dflume.root.logger=INFO,console
java -cp weblog.jar com.lhcc.weblog.ReadWebLog /home/fgq/codec/SogouQ.log /home/fgq/codec/weblogs.log
###阶段二操作
flume-ng agent --conf conf --name a1 --conf-file conf/agent1.properties -Dflume.root.logger=INFO,console
flume-ng agent --conf conf --name a2 --conf-file conf/agent2.properties -Dflume.root.logger=INFO,console
kafka-console-consumer.sh --zookeeper s101:2181,s102:2181,s103:2181 --topic weblogs --from-beginning
java -cp weblog.jar com.lhcc.weblog.ReadWebLog /home/fgq/codec/SogouQ.log /home/fgq/codec/weblogs.log
###阶段三操作
kafka-create-topic.sh --zookeeper s101:2181,s102:2181,s103:2181 --replica 3 --partition 2 --topic weblogs访问时间\t用户ID\t[查询词]\t该URL在返回结果中的排名\t用户点击的顺序号\t用户点击的URLdatatime,userid,searchname,retorder,cliorder,cliurlcolumn=info:datatime,userid,searchname,retorder,cliorder,cliurl, timestamp=1574927730292, value=00:01:06\x096706952665130084\x09[\xE7\x81\xAB\xE7\xAE\xAD\xE4\xBD\x95\xE6\x97\xB6vs\xE6\xB9\x96\xE4\xBA\xBA\xE5\x95\x8A]\x094 6\x09wenwen.soso.com/z/q52390704.htm kafka-server-start.sh config/s1.properties kafka-server-start.sh config/s2.properties kafka-server-start.sh config/s3.properties
[2019-11-28 01:06:06,607] ERROR Closing socket for /192.168.146.100 because of error (kafka.network.Processor)
kafka.common.KafkaException: Wrong request type 18
at kafka.api.RequestKeys.deserializerForKey(RequestKeys.scala:53)atkafka.network.RequestChannel.deserializerForKey(RequestKeys.scala:53) at kafka.network.RequestChannel.deserializerForKey(RequestKeys.scala:53)atkafka.network.RequestChannelRequest.(RequestChannel.scala:49)
at kafka.network.Processor.read(SocketServer.scala:353)
at kafka.network.Processor.run(SocketServer.scala:245)
at java.lang.Thread.run(Thread.java:745)
INFO conflict in /controller data: { “brokerid”:1, “timestamp”:“1574932456824”, “version”:1 } stored data: { “brokerid”:1, “timestamp”:“1574932455346”, “version”:1 } (kafka.utils.ZkUtils)[2019−11−2801:20:49,220]INFOIwrotethisconflictedephemeralnode["brokerid":1,"timestamp":"1574932456824","version":1]at/controllerawhilebackinadifferentsession,henceIwillbackoffforthisnodetobedeletedbyZookeeperandretry(kafka.utils.ZkUtils) [2019-11-28 01:20:49,220] INFO I wrote this conflicted ephemeral node [{ "brokerid":1, "timestamp":"1574932456824", "version":1 }] at /controller a while back in a different session, hence I will backoff for this node to be deleted by Zookeeper and retry (kafka.utils.ZkUtils)[2019−11−2801:20:49,220]INFOIwrotethisconflictedephemeralnode["brokerid":1,"timestamp":"1574932456824","version":1]at/controllerawhilebackinadifferentsession,henceIwillbackoffforthisnodetobedeletedbyZookeeperandretry(kafka.utils.ZkUtils)
###hbase数据如何查看(存入后是编码后的内容)
###[2019-11-28 00:44:18,726] ERROR Closing socket for /192.168.146.100 because of error (kafka.network.Processor)
kafka.common.KafkaException: Wrong request type 18
###查看内存使用情况
free -m
###maven启动storm+hbase程序时(或spark) tried to access method com.google.common.base.Stopwatch.()V from class org.apache.hadoop.hbase.zookeeper.MetaTableLocator
解决方法 guava 冲突了,版本不一致,参考 http://www.luyixian.cn/news_show_4252.aspx,感谢这位作者
一般来说这样的问题是因为 pom 文件中有 google 的 guava 依赖吧?或者其他地方引用到了。 这个问题就是 guava 冲突了,版本不一致。所以大家优先去 pom 文件中排查。
有可能你会发现POM中并没有任何问题,那就去依赖包管理界面,比如idea的external Libraries查看以来的jar是否有guava,我的项目里面能看见有一个19版本的。这个貌似和spark不兼容,需要低版本到的guava,在pom里面添加一个15版本的,再次运行,发现没问题了。
<dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>15.0</version>
</dependency>
###Phoenix4.14.0-cdh5.14.2 Java api操作HBase
报错org.apache.hadoop.fs.FileSystem: Provider org.apache.hadoop.hdfs.DistributedFileSystem could not be instantiated
1.从集群拷贝以下文件:core-site.xml、hbase-site.xml、hdfs-site.xml文件放到工程src下
2.pom.xml配置内容<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><!--这个是phoenix-core的maven资源地址--><repositories><repository><id>cloudera</id><url>https://mvnrepository.com/artifact/org.apache.phoenix/phoenix-core/</url></repository></repositories><dependencies><dependency><groupId>org.apache.phoenix</groupId><artifactId>phoenix-core</artifactId><version>4.14.0-cdh5.14.2</version></dependency></dependencies>注意* 使用maven时 版本如果不更新的话 可以使用一下两步解决1.更改版本 2.删掉本地repository中的相关包内容 再次更新下载
-----------------------------------------【hive】---------------------------------------------------------------
###hive_异常_01_ Terminal initialization failed; falling back to unsupported
jar版本包冲突
Hadoop lib 下已经存在了 jline 0.9x ,但是在hive中将Jline升级到了Jline2。
启动hive的时候,由于hive依赖hadoop,启动hive,会将hadoop的配置以及jar包等等导入到hive中,导致jar包版本冲突。
这个报错需要删除hadoop目录下,需要删除下面目录下的文件,重启hadoop和hive即可
$HADOOP_HOME/share/hadoop/yarn/lib/jline-0.9.94.jar
将Hive根目录下jline-2.12.jar替换到hadoop中
注意*hive-2.3.6 hadoop-3.2.0 实现上述步骤依然不行
换hive-1.2.2版本
###hive_2.x不在支持 hive–MR 要想用必须降到hive_1.x版本
###hive> show databases; FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
这个应该是元数据的问题,hive的元数据存在mysql里面,所以如果你没有弄好mysql的权限,你的show databases是不可以用的。
解决办法:
1.首先检查你自己的hive-site.xml配置文件中的mysql账号和自己的创建hive_database的mysql账号是否一致。若不一致修改为创建了hive数据库的mysql账号。 <configuration><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://192.168.1.195:3306/hadoop_hive?createDatabaseIfNotExist=true</value></property><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value></property><property><name>javax.jdo.option.ConnectionUserName</name><value>root</value></property><property><name>javax.jdo.option.ConnectionPassword</name><value>123456</value></property><property><name>datanucleus.schema.autoCreateAll</name><value>true</value></property></configuration>
2.mysql的权限问题在mysql中:grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;grant all privileges on *.* to 'root'@'192.168.1.195' identified by '123456' with grant option;flush privileges; 刷新权限
3.hive的服务端没有打开 //做完前两步可以试试环境是否已经可以,可以后此步可以忽略1)hive --service metastore &2)然后Ctrl+C3)再hive,进去
-----------------------------------------【maven】---------------------------------------------------------------
###maven pom中的repository节点配置没有起作用
我的maven中的setting.xml配置文件里面关于mirror部分的配置如下:
<mirror><id>ibiblio</id><mirrorOf>*</mirrorOf><name>Human Readable Name for this Mirror.</name><url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url>
</mirror>
错误就出在mirrorOf节点了,如果写*会覆盖掉所有的,不管是哪个repository,
最后都被这个镜像所mirror掉了,导致pom文件中的repository不生效了。
解决方案也很简单,把这个mirrorOf改掉就好了。具体修改建议参考maven官方说明:maven的私服配置:http://my.oschina.net/liangbo/blog/195739深入比较几种maven仓库的优先级:http://toozhao.com/2012/07/13/compare-priority-of-maven-repository/http://maven.apache.org/guides/mini/guide-mirror-settings.htmlMaven最佳实践--Maven仓库:http://juvenshun.iteye.com/blog/359256Maven仓库管理之Nexus:http://my.oschina.net/aiguozhe/blog/101537注意*myeclipse 也许反应比较慢 maven install 然后更新local Repository 然后update project或者重启myeclipse 醒目有错号没什么 只要编译成功了也可以运行
###Could not get the value for parameter encoding for plugin execution
default-resources Plugin org.apache.maven.plugins:maven-resources-plugin:2.5 or one of its dependencies
could not be resolved: Failed to collect dependencies for org.apache.maven.plugins:maven-resources-plugin:jar:2.5 ()
01. 先关闭eclipse02. 找到maven的本地仓库路径、例如(C:\Users\YourUserName.m2)03. 删除文件夹:repository04. 重新打开eclipse05. clean 有问题的maven项目、点击Project → clean...06. 右键有问题的maven项目、依次点击Maven → Update Project...07. 关闭eclipse08. 打开eclipse09. 在Project Explorer中选中有问题的project10. 按F5键刷新一会11. 大功告成
###Unable to create project from archetype [org.scala-tools.archetypes:scala-archetype-simple:1.2 -> http://scala-tools.org/repo-releases]
The desired archetype does not exist (org.scala-tools.archetypes:scala-archetype-simple:1.2)
1.为了方便地创建Scala Maven项目,我们在Eclipse配置远程的Maven Archetype,ArcheType相当于项目模板。在Preference页面中选择Maven->Archetypes:
2.点击 Add Remote Catelog,在弹出框的catlog file输入:http://repo1.maven.org/maven2/archetype-catalog.xml
3.OK,完成。
4.可以新建maven创建scala项目 选择的archetype为scala-archetype-simple
###Error:scalac: Error: Error compiling the sbt component ‘compiler-interface-2.11.2-55.0’
sbt.internal.inc.CompileFailed: Error compiling the sbt component ‘compiler-interface-2.11.2-55.0’
at sbt.internal.inc.AnalyzingCompiler$.handleCompilationError1(AnalyzingCompiler.scala:331)atsbt.internal.inc.AnalyzingCompiler1(AnalyzingCompiler.scala:331) at sbt.internal.inc.AnalyzingCompiler1(AnalyzingCompiler.scala:331)atsbt.internal.inc.AnalyzingCompiler.anonfunanonfunanonfuncompileSources4(AnalyzingCompiler.scala:346)atsbt.internal.inc.AnalyzingCompiler4(AnalyzingCompiler.scala:346) at sbt.internal.inc.AnalyzingCompiler4(AnalyzingCompiler.scala:346)atsbt.internal.inc.AnalyzingCompiler.anonfunanonfunanonfuncompileSources444adapted(AnalyzingCompiler.scala:341)
at sbt.io.IO.withTemporaryDirectory(IO.scala:376)atsbt.io.IO.withTemporaryDirectory(IO.scala:376) at sbt.io.IO.withTemporaryDirectory(IO.scala:376)atsbt.io.IO.withTemporaryDirectory(IO.scala:383)
at sbt.internal.inc.AnalyzingCompiler...anonfun$compileSources2(AnalyzingCompiler.scala:341)atsbt.internal.inc.AnalyzingCompiler2(AnalyzingCompiler.scala:341) at sbt.internal.inc.AnalyzingCompiler2(AnalyzingCompiler.scala:341)atsbt.internal.inc.AnalyzingCompiler.anonfunanonfunanonfuncompileSources222adapted(AnalyzingCompiler.scala:335)
at sbt.io.IO.withTemporaryDirectory(IO.scala:376)atsbt.io.IO.withTemporaryDirectory(IO.scala:376) at sbt.io.IO.withTemporaryDirectory(IO.scala:376)atsbt.io.IO.withTemporaryDirectory(IO.scala:383)
at sbt.internal.inc.AnalyzingCompiler.compileSources(AnalyzingCompiler.scala:335)atorg.jetbrains.jps.incremental.scala.local.CompilerFactoryImpl.compileSources(AnalyzingCompiler.scala:335) at org.jetbrains.jps.incremental.scala.local.CompilerFactoryImpl.compileSources(AnalyzingCompiler.scala:335)atorg.jetbrains.jps.incremental.scala.local.CompilerFactoryImpl.getOrCompileInterfaceJar(CompilerFactoryImpl.scala:113)
at org.jetbrains.jps.incremental.scala.local.CompilerFactoryImpl.anonfunanonfunanonfungetScalac1(CompilerFactoryImpl.scala:49)atscala.Option.map(Option.scala:146)atorg.jetbrains.jps.incremental.scala.local.CompilerFactoryImpl.getScalac(CompilerFactoryImpl.scala:47)atorg.jetbrains.jps.incremental.scala.local.CompilerFactoryImpl.createCompiler(CompilerFactoryImpl.scala:25)atorg.jetbrains.jps.incremental.scala.local.CachingFactory.1(CompilerFactoryImpl.scala:49) at scala.Option.map(Option.scala:146) at org.jetbrains.jps.incremental.scala.local.CompilerFactoryImpl.getScalac(CompilerFactoryImpl.scala:47) at org.jetbrains.jps.incremental.scala.local.CompilerFactoryImpl.createCompiler(CompilerFactoryImpl.scala:25) at org.jetbrains.jps.incremental.scala.local.CachingFactory.1(CompilerFactoryImpl.scala:49)atscala.Option.map(Option.scala:146)atorg.jetbrains.jps.incremental.scala.local.CompilerFactoryImpl.getScalac(CompilerFactoryImpl.scala:47)atorg.jetbrains.jps.incremental.scala.local.CompilerFactoryImpl.createCompiler(CompilerFactoryImpl.scala:25)atorg.jetbrains.jps.incremental.scala.local.CachingFactory.anonfun$createCompiler3(CachingFactory.scala:24)atorg.jetbrains.jps.incremental.scala.local.Cache.3(CachingFactory.scala:24) at org.jetbrains.jps.incremental.scala.local.Cache.3(CachingFactory.scala:24)atorg.jetbrains.jps.incremental.scala.local.Cache.anonfun$getOrUpdate2(Cache.scala:20)atscala.Option.getOrElse(Option.scala:121)atorg.jetbrains.jps.incremental.scala.local.Cache.getOrUpdate(Cache.scala:19)atorg.jetbrains.jps.incremental.scala.local.CachingFactory.createCompiler(CachingFactory.scala:24)atorg.jetbrains.jps.incremental.scala.local.LocalServer.compile(LocalServer.scala:27)atorg.jetbrains.jps.incremental.scala.remote.Main2(Cache.scala:20) at scala.Option.getOrElse(Option.scala:121) at org.jetbrains.jps.incremental.scala.local.Cache.getOrUpdate(Cache.scala:19) at org.jetbrains.jps.incremental.scala.local.CachingFactory.createCompiler(CachingFactory.scala:24) at org.jetbrains.jps.incremental.scala.local.LocalServer.compile(LocalServer.scala:27) at org.jetbrains.jps.incremental.scala.remote.Main2(Cache.scala:20)atscala.Option.getOrElse(Option.scala:121)atorg.jetbrains.jps.incremental.scala.local.Cache.getOrUpdate(Cache.scala:19)atorg.jetbrains.jps.incremental.scala.local.CachingFactory.createCompiler(CachingFactory.scala:24)atorg.jetbrains.jps.incremental.scala.local.LocalServer.compile(LocalServer.scala:27)atorg.jetbrains.jps.incremental.scala.remote.Main.make(Main.scala:88)
at org.jetbrains.jps.incremental.scala.remote.Main$.nailMain(Main.scala:36)
at org.jetbrains.jps.incremental.scala.remote.Main.nailMain(Main.scala)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at com.martiansoftware.nailgun.NGSession.run(NGSession.java:319)
(scala1_2.11.2时)可能是Java jdk的版本过低(或过高),更改Java jdk的版本(1.8)
Project structure->修改jdk版本
###idea 运行Hadoop或spark程序时 报有关winutils的错误
使用idea在windows上连接远程hadoop开发
一.前置环境准备1.下载一份hadoop本地解压,配置HADOOP_HOME的环境变量 idea运行时会读这个环境变量然后找到他里面的bin文件,其实不需要启动 只要有bin这个目录就行,不然会报错 找不到HADOOP_HOME这个环境变量2.bin里面缺少了winutils.exe和hadoop.dll 需要额外下载https://github.com/steveloughran/winutils 下载后把bin替换hadoop的bin即可也可以不下载hadoop直接下载这个bin把环境变量配置成这个bin的上一级目录3.将hadoop.dll 复制到C:\Windows\System32中 否则 会报 Exception in thread "main"java.lang.UnsatisfiedLinkError:org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z
-----------------------------------------【storm】---------------------------------------------------------------
###如何在ui上查看storm集群和任务
主页面上,
cluster summary:集群的概况
nimbus summary:
Supervisor Summary:
Nimbus Configuration
Topology Summary:最重要的有个search窗口,根据storm任务的topology name,搜索到对应任务,点击进入一个storm集群上跑的任务的topology name 是唯一的,否则提交会出错
点击到一个具体topology页面之后,Topology summary:概况Topology actions:对topology可以在页面进行操作Topology stats:最近不同时间段的统计数据spouts:所有的不同的spout,每个spout对应总共有多少executor,总共有多少个task,每个executor运行的task数量等于两者相除 想查看具体某个spout或者bolt (都属于component)的运行情况,只需要点击对应id上的链接 Component summary: Component actions:对这个component进行操作 Spout stats:不同时间窗口的统计结果 Output stats:总的输出的统计 Executors:具体的执行线程,这个很重要 点击具体某个executor的port连接,可以查看日志 这个上面打出来的日志,是包含整个worker进程所有executor线程的日志bolts:同上Worker Resources:具体的worker进程Topology Visualization:可视化Topology Configuration:整个topology的配置
-----------------------------------------【flink】---------------------------------------------------------------
###命令生成的flink项目 cmd下
mvn archetype:generate -DarchetypeGroupId=org.apache.flink -DarchetypeArtifactId=flink-quickstart-scala -DarchetypeVersion=1.9.0
###flink编译报错:could not find implicit value for evidence parameter of type org.apache.flink.api.common…
这种异常的发生通常是因为程序需要一个隐式参数(implicit parameter),解决方法import org.apache.flink.api.scala.ExecutionEnvironment 改为=》import org.apache.flink.api.scala._
###java.lang.ClassNotFoundException: org.apache.flink.api.common.typeinfo.TypeInformation
类没有找到,勾选maven面板中的profiles选项
###Cannot resolve method ‘socketTextStream’ in ‘ExecutionEnvironment’
1.因为没有区分环境(java,scala),不同环境导入的jar包不同
2.没有区分流处理(StreamExecutionEnvironment)和批处理(ExecutionEnvironment)环境
###Unhandled exception: java.lang.Exception
对承载的错误地方进行 try cache 或者承载的方法直接抛出异常(throws Exception)
原理分析
代码分析运行
-----------------------------------------【zookeeper】---------------------------------------------------------------
###zookeeper的日志路径
默认在zookeeper安装路径bin文件夹里,文件名是zookeeper.out。可以通过修改bin/zkEnv.sh文件来指定日志路径。
默认设置
if ["x${ZOO_LOG_DIR}"="x"]
then
ZOO_LOG_DIR="."
fi
修改成
if ["x${ZOO_LOG_DIR}"="x"]
then
ZOO_LOG_DIR="$ZOOBINDIR/../logs"
fi最后日志文件就生成到安装目录的logs文件夹根目录下
mapreduce
切片数 map数 reduce数 三者之间关系
大数据项目实践过程笔记相关推荐
- 大数据项目实践:基于hadoop+spark+mongodb+mysql开发医院临床知识库系统
一.前言 从20世纪90年代数字化医院概念提出到至今的20多年时间,数字化医院(Digital Hospital)在国内各大医院飞速的普及推广发展,并取得骄人成绩.不但有数字化医院管理信息系统(HIS ...
- 大数据项目实践:基于hadoop+spark+mongodb+mysql+c#开发医院临床知识库系统
从20世纪90年代数字化医院概念提出到至今的20多年时间,数字化医院(Digital Hospital)在国内各大医院飞速的普及推广发展,并取得骄人成绩.不但有数字化医院管理信息系统(HIS).影像存 ...
- Hive大数据项目实践
在搭建了Hadoop和hive环境后,就可以使用hive来进行数据库相关操作了.Hive提供了hql(类sql)语句来操作,基本过程与mysql类似,区别的就是对于hive中的聚合操作,将使用hado ...
- 大数据项目实践--手机日志分析
一.准备环境 1.下载jdk-8u45-windows-x64.exe 安装于D:\Java8 2.修改JAVA_HOME为 D:\Java8\jdk1.8.0_45 3.修改HADOOP_HOME为 ...
- 架构(B站尚硅谷大数据项目实践 电影推荐系统概述)
详细版: 整体流程: 数据模型: 数据模型解析: 整体模块: 环境搭建: 数据加载服务:spark(scala) 推荐模块: 后台: 前端: 打包部署: 解决冷启动问题:
- 电商数仓描述_笔记-尚硅谷大数据项目数据仓库-电商数仓V1.2新版
架构 项目框架 数仓架构 存储压缩 Snappy与LZO LZO安装: 读取LZO文件时,需要先创建索引,才可以进行切片. 框架版本选型Apache:运维麻烦,需要自己调研兼容性. CDH:国内使用最 ...
- 最详细大数据项目落地路线图实践总结
今天,来谈一谈"大数据项目如何落地?"这个话题.从事过多个大数据项目的规划方案及项目落地工作,在这里与大家分享一些心得,主要是关于大数据项目如何成功落地并取得预期目标,也可以说这些 ...
- informatica数据脱敏_助您首个大数据项目破茧成蝶的实践指南
自从本世纪初软件应用开始在整个业务流程中盛行以来,一个不争的事实就是:数据改变了我们的工作方式.越来越多的企业认识到必须在大数据方面有所作为,但他们却并未切实规划出如何开展这项工作.而调查发现,切实展 ...
- 大数据之路读书笔记-09阿里巴巴数据整合及管理体系
大数据之路读书笔记-09阿里巴巴数据整合及管理体系 面对爆炸式增长的数据,如何建设高效的数据模型和体系,对这些数据进行有序和有结构地分类组织和存储,避免重复建设和数据不一致性,保证数据的规范性, 直是 ...
最新文章
- 代码如何获取单反相机拍摄的照片_看看如何拍摄出更好的照片
- switchyomega规则列表备份_求人不如求己,自己动手写一个CSDN博客备份小工具?...
- 全国省市区县数据库脚本
- 四旋翼建模与开源飞控算法(草稿,待整理)
- css 实现app图标样式_界面按钮样式丑?不可能!16款css实现炫酷按钮
- 浏览器自动化的一些体会8 访问angular页面的一个问题
- 【机器视觉】 dev_set_tool_geometry算子
- Ext.Net ASP.NET
- 开启php curl函数库的步骤
- 如何添加自动更新Play Framework 2.X项目的版本号
- pycharm启动后一直在updating indices
- 十五的学习日记20160926-你不知道的JS笔记/
- 计算机硬盘应该什么格式化,磁盘格式化是什么意思?快速格式化和一般格式化有什么区别...
- ProxyDHCP service did not reply to request on port 4011
- Android通过Chrome Inspect调试WebView的H5 App出现空白页面的解决方法(不需要FQ)
- nexus 向私服推送jar包 两种方式实现
- 中山大学新华学院计算机,中山大学新华学院信息科学学院电子信息科学与技术、计算机科学与技术、软件...
- 数据结构与算法——链式存储(链表)的插入及删除
- 有道English课程总结
- echarts渲染第一遍正常但是第二遍渲染不出来的问题(二次渲染不成功)