• Spark支持S3作为DataSource(四):使用Spark处理存储在S3上的图片文件

    主流程 PicProcess类 图片处理 执行结果 前面三篇文章介绍了S3以及如何使用Hadoop和Spark处理S3上的文本文件,但毕竟我们使用S3的目的是为了处理非结构化文件(图片,视频)。本文介绍了如何使用Spark处理存储在S3某一个bucket里大量文件(实际我只放了很少几张图片)的方法。由于我不了解图片处理算法,所以图片的处理只是简单读取了该图片的长度、宽度、拍摄时间、拍摄地点等信息。至于更复杂的图像处理、视频处理,如车牌识别,如果图像处理算法是纯JAVA的实现,那只...


  • Spark支持S3作为DataSource(三):Spark集成S3 Service

    spark-shell Spark SQL Spark的DataSource支持S3和Swift,考虑到Ceph也提供了S3和Swift的API,而C++的效率也是Python难以望其项背的,所以Spark+Ceph(S3 Service)可能是一个比较合适的方案。 如果想试试Spark with Swift,可以参考Accessing OpenStack Swift from Spark这篇文章,这里不再涉及。 spark-shell Spark shell在启动前,需要保证HD...


  • Spark支持S3作为DataSource(二):Hadoop集成S3 Service

    Hadoop配置S3集成 Signature V2/V4 Hadoop与S3的集成可以参考官方说明。我在这里被s3/s3n/s3a给搞混淆了,实际上对于AWS来说,只有s3协议,但是hadoop由于历史原因,逐步实现了s3->s3n->s3a三种访问S3服务的协议,支持的文件也越来越大。由于我们使用的是自建S3 Service,而只有s3a支持设置endpoint,虽然号称“仍有bug”,但也只能硬着头皮上了。 Hadoop配置S3集成 修改core-site.xml,增...


  • Spark支持S3作为DataSource(一):S3及其开源实现

    S3 Ceph/Demo的安装 minio 我们需要用spark来处理图片、视频,这种数据用HDFS来存储很不合适,在我看来主要有两个问题: HDFS的block size一般为64MB或者128MB,但图片一般可能1MB左右,浪费空间 图片文件的数量可能很大,对NameNode的内存会是个挑战 针对交通卡口的图片,国内有公司是使用HBase做的存储,用Spark来处理。HBase默认一个Cell的大小是64KB,需要根据实际情况调整为1MB或者2MB。但HBase实...


  • Spark通过JDBC使用MySQL作为数据源

    假设场景:用户使用beeline或者其他JDBC客户端,通过Spark Thrift server的JDBC服务,来访问MySQL。一般来说,直接通过JDBC来访问MySQL,可以肯定其数据量不大(无论是从MySQL读还是写到MySQL),否则应该将MySQL的数据导入到Hive库中(当然可以使用create table xxx stored as parquet as select * from jdbc_table_X将数据写到hive表里,但体验并不好,基本等同于单线程)。 1.6.1版本可以...


  • Hadoop 2.7.2编译

    调试Spark支持S3作为DataSource的时候,需要改下hadoop-aws这个包,所以编译了一把Hadoop,具体步骤可以参考这个韩国人的文章,包括centos和ubuntu两个操作系统的说明。注意Hadoop编译需要cmake/make/protoc/libssl等。我的操作系统是ubuntu,直接照抄下面即可(相对韩国人我删掉了 -Drequire.snappy参数)。 # sudo apt-get install maven libssl-dev build-essential pkg...


  • CentOS 7使用nmcli配置双网卡聚合

    进入CentOS 7以后,网络方面变化比较大,例如eth0不见了,ifconfig不见了,其原因是网络服务全部都由NetworkManager管理了,下面记录下今天下午用nmcli配置的网卡聚合,网络上资料比较多,这里仅记录以备忘,更详细的说明可以参考rhel7和centos7使用nmcli命令管理配置网络。 CentOS7使用ip link代替ifconfig命令,使用teamd处理双网卡聚合,使用nmcli命令行配置网络。 实战发现team driver在重启时会有些问题,会漏掉设置混杂模式(...


  • 非典型Grub破坏并修复之路

    我有一台很古老的IBM ThinkPad笔记本,900MHZ的CPU,512MB内存,30GB硬盘,想必现在的小朋友都只在书里看到过吧。这个本基本放着吃灰,偶尔通上电开起来缅怀下,不过它的硬盘实在太老旧,有不少坏区,双系统之一的XP(是的你没看错,30GB也双系统)已经进不去了,只能进debian,勉强作为命令行工具(然而并不会)。 昨天晚上拿螺丝刀拆了一把,十年了所有的螺丝还能拧得动,确实佩服。CPU的硅胶还有一丢丢,风扇里倒是满是灰。把硬盘拆了出来,尝试换块新硬盘上去。因为光驱已经完全不能读盘了...


  • Spark调度(一):Task调度算法,FIFO还是FAIR

    Spark调度分几个层次? 两层。 第一层,Spark应用间:Spark提交作业到YARN上,由YARN来调度各作业间的关系,可以配置YARN的调度策略为FAIR或者FIFO。 这一层可以再分两层,第一小层是YARN的队列,第二小层是队列内的调度。Spark作业提交到不同的队列,通过设置不同队列的minishare、weight等,来实现不同作业调度的优先级,这一点Spark应用跟其他跑在YARN上的应用并无二致,统一由YARN公平调度。比较好的做法是每个用户单独一个队列,这种配置FAIR调度就...


  • Apache Ranger续:与LDAP和Kerberos合作,提供统一的认证、管理

    1、全集群使用LDAP做用户管理 2、管理hive授权 3、管理spark thrift server授权 4、Final Fantasy 1、全集群使用LDAP做用户管理 Ranger 0.5版本开始支持使用LDAP做认证,即除了Ranger自己的internal用户,在LDAP中的用户也可以登录Ranger系统去做权限管理;而Ranger的user-sync也支持从LDAP同步用户到Ranger。用户管理完全在LDAP中管理,授权完全在Ranger中管理,Ranger操作的...