记录学习Spark+Kafka构建实时分析Dashboard案例中遇到的问题(一)安装

现阶段在学习大数据处理相关的项目,先通过厦门大学林子雨老师的案例教程学习Spark+Kafka构建实时分析Dashboard案例学习Kafka和Spark的处理, 地址:http://dblab.xmu.edu.cn/post/8274/

通过博客记录一下学习过程中遇到的各种问题,由于在一个小任务下可能有很多问题,因此记录的顺序是按照完成案例任务的顺序来写的。

推荐环境

  • Ubuntu: 16.04
  • Spark: 2.1.0
  • Scala: 2.11.8
  • kafka: 0.8.2.2
  • Python: 3.x(3.0以上版本)
  • Flask: 0.12.1
  • Flask-SocketIO: 2.8.6
  • kafka-python: 1.3.3

系统和软件安装

安装Ubuntu

分辨率问题

为了完全匹配案例的环境,重新下载了Ubuntu16.04,因此所有环境都得重装一遍。已有的分辨率并不能完全符合我的电脑,于是自定义分辨率1920*1080,参考博客设置好并成功开机生效。
其它问题参考如下:
出现Error of failed request: BadName (named color or font does not exist
安装好增强之后分辨率无法自动调整
安装增强时出错,未能加载虚拟光驱 VBoxsGuestAdditions.iso到虚拟电脑

虚拟机桥接模式连不上网

此时再次出现了老问题,虚拟机桥接模式连不上网了…基本处理思路就是要设置把虚拟机上面的网关、DNS、掩码、都要和实际主机一致,虚拟机的IP要和主机在同一网段,参考博客,其中注意如果连的是WiFi,主机的IP地址是看WLAN后的地址。

主机地址
也可以对照一下virtualbox网络设置里桥接网络选择的界面名称,和主机wlan的名称是否是一样的,当然在我这里wireless已经说明了一切…

virtualbox的网络设置
主机网络名称
win10查看DNS,只需要1)在右下角网络图标右键打开网络和Internet设置 2)在状态里查看硬件和连接属性 3)查看所需网络(此时是wlan)的dns。

设置好后通过sudo service networking restart重启网络。

Hadoop安装

由于想让Spark和Hadoop一起安装使用,因此在安装Spark前先按照教程安装Hadoop。

Ubuntu16.04下用aria2下载百度网盘大文件

林子雨老师给了Hadoop网盘链接,而我为了偷懒也懒得从官网下了,但是试了几次后发现,似乎网页版百度网盘里的大文件必须通过客户端下载。

根据提示下载好百度网盘linux版本deb格式的安装包后,通过sudo dpkg -i <package.deb>安装Debian软件包,然而下载完成后,不管点几次百度云的图标,它都没有除了消失以外的任何反应!查了一下,估计是因为Ubuntu 16.04版本太低不支持百度网盘,从18.04之后应该就能用了。但为了和要求的环境一模一样(防止安装过程中出现意料之外的问题… ),需要一个能在16.04上下载百度网盘大文件的方法,这里使用了aria2+网盘直链

(只考虑传输文件可以直接用FTP软件向Ubuntu系统上传文件,详情参考林子雨老师教程,桥接模式保证主机向虚拟机能ping通,如果用户名啥的都正确,能ping通但依然连不上,可能是没安装ssh,安装ssh

aria2最简单的配置下载过程参考
https://blog.csdn.net/kudou1994/article/details/87648558
https://blog.csdn.net/wudi1107/article/details/80728891

配置过程中,vi打开文件后按方向键出现ABCD,通过卸载原有的vim-common组件sudo apt-get remove vim-common,安装新的vimsudo apt-get install vim解决了问题。

网上找到的大部分教程直链里都用的是baiduexporter,但是现在这个插件在官方商店已经没有了,作者GitHub还能下载https://github.com/acgotaku/BaiduExporter/releases,但是我太蠢了最后也没弄好,可用的话可参考作者博客https://blog.icehoney.me/posts/2015-01-31-aria2-download/配合使用。

如果不能用的话,有几个试过当前还可用的工具。油小猴网盘直链下载助手,可用在包括谷歌、火狐、360等主流浏览器下,且给出了详细的在各个系统下,使用各种下载工具的详细使用教程,可直接参考这个完成下载;在找可用直链的时候还看到一个刚更新的直链下载助手,只限Chrome,亲测可用。

附上其他参考过的aria2+网盘直链配置使用方法,可能这些组合起来就能解决你的某个问题:
aria2+Chrome插件baiduexporter
Ubuntu16.04+Tampermonkey+uget+aria2+baiduexporter
ubuntu18.04 Aria2的安装及使用问题详解
简单明了的aria2+baiduexporter安装使用
简单的Ubuntu16.04aria2下载百度云大文件

其他在安装hadoop时遇到的问题
  • apt-get

1)E: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用) ,参考以下博客和评论
https://blog.csdn.net/jdy_lyy/article/details/90453856

2)sudo apt-get update时,大部分包都忽略了。参考https://www.jianshu.com/p/e0c45265a2ff
换源时出现“下载软件仓库信息失败,检查您的网络连接”,参考了以下,第二个解决的是“细节”里的报错,不知道哪个起作用了。
https://blog.csdn.net/nanhuaibeian/article/details/86330330
https://blog.csdn.net/u012798683/article/details/102596829

hadoop用法小结

hadoop有三种shell命令方式。

  1. hadoop fs:适用于任何不同的文件系统,比如本地文件系统和HDFS文件系统
  2. hadoop dfs:只能适用于HDFS文件系统
  3. hdfs dfs:只能适用于HDFS文件系统

启动时,若没有配置hadoop的PATH环境变量,则先cd到hadoop的安装目录下。

单机模式

直接将本地磁盘中的文件作为输入输出。

./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep ./input ./output 'dfs[a-z.]+'`

代码运行grep例子,将input文件夹中的所有文件作为输入,筛选当中符合正则表达式 dfs[a-z.]+ 的单词并统计出现的次数,最后输出结果到 output 文件夹中)

伪分布式

部署时,改变/usr/local/hadoop/etc/hadoop/目录下的2个配置文件 core-site.xml 和 hdfs-site.xml(从伪分布式模式切换回非分布式模式,要删除 core-site.xml 中的配置项)。

core-site.xml中在configuration之间加上

<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/hadoop/tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

hdfs-site.xml中在configuration之间加上

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/data</value>
    </property>
</configuration>

执行 NameNode 的格式化

cd /usr/local/hadoop
./bin/hdfs namenode -format

开启 NameNode 和 DataNode 守护进程:

cd /usr/local/hadoop
./sbin/start-dfs.sh  #start-dfs.sh是个完整的可执行文件,中间没有空格

jps 查看当前用户下的java进程的pid及基本信息,可用来判断是否成功启动。

成功启动后,可以访问 Web 界面 http://localhost:50070 查看 NameNode 和 Datanode 信息及hdfs文件。

运行实例时,伪分布式读取的是 HDFS 上的数据,先要在 HDFS 中创建用户目录:

./bin/hdfs dfs -mkdir -p /user/hadoop

将文件用-put复制到分布式文件系统中的 /user/hadoop/input 中,用-ls查看文件列表。因使用的是 hadoop 用户,并且已创建相应的用户目录 /user/hadoop ,因此在命令中就可以使用相对路径如 input,其对应的绝对路径就是 /user/hadoop/input。

在伪分布式下运行

./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'

注意区别 ./input 和 input,./output 和 output。

Hadoop 默认不会覆盖结果文件,因此再次运行同一个实例会提示出错,需要先将之前的输出文件 ./output(本地)或 output(hdfs)用rm -r删除。

Spark、 Kafka、python依赖包、pycharm安装

记录部分介绍。参考博客

Spark

spark部署模式包括单机的本地模式、伪分布式模式,集群中的spark自带standalone模式、Spark On yarn模式、Spark On Mesos模式。

Spark Shell中是交互式执行环境,编程代码调试方便,启动./spark-shell

但Spark Shell需要逐行运行,因此一般情况下,会选择将调试后代码打包成独立的Spark应用程序,提交到Spark中运行。打包工具使用SBT,编写好的Spark程序一般通过Spark-submit指令的方式提交给Spark集群进行具体的任务计算,指令详解

Spark Streaming的原理是将流数据分解成一系列短小的批处理作业,每个短小的批处理作业使用面向批处理的Spark Core进行处理,通过这种方式变相实现流计算,而不是真正实时的流计算,因而通常无法实现毫秒级的响应。因此,对于需要毫秒级实时响应的企业应用而言,仍然需要采用流计算框架(如Storm)。

Kafka

Kafka常用命令

PyCharm

启动PyCharm:

cd /usr/local/pycharm
./bin/pycharm.sh  #启动PyCharm
Python依赖

由于安装了anaconda(具体见下篇(二)),因此相关依赖安装在anaconda的python环境中。

安装kafka-python时,在当前channels找不到包PackagesNotFoundError: The following packages are not available from current channels,在终端输入

 anaconda search -t conda kafka-python

查找包,选择了conda-forge/kafka-python,输入查看详情

anaconda show conda-forge/kafka-python

根据提示安装

conda install --channel https://conda.anaconda.org/conda-forge kafka-python

参考博客

其中,在后期可视化,app文件运行打开网页时,出现The client is using an unsupported version of the Socket.IO or Engine.IO pro的问题,原因是flask和socketio的engine各种包版本有问题,参考博客修改版本为
Flask-SocketIO==3.0.2,python-engineio==3.13.2, python-socketio==4.2.0后能正常连接上了。最终python版本依然是3.7(scala版本里不要求python3.5,且3.7更兼容),kafka-python版本与要求一致为1.3.3。

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值