展开

关键词

bigdata

相关内容

  • BigData | Beam的基本操作(PCollection)

    BigData,顾名思义就是大数据专栏了,主要是介绍常见的大数据相关的原理与技术实践,从基础到进阶,逐步带大家入门大数据。?首先,PCollection的全称是 Parallel Collection(并行集合),顾名思义那就是可并行计算的数据集,与先前的RDD很相似(BigData |述说Apache Spark),它是一层数据抽象
    来自:
    浏览:364
  • BigData & Alluxio-云+社区技术沙龙成都站干货下载

    2019年4月27日(周六),BigData&Alluxio-技术沙龙(云+社区主办)在成都市高新区天府三街腾讯大厦圆满举行。
    来自:
    浏览:458
  • 广告
    关闭

    50+款云产品免费体验

    提供包括云服务器,云数据库在内的50+款云计算产品。打造一站式的云产品试用服务,助力开发者和企业零门槛上云。

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到
  • 《BigData赴美考察记》预告二:硅谷

    请关注明天的《BigData赴美考察记》。
    来自:
    浏览:423
  • 《BigData赴美考察记》预告一:加州大学伯克利分校

    当地时间5月4日下午,考察团将在伯克利大学举行交流活动,数据猿将对这次活动进行报道,请大家关注明天的《BigData赴美考察记》栏目。
    来自:
    浏览:442
  • 学界 | BigData 2018 最前沿:让人工智能找到可操作的防范恶行最优决策

    本文是他为 AI 科技评论撰写的基于 IEEE BigData 2018 录用论文《Actionable Objective Optimization for Suspicious Behavior Detection该算法已被 IEEE BigData 2018 (http:cci.drexel.edubigdatabigdata2018) 接收为长文。第一作者为圣母大学一年级博士生赵通,指导老师是助理教授蒋朦。小结在本文中,我们简单地介绍了 BigData2018 这篇防范恶意行为的论文。这篇论文新颖地提出了从用户、被害者的角度去提前防范恶意行为的思路。
    来自:
    浏览:165
  • BigData集群搭建

    “本文主要介绍大数据相关集群搭建,包括hadoop集群、zookeeper集群、hbase集群、spark集群等” ?01—免密登录这里我们演示的为三台机器搭建的集群,分别为node01、node02、node03,使用的ssh工具为crt。添加用户及用户组: # 切换到root用户# 添加用户组groupadd hadoop# 添加用户useradd -g hadoop hadoop# 设置密码passwd hadoop# 切换至hadoop用户su - hadoop设置免密登录# 三台集群分别执行,每台集群生成公钥私钥ssh-keygen -t rsa# 将node01的公钥拷贝到其他机器,三台都需要执行ssh-copy-id -p 12324 node01# 切换到.ssh目录下cd homehadoop.ssh# 将 authorized_keys 拷贝到其他两个节点scp -P 12324 authorized_keys node02:$PWDscp -P 12324 authorized_keys node03:$PWD# 注:由于修改默认的22端口,ssh、scp相关命令需要加ssh的端口号02— Hadoop集群搭建下载hadoop压缩包# 本文使用cdh版本wget http:archive.cloudera.comcdh5cdh5hadoop-2.6.0-cdh5.14.2.tar.gz# 解压tar -xzvf hadoop-2.6.0-cdh5.14.2.tar.gz -C optinstall# 修改环境变量cd ~vim .bash_profile# 添加JAVA_HOME、HADOOP_HOMEexport JAVA_HOME=optinstalljdk1.8.0_141# 注:三台集群都需要提前安装jdk,这里安装的jdk1.8export HADOOP_HOME=optinstallhadoop-2.6.0-cdh5.14.2# 修改PATHexport PATH=$PATH:$JAVA_HOMEbin:$HADOOP_HOMEbin:$HADOOP_HOMEsbin# 环境变量生效及验证hadoop版本信息source .bash_profilehadoop version?# 授权.ssh文件权限,否则hadoop集群可能有问题chmod -R 755 .sshcd .ssh# 防止被篡改chmod 644 *chmod 600 id_rsa id_rsa.pub# 将公钥添加到本机认证文件中,没有添加集群需要密码才能启动cat id_rsa.pub >> authorized_keys配置hadoop相关配置文件 cd optinstallhadoop-2.6.0-cdh5.14.2etchadoop# 配置hadoop-env.shexport JAVA_HOME=optinstalljdk1.8.0_141# 配置core-site.xml fs.defaultFS hdfs:node01:8020 hadoop.tmp.dir optinstallhadoop-2.6.0-cdh5.14.2hadoopDatastempDatas io.file.buffer.size 4096 fs.trash.interval 10080 检查点被删除后的分钟数。如果为零,垃圾桶功能将被禁用。 该选项可以在服务器和客户端上配置。如果垃圾箱被禁用服务器端,则检查客户端配置。 如果在服务器端启用垃圾箱,则会使用服务器上配置的值,并忽略客户端配置值。 fs.trash.checkpoint.interval 0 垃圾检查点之间的分钟数。应该小于或等于fs.trash.interval。 如果为零,则将该值设置为fs.trash.interval的值。每次检查指针运行时, 它都会从当前创建一个新的检查点,并删除比fs.trash.interval更早创建的检查点。 配置详见:https:hadoop.apache.orgdocsr2.7.0hadoop-project-disthadoop-commoncore-default.xml # 配置hdfs-site.xml dfs.namenode.secondary.http-address node01:50090 dfs.namenode.http-address node01:50070 dfs.namenode.name.dir file:optinstallhadoop-2.6.0-cdh5.14.2hadoopDatasnamenodeDatas dfs.datanode.data.dir file:optinstallhadoop-2.6.0-cdh5.14.2hadoopDatasdatanodeDatas dfs.namenode.edits.dir file:optinstallhadoop-2.6.0-cdh5.14.2hadoopDatasdfsnnedits dfs.namenode.checkpoint.dir file:optinstallhadoop-2.6.0-cdh5.14.2hadoopDatasdfssnnname dfs.namenode.checkpoint.edits.dir file:optinstallhadoop-2.6.0-cdh5.14.2hadoopDatasdfsnnsnnedits dfs.replication 3 dfs.permissions false dfs.blocksize 134217728 配置详见:https:hadoop.apache.orgdocsr2.7.0hadoop-project-disthadoop-hdfshdfs-default.xml# 配置mapred-site.xml mapreduce.framework.name yarn mapreduce.job.ubertask.enable true mapreduce.jobhistory.address node01:10020 mapreduce.jobhistory.webapp.address node01:19888 配置详见:https:hadoop.apache.orgdocsr2.7.0hadoop-mapreduce-clienthadoop-mapreduce-client-coremapred-default.xml # 配置yarn-site.xml yarn.resourcemanager.hostname node01 yarn.nodemanager.aux-services mapreduce_shuffle yarn.log-aggregation-enable true yarn.log.server.url http:node01:19888jobhistorylogs yarn.log-aggregation.retain-seconds 2592000 yarn.nodemanager.log.retain-seconds 604800 yarn.nodemanager.log-aggregation.compression-type gz yarn.nodemanager.local-dirs optinstallhadoop-2.6.0-cdh5.14.2hadoopDatasyarnlocal yarn.resourcemanager.max-completed-applications 1000 配置详见:https:hadoop.apache.orgdocsr2.7.0hadoop-yarnhadoop-yarn-commonyarn-default.xml# 编辑slaves#将localhost这一行删除掉node01node02node03# 创建文件存放目录mkdir -p optinstallhadoop-2.6.0-cdh5.14.2hadoopDatastempDatasmkdir -p optinstallhadoop-2.6.0-cdh5.14.2hadoopDatasnamenodeDatasmkdir -p optinstallhadoop-2.6.0-cdh5.14.2hadoopDatasnamenodeDatasmkdir -p optinstallhadoop-2.6.0-cdh5.14.2hadoopDatasdatanodeDatasmkdir -p optinstallhadoop-2.6.0-cdh5.14.2hadoopDatasdfsnneditsmkdir -p optinstallhadoop-2.6.0-cdh5.14.2hadoopDatasdfssnnnamemkdir -p optinstallhadoop-2.6.0-cdh5.14.2hadoopDatasdfsnnsnnedits修改hadoop的pid路径# 需要修改pid路径,默认在tmp下,linux系统会定期清理临时目录,会导致正常无法关闭集群vim hadoop-daemon.shHADOOP_PID_DIR=optinstallhadoop-2.6.0-cdh5.14.2pidvim yarn-daemon.shYARN_PID_DIR=optinstallhadoop-2.6.0-cdh5.14.2pid启动和关闭hadoop集群cd opt# 先删除用户文档,否则复制会很慢cd installhadoop-2.6.0-cdh5.14.2sharerm -rf doc# 复制一台的配置到集群其他所有节点scp -P 12324 -r install node02:$PWDscp -P 12324 -r install node03:$PWD# 每个节点都需要保证所有目录权限是hadoop用户chown -R hadoop:hadoop optchmod -R 755 optchmod -R g+w optchmod -R o+w opt# node01上执行格式化hdfs namenode -format# 启动集群start-all.sh# 关闭集群stop-all.sh03— Zookeeper集群搭建下载zookeeper压缩包wget http:archive.cloudera.comcdh5cdh5zookeeper-3.4.5-cdh5.14.2.tar.gztar -zxvf zookeeper-3.4.5-cdh5.14.2.tar.gz -C optinstall修改zookeeper配置 cd optinstallzookeeper-3.4.5-cdh5.14.2conf# 配置zoo.cfgcp zoo_sample.cfg zoo.cfgmkdir -p optinstallzookeeper-3.4.5-cdh5.14.2zkdatasvim zoo.cfgdataDir=optinstallzookeeper-3.4.5-cdh5.14.2zkdatasautopurge.snapRetainCount=3autopurge.purgeInterval=1server.1=node01:2888:3888server.2=node02:2888:3888server.3=node03:2888:3888# 分发到集群其他节点scp -P 12324 -r optinstallzookeeper-3.4.5-cdh5.14.2 node02:$PWDscp -P 12324 -r optinstallzookeeper-3.4.5-cdh5.14.2 node03:$PWD# 三台节点分别添加myid配置echo 1 > optinstallzookeeper-3.4.5-cdh5.14.2zkdatasmyidecho 2 > optinstallzookeeper-3.4.5-cdh5.14.2zkdatasmyidecho 3 > optinstallzookeeper-3.4.5-cdh5.14.2zkdatasmyid环境变量# 集群机器都要修改环境变量cd ~vim .bash_profileexport ZK_HOME=optinstallzookeeper-3.4.5-cdh5.14.2export PATH=$PATH:$ZK_HOMEbinsource .bash_profile启动集群 # 集群所有节点都执行zkServer.sh start# 查看集群节点状态zkServer.sh status# 集群所有节点关闭zkServer.sh stop04— HBase集群搭建下载hbase压缩包wget http:archive.cloudera.comcdh5cdh5hbase-1.2.0-cdh5.14.2.tar.gztar -xzvf hbase-1.2.0-cdh5.14.2.tar.gz -C optinstall修改hbase配置 cd optinstallhbase-1.2.0-cdh5.14.2conf# 配置hbase-env.shvim hbase-env.shexport JAVA_HOME=optinstalljdk1.8.0_141export HBASE_MANAGES_ZK=false# 设置ssh端口,非默认22export HBASE_SSH_OPTS=-p 12324# 修改hbase pid文件位置export HBASE_PID_DIR=optinstallhbase-1.2.0-cdh5.14.2pids# 配置hbase-site.xmlvim hbase-site.xml hbase.rootdir hdfs:node01:8020HBase hbase.cluster.distributed true hbase.master.port 16000 hbase.zookeeper.quorum node01,node02,node03 hbase.zookeeper.property.clientPort 2181 hbase.zookeeper.property.dataDir optinstallzookeeper-3.4.5-cdh5.14.2zkdatas zookeeper.znode.parent HBase # 配置 regionserversvim regionservers# 指定hbase从节点node01node02node03# 配置 backup-mastersvim backup-masters# node02作为备份的HMaster节点node02# 分发到集群其他节点scp -P 12324 -r optinstallhbase-1.2.0-cdh5.14.2 node02:$PWDscp -P 12324 -r optinstallhbase-1.2.0-cdh5.14.2 node03:$PWD# 创建软连接,HBase集群需要读取hadoop的core-site.xml、hdfs-site.xml的配置文件信息ln -s optinstallhadoop-2.6.0-cdh5.14.2etchadoopcore-site.xml optinstallhbase-1.2.0-cdh5.14.2confcore-site.xmlln -s optinstallhadoop-2.6.0-cdh5.14.2etchadoophdfs-site.xml optinstallhbase-1.2.0-cdh5.14.2confhdfs-site.xml?环境变量# 集群机器都要修改环境变量cd ~vim .bash_profileexport HBASE_HOME=optinstallhbase-1.2.0-cdh5.14.2export PATH=$PATH:$HBASE_HOMEbinsource .bash_profile启动集群 # 在主节点node01执行start-hbase.sh# 集群关闭stop-hbase.sh05— Spark集群搭建下载spark压缩包wget https:archive.apache.orgdistsparkspark-2.3.3spark-2.3.3-bin-hadoop2.7.tgz# 解压tar -zxvf spark-2.3.3-bin-hadoop2.7.tgz -C optinstall# 重命名mv spark-2.3.3-bin-hadoop2.7 sparkspark配置 cd optinstallsparkconf# 配置spark-env.shmv spark-env.sh.template spark-env.shvim spark-env.sh# 增加javazookeeper配置export JAVA_HOME=optinstalljdk1.8.0_141export SPARK_DAEMON_JAVA_OPTS=-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=node01:2181,node02:2181,node03:2181 -Dspark.deploy.zookeeper.dir=spark# 设定master:qexport SPARK_MASTER_IP=node01export SPARK_MASTER_PORT=7077# 设置ssh端口,非默认22export SPARK_SSH_OPTS=-p 12324# 修改spark pid文件位置export SPARK_PID_DIR=optinstallsparkpid# 配置slavesmv slaves.template slavesvim slaves#指定spark集群的worker节点node02node03环境变量# 分发到集群其他节点scp -P 12324 -r optinstallspark node02:optinstallscp -P 12324 -r optinstallspark node03:optinstall# 集群机器都要修改环境变量cd ~vim .bash_profileexport SPARK_HOME=optinstallsparkexport PATH=$PATH:$SPARK_HOMEbin:$SPARK_HOMEsbinsource .bash_profile启动集群 # 任意一台机器执行$SPARK_HOMEsbinstart-all.sh# 单独启动master$SPARK_HOMEsbinstart-master.sh# 处于active Master主节点执行$SPARK_HOMEsbinstop-all.sh# 处于standBy Master主节点执行$SPARK_HOMEsbinstop-master.sh
    来自:
    浏览:117
  • BigData包含什么?

    大约有那么两三年了,“互联网+”,“大数据”,“云计算”这些词语,出现在大众面前,这些词语还被政府官员和“创业者”们天天挂在嘴边,真是搞不懂,自己心里根本不明白这是怎么一回事。 说个小的事情,和本文没有什么太多的联系,算是我自己的吐槽罢了, 被这些人(指第一段的人)搞得,有什么小生和一些创业的小子在找我的时候,“我们是依托于云计算,将我们的产品360°无缝链到我们每一个客户的手中,基于互联网+的理论和思想,再通过我们的生态链......”我听他(这位是个学生,以为朋友把我推荐给他)一顿说,还有计划未来一年要拉风投......真的是不敢想象。(他具体做什么的我就不透露了) 他说:“我们这款产品,面向校园里所有的学生,我有想过做校园电商,进军这块领域,感觉不错,有信心做出自己的产品来,在一年内拉到风投。” 我:“哦,挺不错的,我想问几个问题,你未来一个月的打算是什么?不用说远了,讲讲你这一个月的打算,包括你有多少人,你的客户是那些?你的技术准备的怎样了?” 他的团队人数倒是给我报的很清楚,营销,团队的理念,都说出来了,就是第三段的那些话,不知道百度哪里找的“团队管理营销大师”听来的,一个月的计划,说的是乱七八糟......没头没尾。 “那技术平台呢?” “申请了一个微信公众平台账号,准备做个网站......” “好好干,加油” 这类人看来,创业似乎很容易成功,很容易赚大钱,很容易成为马云李彦宏,中国13亿人,就出了一个马云,这比中福利彩票的几率都要小,甚至觉得,养他这个团队很简单,难道像以前一样,一群人围着一起吃咸菜,创业连饭都吃不上?他真的想过吗?我只想说,创业真的太难太难了,敢于尝试,这非常值得鼓励,没有准备,还不如不去做。 这类人也非常值得肯定,他们也许是不想毕业之后拿那点死工资,去买房,我想大部分人是贷款买的房子吧?几十年的房贷,把自己的30年的青春卖给了国家...... 以后犯了一个毛病,一有人和我提大数据和云计算,我就反感,这就是怪我,文章发晚了。 大数据提纲篇--有向数据分析这方面的发展的,可以参考,进攻参考。大概知道你要学什么,需要了解那些东西。 云计算 这个概念涵盖云服务,OpenStack,Docker,云服务有SaaS,Paas,Iaas。 数据分析工具 编程语言:R语言。 MATLAB。 SAP。 分布式计算 Hadoop Spark Storm 算法 机器学习 数据结构 常用算法 一致性 简单介绍一下这些东西。Saas,全名是Software as a Service,软件即服务,有了这种服务,用户可以根据自己的需要购买公司的产品,所属公司只需要把产品部署到服务器上即可,按需购买,这就有点类似与我们购买使用的云服务器一般。PaaS,Platform as a Service,平台及服务,Paas通过网络进行程序提供的服务成为SaaS,作为服务器平台位开发者提供开发者环境,就是Paas了。Iaas,Infrastructure as a Service ,技术设施即服务,基于Internet的服务,包括云存储,你用的云盘,还有云数据库,属于Iaas的一部分。这三者属于云计算的三个模式。 机器学习 数据挖掘算法之决策树算法 聚类,时间序列,推荐系统,回归分析,文本挖掘,决策树,贝叶斯分类,神经网络等。有一篇文章我跟大家说了决策树,大家可以戳。 上面的这些没有什么太多的干活,为的是让有些关注者们明白自己要学习什么,只是作为一个提纲,太详细的资料,还是主要自己去查资料,买书,看Google和百度,其实,对于一下好的文章,你看了一篇觉得心血来潮,等我看完xx的小视频在学习!不料想等会就忘记了,永远的收藏了!越累越多,其实,到最后啥也没有学到,其实,我想说一句忠告,如果你想在互联网做开发,涉足互联网技术岗位,就需要不断的学习,大家都在不断的学习,而你却在原地踏步,你就已经退步了,不管你是否加班,或者是已经下班回家了,或者你还在大学读书,记住,看是看不会的,一定一定要动手去做。IT行业从前端到后端,从移动到安全,IT的每个行业,没有人都精通,我的感受是,精通一种技术,其他的都需要学习一下。 最后,祝大家工作愉快,学习顺利,身体健康。
    来自:
    浏览:509
  • 如何为CDH集群配置机架感知

    , bigdata4:k0809k08, bigdata5:k0809k08, bigdata6:k0809k08, bigdata7:k0809k08, bigdata8:k0809k09, bigdata9:k0809k09, bigdata10:k0809k09, bigdata11:k0809k09, bigdata12:k0809k09, bigdata13:k0809k09, bigdata14:, bigdata20:k1011k10, bigdata21:k1011k10, bigdata22:k1011k10, bigdata23:k1011k11, bigdata24:k1011k11,bigdata30:k1011k11, bigdata31:k0809j03, bigdata32:k0809j03, bigdata33:k0809j03, bigdata34:k0809j03, bigdata35bigdata56:k1011j06, bigdata57:k1011j06, bigdata58:k1011j06, bigdata59:k1011j06, bigdata60:k1011j06, bigdata-job
    来自:
    浏览:1381
  • BigData--Hadoop技术

    一、Hadoop组成?1、HDFS架构1)NameNode(nn):存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间、副本数、文件权限),以及每个文件的块列表和块所在的DataNode等2)DataNode(dn):在本地文件系统存储文件块数据,以及块数据的校验和。3)Secondary NameNode(2nn):用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照2、YARN架构?3、MapReduce架构1)Map阶段并行处理输入数据2)Reduce阶段对Map结果进行汇总 ?4、大数据技术生态体系?二、HDFS(Hadoop Distribution File System)1、优点?2、缺点?3、组织架构??三、HDFS的数据流1、HDFS写数据流程?1)客户端通过Distributed FileSystem模块向NameNode请求上传文件,NameNode检查目标文件是否已存在,父目录是否存在。2)NameNode返回是否可以上传。3)客户端请求第一个 Block上传到哪几个DataNode服务器上。4)NameNode返回3个DataNode节点,分别为dn1、dn2、dn3。5)客户端通过FSDataOutputStream模块请求dn1上传数据,dn1收到请求会继续调用dn2,然后dn2调用dn3,将这个通信管道建立完成。6)dn1、dn2、dn3逐级应答客户端。7)客户端开始往dn1上传第一个Block(先从磁盘读取数据放到一个本地内存缓存),以Packet为单位,dn1收到一个Packet就会传给dn2,dn2传给dn3;dn1每传一个packet会放入一个应答队列等待应答。8)当一个Block传输完成之后,客户端再次请求NameNode上传第二个Block的服务器。(重复执行3-7步)。2、HDFS读数据流程?3、网络拓扑-节点距离计算 节点距离:两个节点到达最近的共同祖先的距离总和。 常用命令实操(0)启动Hadoop集群(方便后续的测试)Code$ sbinstart-dfs.sh$ sbinstart-yarn.sh(1)-help:输出这个命令参数Code$ hadoop fs -help rm(2)-ls: 显示目录信息Code$ hadoop fs -ls (3)-mkdir:在HDFS上创建目录Code$ hadoop fs -mkdir -p sanguoshuguo(4)-moveFromLocal:从本地剪切粘贴到HDFSCode$ touch kongming.txt$ hadoop fs -moveFromLocal .kongming.txt sanguoshuguo(5)-appendToFile:追加一个文件到已经存在的文件末尾Code$ touch liubei.txt$ vi liubei.txt输入Codesan gu mao lu$ hadoop fs -appendToFile liubei.txt sanguoshuguokongming.txt(6)-cat:显示文件内容Code$ hadoop fs -cat sanguoshuguokongming.txt(7)-chgrp 、-chmod、-chown:Linux文件系统中的用法一样,修改文件所属权限Code$ hadoop fs -chmod 666 sanguoshuguokongming.txt$ hadoop fs -chown atguigu:atguigu sanguoshuguokongming.txt(8)-copyFromLocal:从本地文件系统中拷贝文件到HDFS路径去Code$ hadoop fs -copyFromLocal README.txt (9)-copyToLocal:从HDFS拷贝到本地Code$ hadoop fs -copyToLocal sanguoshuguokongming.txt .(10)-cp :从HDFS的一个路径拷贝到HDFS的另一个路径Code$ hadoop fs -cp sanguoshuguokongming.txt zhuge.txt(11)-mv:在HDFS目录中移动文件Code$ hadoop fs -mv zhuge.txt sanguoshuguo(12)-get:等同于copyToLocal,就是从HDFS下载文件到本地Code$ hadoop fs -get sanguoshuguokongming.txt .(13)-getmerge:合并下载多个文件,比如HDFS的目录 useratguigutest下有多个文件:log.1, log.2,log.3,…Code$ hadoop fs -getmerge useratguigutest* .zaiyiqi.txt(14)-put:等同于copyFromLocalCode$ hadoop fs -put .zaiyiqi.txt useratguigutest(15)-tail:显示一个文件的末尾Code$ hadoop fs -tail sanguoshuguokongming.txt(16)-rm:删除文件或文件夹Code$ hadoop fs -rm useratguigutestjinlian2.txt(17)-rmdir:删除空目录Code$ hadoop fs -mkdir test$ hadoop fs -rmdir test(18)-du统计文件夹的大小信息Code$ hadoop fs -du -s -h useratguigutest2.7 K useratguigutest $ hadoop fs -du -h useratguigutest1.3 K useratguigutestREADME.txt15 useratguigutestjinlian.txt1.4 K useratguigutestzaiyiqi.txt(19)-setrep:设置HDFS中文件的副本数量Code$ hadoop fs -setrep 10 sanguoshuguokongming.txt假设有数据中心d1机架r1中的节点n1。该节点可以表示为d1r1n1。?四、NN && 2NN1、NameNode工作机制NameNode中的元数据是存储在哪里的?Code 首先,我们做个假设,如果存储在NameNode节点的磁盘中,因为经常需要进行随机访问,还有响应客户请求,必然是效率过低。因此,元数据需要存放在内存中。但如果只存在内存中,一旦断电,元数据丢失,整个集群就无法工作了。因此产生在磁盘中备份元数据的FsImage。 这样又会带来新的问题,当在内存中的元数据更新时,如果同时更新FsImage,就会导致效率过低,但如果不更新,就会发生一致性问题,一旦NameNode节点断电,就会产生数据丢失。因此,引入Edits文件(只进行追加操作,效率很高)。每当元数据有更新或者添加元数据时,修改内存中的元数据并追加到Edits中。这样,一旦NameNode节点断电,可以通过FsImage和Edits的合并,合成元数据。 但是,如果长时间添加数据到Edits中,会导致该文件数据过大,效率降低,而且一旦断电,恢复元数据需要的时间过长。因此,需要定期进行FsImage和Edits的合并,如果这个操作由NameNode节点完成,又会效率过低。因此,引入一个新的节点SecondaryNamenode,专门用于FsImage和Edits的合并。Fsimage:NameNode内存中元数据序列化后形成的文件。Edits:记录客户端更新元数据信息的每一步操作(可通过Edits运算出元数据)。下图为NN和2NN工作机制?五、DataNode1、DataNode工作机制?2、数据完整性1)当DataNode读取Block的时候,它会计算CheckSum。2)如果计算后的CheckSum,与Block创建时值不一样,说明Block已经损坏。3)Client读取其他DataNode上的Block。4)DataNode在其文件创建后周期验证CheckSum。?
    来自:
    浏览:117
  • BigData |述说Apache Spark

    Index什么是Apache Spark弹性分布式数据集(RDD)Spark SQLSpark Streaming什么是Apache Spark1. 简单介绍下Apache SparkSpark是一个Apache项目,被标榜为Lightning-Fast的大数据处理工具,它的开源社区也是非常活跃,与Hadoop相比,其在内存中运行的速度可以提升100倍。Apache Spark在Java、Scale、Python和R语言中提供了高级API,还支持一组丰富的高级工具,如Spark SQL(结构化数据处理)、MLlib(机器学习)、GraphX(图计算)、SparkR(统计分析)以及Spark Streaming(处理实时数据)。Apache Spark 官方文档中文版:http:spark.apachecn.org#?2. 为什么要使用Apache Spark在我们学习一个新工具之前,需要先了解一下这门技术出现的意义、应用的场景、与同类工具相比的优缺点等等,这样子才能更加条理地去学习它,也更加容易掌握。对于Spark,我们需要问的是:为什么有Hadoop和MapReduce,还需要它呢?可能它解决了Hadoop和MapReduce不能解决的问题,具体是什么问题呢? MapReduce的缺陷:复杂的数据处理会被分解为很多job组成的有向无环图(DAG),然后每个Mapper和Reducer放到Hadoop集群上去执行,效率比较低;MapReduce模型的抽象层次低,大量的底层逻辑需要开发者自己手工完成;在Hadoop中,每一个job的计算结果都会储存在HDFS文件存储系统中,所以每一步计算都需要进行硬盘的读存操作,增加了系统延迟;只支持批数据处理,对流数据处理无法支持。那么,Spark到底有哪些优势,让这么多的开发者如此着迷??Spark的优势:Spark最基本的数据抽象叫弹性分布式数据集(Resilient Distributed Dataset,RDD),它代表一个可以被分区(partition)的只读数据集,它内部可以有很多分区,每个分区又有大量的数据记录。RDD是Spark最基本的数据结构,后面小节会详细介绍。Spark定义了很多对RDD的操作,如Map、Filter、flatMap、groupByKey和Union等,开发者可以直接使用;Spark会把中间数据缓存在内存中,从而加快了处理速度;Spark的并行机制是多线程模型,而MapReduce是多进程模型,我们知道,多进程模型会消耗更多的启动时间。?备注:图来自于极客时间 弹性分布式数据集(RDD)Spark的基础数据结构就是RDD,全称是Resilient Distributed Dataset,弹性分布式数据集。Spark基于RDD定义了很多数据操作,从而使得代码看起来非常简洁。RDD是一个基于分布式内存的数据抽象,支持工作集的应用,也具有数据流模型的特点,表示已被分区、不可变的、并能够被并行操作的数据集合。分区: 代表同一个RDD包含的数据被储存在系统的不同节点中,这也是它可以被并行处理的前提。每个分区指向一个存放在内存或者硬盘中的数据块(Block),并且是相互独立,所以,RDD内部不会存储具体的数据。RDD中有ID与分区一一对应,从而通过底层的接口中提取数据。不可变性: 代表每一个RDD都是只读的,所包含的分区信息不可以被修改,所以如果想要修改,就只能通过转换(Transformation),得到新的RDD作为中间计算结果。这样子做,我们只需要记录它是通过哪个RDD进行哪些操作得到的,而不用立刻去具体存储计算出的数据本身,有助于提升Spark的计算效率,并且使得错误恢复更加容易。并行操作: 由于RDD的分区特性,使得它天然支持并行操作,即不同节点上的数据可以被分别处理,然后产生一个新的RDD。?备注:点击看高清大图重点说下RDD的主流分区方式:Hash partitioner和Range partitioner。前者对数据的key进行散列分区,后者则是按key的排序均匀分区,绝大部分情况下HashPartitioner都可以满足需求,但有的时候分区数据量会不均匀,而RangePartitioner则尽量保证每个分区的数据量均匀。具体的RDD分区策略可以参考: Spark RDD分区策略::www.jianshu.compa21b3be88afd?utm_campaign此外,也说下依赖关系,Spark支持的两种依赖关系:窄依赖(Narrow Dependency)和宽依赖(Wide Dependency)。前者就是父RDD的分区一一对应到子RDD,比如map、filter操作,后者则就是父RDD的每个分区都可以被多个子RDD的分区使用,比如Join、groupBy操作。窄依赖允许每个分区并行处理。 1. RDD的数据操作RDD的数据操作分为两种:Transformation(转换)和Action(动作)。Transformation就是用来把一个RDD转换成另一个RDD,而Action则是通过计算返回一个结果。parallelize()collect()glom(): parallelize函数是将一个List转化为一个RDD对象,collect函数则是将RDD对象转化为一个List,glom函数则是显示RDD的分区情况。L = old = sc.parallelize(L, 2)print(old.collect()) print(old.glom().collect()) ,]Map: 转换操作,它把一个RDD中的所有数据通过一个函数映射成了一个新的RDD,任何原RDD中的元素在新RDD中都有且只有一个元素与之对应。rdd = sc.parallelize()rdd2 = rdd.map(lambda x:(x, 1)) Filter: 转换操作,选择原RDD中满足某些特定条件的数据,返回一个新的RDD。rdd = sc.parallelize()rdd2 = rdd.filter(lambda x:x%2 == 0) mapPartitions: 转换操作,类似于Map的变种,不同于map的输入函数对应RDD的所有元素,mapPartitions的输入函数应用于RDD的每个分区,也就是说每个分区的内容作为整体去处理,就是对RDD中的每个分区的迭代器进行操作。rdd = sc.parallelize(, 2)def f(iterator): yield sum(iterator)rdd2 = rdd.mapPartitions(f) groupByKey: 转换操作,groupByKey和SQL中的groupBy类似,就是把对象的集合按某个key归类,返回的RDD中每个key对应一个序列。rdd = sc.parallelize()rdd.groupByKey().collect()a b Collect: 动作操作,以数组的形式返回RDD的所有元素。Reduce: 把RDD中的元素根据一个输入函数聚合起来。Count: 返回RDD中元素的个数。CountByKey: 仅适用于Key-Value pair类型的RDD,返回具有每个key的计数的的maprdd = sc.parallelize()sorted(rdd.countByKey().items()) 总结一下:Spark在每次转换操作的时候,都是惰性求值,使用了新产生的RDD来记录计算逻辑,这样就把作用在RDD上的所有计算逻辑串联起来,形成一个链条,当遇上RDD的动作操作时,Spark就会从计算链条的最后一个RDD开始,依次从上一个RDD获取数据并执行计算逻辑,最后输出结果。 2. RDD的持久化(缓存)每当我们对RDD调用一个新的action操作时,整个RDD都会从头开始计算,因此如果某一个RDD被反复利用的话,这样子的方式是低效的,我们需要对其进行持久化操作。Spark中persist()和cache()方法都支持,它将RDD的数据缓存到内存或者硬盘中,大大提高反复利用的计算效率。rdd = sc.parallelize()rdd1 = rdd.map(lambda x: x+5)rdd2 = rdd1.filter(lambda x: x % 2 == 0)rdd2.persist()count = rdd2.count() 3first = rdd2.first() 6rdd2.unpersist()Spark SQL其实在我们实际进行数据操作的时候,并不用像上面说的那样子操作,不需要到RDD层次进行编程的,Spark生态系统里有很多库可以用,而其中的数据查询模块Spark SQL就很常用。1. Spark SQL的发展在Hadoop/MapReduce流行的时候,HDFS里就累计了大量数据,但大部分的开发者只对关系型数据库熟悉,对于MapReduce的开发还是有点难度,因此,Hive应运而生,它提供类似SQL的编程接口,HQL语句可以经过语法解析、逻辑计划、物理计划转化成MapReduce程序执行,十分方便。当Spark面世的时候,Spark团队也是开了一个Shark来支持SQL语言查询数据,但Shark的本质是Hive,对Hive是十分依赖的,制约了Shark和其他Spark组件之间的集成。于是,14年7月,Spark团队将Shark托管给Hive,转而自己开发Spark SQL。2. SparkSQL架构SparkSQL提供了类似于SQL的操作接口,允许数据仓库、命令行、应用程序直接获取数据,提供两个API:DataFrame API和DataSet API,Python、Java和Scale的应用程序可以通过这两个API来读取和写入RDD。?备注:图来自于极客时间 DataSet: 就是数据集,为Spark 1.6新引入的接口,其支持的转换和动作和RDD类似,如map、filter、select、count、show等等,同时,不同于RDD,DataSet提供了详细的结构信息和每列的数据类型,这可以让SparkSQL知道数据集中包含了哪些列,这样子的结构让DataSet API的执行效率更高。DataFrame: 常用Python做数据分析的都知道DataFrame,但这里的有点不同。它每一列并不存储信息,所以对于DataSet我们可以直接用people.name 来访问一个人的名字,而对于DataFrame则要用people.get As (name)来访问。下面给出了RDD、DataFrame和DataSet的对比:?备注:图来自于极客时间 总结一下:DataFrame和DataSet都是SparkSQL提供的基于RDD的结构化数据抽象,具有RDD的不可变性、分区、存储依赖关系的特性,又有关系型数据库的结构化信息,更加容易操作,大大提供开发效率,无论是哪种API,都是基于批处理模式对静态数据进行处理。 Spark Streaming上述说的SparkSQL都是基于批处理模式对静态数据进行处理,但如果我们需要处理流数据,就需要另外一个组件——Spark Streaming。Spark Streaming提供了一个对于流数据的抽象 DStream,可以由来自Apache Kafka、Flume或者HDFS的流数据生成,也可以由别的DStream经过各种转换操作得到。DStream也是由很多个序列化的RDD构成,按时间片切分成的每个数据单位都是一个RDD,然后Spark核心引擎对DStream的Transformation操作变成对RDD的Transformation操作,将RDD经过操作变成中间结构保存在内存里。 1. DStream结构DStream由一个个连续的RDD序列组成,每一个RDD代表一个时间窗口的输入数据流。对DStream进行操作,意味着对它包含的每一个RDD进行同样的操作。?备注:图来自于极客时间 2. 滑动窗口操作任何Spark Streaming的程序都要首先创建一个StreamingContext的对象,它是所有Streaming操作的入口,当中最重要的参数是批处理的时间间隔,即把流数据细分成数据块的粒度大小。这个时间间隔决定了流处理的延迟性,所以我们需要根据实际需求和资源情况来权衡时间间隔。滑动窗口操作有两个基本参数:窗口长度(window length):每次统计的数据的时间跨度。滑动间隔(sliding interval):每次统计的时间间隔。?备注:图来自于极客时间 ? 3. Spark Streaming的优缺点优点:数据容错性:如果RDD的某些分区丢失了,可以通过依赖关系重新计算恢复。运行速度: 将数据流存在在内存中,速度优势明显。扩展性: 基于Spark Streaming的应用程序容易扩展。缺点:实时计算延迟较高:一般在秒的级别。 References百度百科蔡元楠-《大规模数据处理实战》12-16小节 —— 极客时间Apache Spark 官方文档中文版——ApacheCNSpark之深入理解RDD结构 https:blog.csdn.netu011094454articledetails78992293Spark RDD分区策略 https:www.jianshu.compa21b3be88afd?utm_campaign
    来自:
    浏览:186
  • CentOS7下利用Ambari搭建HDP大数据平台

    ,bigdata2,bigdata3,bigdata4三、主机名修改与免密钥登录配置 1)5台主机分别修改主机名hostnamectl set-hostname ambarihostnamectl set-hostnamebigdata1hostnamectl set-hostname bigdata2hostnamectl set-hostname bigdata3hostnamectl set-hostname bigdata42bigdata210.20.90.62 bigdata310.20.90.63 bigdata44)拷贝公钥ssh-copy-id root@bigdata1ssh-copy-id root@bigdata2ssh-copy-idroot@bigdata3ssh-copy-id root@bigdata4ssh-copy-id root@ambari 5)主机域名解析文件拷贝到4台节点上scp etchosts root@bigdata1:etcscp etchosts root@bigdata2:etcscp etchosts root@bigdata3:etcscp etchosts root@bigdata4:etc 并验证可以正常免密登录四
    来自:
    浏览:1448
  • hadoop安装(3)

    :2888:3888 server.2=bigdata2:2888:3888 server.3=bigdata3:2888:3888 #修改日志的目录,日志类型 $ vim log4j.properties:usrlocal $ sudo scp -r zookeeper-3.4.11 bigdata3:usrlocal $ sudo scp -r zookeeper bigdata2:usrlocalhbase.zookper.quorum bigdata1,bigdata2,bigdata3 hbase.zookeeper.property.dataDir usrlocalzookeeper #配置slave节点 $ vim regionservers bigdata2 bigdata3 #配置java和zookeeper,false是不使用hbase自带的zookeeper $ vim hbase-env.sh:usrlocal $ sudo scp -r hbase-1.3.1 bigdata3:usrlocal6.启动hbase $ start-hbase.sh7.查看日志输出,一次情况根据日志处理
    来自:
    浏览:132
  • CentOS 6.9 中 搭建 Hive

    分别为mysql 的访问用户和密码,可通过以下命令验证是否有效(期中bigdata为javax.jdo.option.ConnectionURL中配置的地址,xxx为mysql用户名):mysql –beeline.hs2.connection.password bigdata 9.Hive 的两种访问方式# 第一种访问方式hive# 第二种访问方式# 其中 bigdata 和 bigdata 分别是在 hive-site.xml 配置文件中由 beeline.hs2.connection.userconnect jdbc:hive2:bigdata:10000default bigdata bigdata 注1:如果要使用beeline或JDBC连接hive时,遇到报错:org.apache.hadoop.ipc.RemoteException”提出你设置的beeline.hs2.connection.user),并重启hiveserver2: hadoop.proxyuser.bigdata.groups * hadoop.proxyuser.bigdata.hosts
    来自:
    浏览:223
  • Hadoop-HA高可用搭建

    -01:2181,bigdata-02:2181,bigdata-03:2181 hdfs-site.xml dfs.replication 3 property> dfs.permissions.enabled-01:8020 dfs.namenode.http-address.ns1.nn1 bigdata-01:50070 dfs.namenode.rpc-address.ns1.nn2 bigdata-02:8020 dfs.namenode.http-address.ns1.nn2 bigdata-02:50070 dfs.namenode.shared.edits.dir qjournal:bigdata-01:8485;bigdata-02:8485;bigdata-03:8485ns1 dfs.journalnode.edits.dir optmodulesApphadoop-2.5.0datajournal$ rm -rf sharedoc $scp -r hadoop2.5.0 bigdata-02:optmodules $scp -r hadoop2.5.0 bigdata-03:optmodules
    来自:
    浏览:121
  • BigData--MapReduce入门

    MapReduce入门一、MapReduce概述MapReduce是一个分布式运算程序的编程框架,是用户开发“基于Hadoop的数据分析应用”的核心框架。MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop集群上。1、优点MapReduce易于编程良好的扩展性高容错性适合海量数据的离线处理2、缺点不擅长实时计算,无法像MySQL一样,在毫秒或者秒级内返回结果。不擅长流式计算,MapReduce的输入数据是静态。不擅长DAG(有向图)计算,如果每个MapReduce作业的输出结果都写入到磁盘,会造成大量的磁盘IO,导致性能非常的低下。3、MapReduce核心编程思想?1)分布式的运算程序往往需要分成至少2个阶段。2)第一个阶段的MapTask并发实例,完全并行运行,互不相干。3)第二个阶段的ReduceTask并发实例互不相干,但是他们的数据依赖于上一个阶段的所有MapTask并发实例的输出。4)MapReduce编程模型只能包含一个Map阶段和一个Reduce阶段,如果用户的业务逻辑非常复杂,那就只能多个MapReduce程序,串行运行。4、MapReduce进程一个完整的MapReduce程序在分布式运行时有三类实例进程:1)MrAppMaster:负责整个程序的过程调度及状态协调。 2)MapTask:负责Map阶段的整个数据处理流程 3)ReduceTask:负责Reduce阶段的整个数据处理流程。 5、MapReduce编程规范1) Mapper阶段?2)Reducer阶段?3)Driver阶段用于提交封装了MapReduce程序相关运行参数的job对象。二、WordCount案例实操主要实现的是对文件中单词出现频率的分析,统计出单词出现的次数,这也是官方的示例教程1、WcMapper ,负责数据的切分javapackage cn.buildworld.mapreduce.wordcount; import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.LongWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Mapper; import java.io.IOException; ** * @author MiChong * @date 2020-05-24 11:32 *public class WcMapper extends Mapper { private Text word = new Text(); private IntWritable one = new IntWritable(1); @Override protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { 拿到这行数据 String line = value.toString(); 按照空格切分数据 String args) throws IOException, ClassNotFoundException, InterruptedException { 1、获取一个job实例 Job job = Job.getInstance(new Configuration()); 2、设置类路径 job.setJarByClass(WcDriver.class); 3、设置Mapper和Reducer job.setMapperClass(WcMapper.class); job.setReducerClass(WcReducer.class); 4、设置Mapper和Reducer输出类型 job.setMapOutputKeyClass(Text.class); job.setMapOutputValueClass(IntWritable.class); 5 设置最终输出kv类型 job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); 6、设置输入输出数据 FileInputFormat.setInputPaths(job, new Path(args)); FileOutputFormat.setOutputPath(job, new Path(args)); 7、提交我们的job boolean b = job.waitForCompletion(true); System.exit(b ? 0 : 1); }}三、Hadoop序列化不可以使用Java自带的序列化,要使用自定义bean对象实现序列化接口(Writable)示例代码javapackage cn.buildworld.mapreduce.flow; import org.apache.hadoop.io.Writable; import java.io.DataInput;import java.io.DataOutput;import java.io.IOException; ** * @author MiChong * @date 2020-05-24 18:15 * ** * 必须实现Writable接口 *public class FlowBean implements Writable { private long upFlow; private long downFlow; private long sumFlow; ** * 反序列化时,需要反射调用空参构造函数,所以必须有空参构造 * public FlowBean() { } public void set(long upFlow, long downFlow) { this.upFlow = upFlow; this.downFlow = downFlow; this.sumFlow = upFlow + downFlow; } public long getUpFlow() { return upFlow; } public void setUpFlow(long upFlow) { this.upFlow = upFlow; } public long getDownFlow() { return downFlow; } public void setDownFlow(long downFlow) { this.downFlow = downFlow; } public long getSumFlow() { return sumFlow; } public void setSumFlow(long sumFlow) { this.sumFlow = sumFlow; } ** * 最后会按照下面的格式显示在输出文件中 * * 要想把结果显示在文件中,需要重写toString(),可用”t”分开,方便后续用。 * @return * @Override public String toString() { return FlowBean{ + upFlow= + upFlow + , downFlow= + downFlow + , sumFlow= + sumFlow + }; } ** * 重写序列化方法 * *注意反序列化的顺序和序列化的顺序完全一致 * * @param out 框架给我们提供的数据出口 * @throws IOException * @Override public void write(DataOutput out) throws IOException { out.writeLong(upFlow); out.writeLong(downFlow); out.writeLong(sumFlow); } ** * 重写反序列化方法 * * 注意反序列化的顺序和序列化的顺序完全一致 * * @param in 框架给我们提供的数据来源 * @throws IOException * @Override public void readFields(DataInput in) throws IOException { upFlow = in.readLong(); downFlow = in.readLong(); sumFlow = in.readLong(); }}
    来自:
    浏览:114
  • The BigData,Hadoop组成及生态

    来自:
    浏览:110
  • 【机器学习实战】第15章 大数据与MapReduce

    # Window# python srcpython15.BigData_MapReducemrMeanMapper.py < input15.BigData_MapReduceinputFile.txt< input15.BigData_MapReduceinputFile.txt | python srcpython15.BigData_MapReducemrMeanReducer.py MapReduce< input15.BigData_MapReduceinputFile.txt > input15.BigData_MapReducemyOut.txt 实战脚本# 测试 mrjob的案例# 先测试一下mapper方法# python srcpython15.BigData_MapReducemrMean.py --mapper < input15.BigData_MapReduceinputFile.txt# 运行整个程序,移除 --mapper 就行python srcpython15.BigData_MapReducemrMean.py < input15.BigData_MapReduceinputFile.txt
    来自:
    浏览:413
  • YARN 的配置

    配置 opthadoop-2.7.4etchadoopcore-site.xml fs.defaultFS hdfs:bigdata:9000 hadoop.tmp.dir homebigdatahadoopdatahadoop.proxyuser.bigdata.hosts * hadoop.proxyuser.bigdata.groups * 2.bigdata:18025 yarn.resourcemanager.admin.address bigdata:18141 yarn.resourcemanager.webapp.address bigdata:10020 mapreduce.jobhistory.webapp.address bigdata:19888 4.然后启动 yarnopthadoop-2.7.4sbinstart-yarn.sh 访问 http:bigdata:18088 验证 yarn 是否启动成功3.
    来自:
    浏览:696
  • Zookeeper 在linux&mac下 安装配置

    optmoduleszookeeper-3.4.5-cdh5.1.0zdData 创建目录编辑zoo.cfg文件dataDir=optmoduleszookeeper-3.4.5-cdh5.1.0zdDataserver.1-bigdata-pro01.kfk.com:2000:3000 其他服务器server.2-bigdata-pro02.kfk.com:2000:3000server.3-bigdata-pro03.kfk.com:2000:3000cdh5.1.0zdDatatouch myidvi myid只写1 分发到机器 分别将配置好的zookeeper复制到其他两台服务器scp -r zookeeper-3.4.5-cdh5.1.0 root@bigdata-pro02.kfk.com:optmodules scp -r zookeeper-3.4.5-cdh5.1.0 root@bigdata-pro03.kfk.com:optmodules并修改 optmoduleszookeeper
    来自:
    浏览:697
  • springboot之单元测试

    代码如下:  controller:  package com.rookie.bigdata.controller;  import com.rookie.bigdata.domain.User;  importcom.rookie.bigdata.service.UserService;  import org.springframework.beans.factory.annotation.Autowired= user)  public User findUser() {  return userService.findOne(10);  }  }  User:  package com.rookie.bigdata.domain;  import com.rookie.bigdata.domain.User;  import org.springframework.stereotype.Service;  **  * serviceuser.setId(id);  user.setName(张三);  user.setAge(23);  return user;  }  }  启动程序:  package com.rookie.bigdata
    来自:
    浏览:123

扫码关注云+社区

领取腾讯云代金券