大数据存储原理

MySQL数据库连接密码Mysql123456###
虚拟机用户名和密码naya:3xroot

虚拟机(virtual machine),就是通过软件技术虚拟出来的一台计算机。常见的虚拟机软件有 VMware Workstation(简称 VMware)、VirtualBox、Microsoft Virtual PC 等,其中 VMware 市场占有率最高,我们使用 VMware进行 Linux 的安装,Vmware 可以同时运行多个操作系统,可以像 Windows 应用程序一样来回切换。下载好VMware后,“创建新的虚拟机”“选择客户机操作系统”,选择“Linux”,并在“版本”下拉列表框中选择要安装的对应的 Linux 版本,这里选择“CentOS 6”,可以创建一台Linux系统的机器。

VMware 提供的网络连接有 5 种,分别是"桥接模式"、“NAT 模式”、“仅主机模式”、“自定义"和"LAN 区段”:
·····桥接模式:相当于虚拟机的网卡和宿主机的物理网卡均连接到虚拟机软件所提供的 VMnet0 虚拟交换机上,因此虚拟机和宿主机是平等的,相当于一个网络中的两台计算机。这种设置既可以保证虚拟机和宿主机通信,也可以和局域网内的其他主机通信,还可以连接 Internet,是限制最少的连接方式,推荐新手使用。
·····NAT 模式:相当于虚拟机的网卡和宿主机的虚拟网卡 VMnet8 连接到虚拟机软件所提供的 VMnet8 虚拟交换机上,因此本机是通过 VMnet8 虚拟网卡通信的。在这种网络结构中,VMware 为虚拟机提供了一个虚拟的 NAT 服务器和一个虚拟的 DHCP 服务器,虚拟机利用这两个服务器可以连接到 Intemet。所以,在正常情况下,虚拟机系统只要设定自动获取 IP 地址,就能既和宿主机通信,又能连接到 Internet了。但是这种设置不能连接局域网内的其他主机。
·····仅主机模式:宿主机和虚拟机通信使用的是 VMware 的虚拟网卡 VMnet1,但是这种连接没有 NAT 服务器为虚拟机提供路由功能,所以仅主机网络只能连接宿主机,不能连接局域网,也不能连接 Internet 网络。
·····自定义网络:可以手工选择使用哪块虚拟机网卡。如果选择 Vmnet1,就相当于桥接网络;如果选择 VMnet8,就相当于 NAT 网络。
·····LAN 区段:这是新版 VMware 新增的功能,类似于交换机中的 VLAN(虚拟局域网),可以在多台虚拟机中划分不同的虚拟网络。

简单总结—下,在 VMware 安装好后,会生成两个虚拟网卡 VMnet1 和 VMnet8 (在 Windows 系统的"网络连接"中可以査看到)
其中常用设置有以下 2 种:
1、需要宿主机的 Windows 和虚拟机的 Linux 能够进行网络连接,使用"桥接模式"(桥接时,Linux 也可以访问互联网,只是虚拟机需要配置和宿主机 Windows 同样的联网环境);
2、需要宿主机的 Windows 和虚拟机的 Linux 能够进行网络连接,同时虚拟机的 Linux 可以通过宿主机的 Windows 连入互联网,使用"NAT模式"。√

hadoop是一个文件系统,外加一个离线处理框架(map-reduce执行框架),主要用于海量数据文件的保存,非实时的海量数据的计算,不过由于提供的上层api不是太友好,加上mapreduce处理框架比较慢,现在基本上都拿它来作为文件系统使用。
spark是一个执行引擎,本身不保存数据,所以需要外部的文件系统来保存数据,很多时候会基于hadoop来保存数据。spark计算时尽可能把数据放到内存中(基于内存),还提供了很好的上层用户使用的接口,包括spl语句(spark sql),处理数据十分方便。它比map-reduce处理框架(基于磁盘)要快很多倍。现在基本上用它来做离线数据处理。
storm是一个实时数据处理框架,只提供最基本的数据流传输框架元素和基本的数据流接口,用户需要自己编写处理过程和处理逻辑。flink是实时数据处理系统,自己有一套完整的生态。上层提供了很多数据处理算子(接口函数)供用户使用,对用户更加友好,方便使用。现在很多公司都用它来进行实时数据处理。
flink是实时数据处理系统,自己有一套完整的生态。上层提供了很多数据处理算子(接口函数)供用户使用,对用户更加友好,方便使用。现在很多公司都用它来进行实时数据处理。

分布式:一个业务分拆多个子业务,部署在不同的服务器上
集群:同一个业务,部署在多个服务器上

如果我们是第一次部署,那么我觉得还是使用独立集群管理器好一些,安装简单,如果我们只运行spark任务的话,独立管理器和yarn是没有任何区别的;如果我们运行spark的同时还要运行hadoop 的MapReduce之类的,或者我们想要用资源调度等其他功能,那么可以考虑使用yarn之类的

大数据本身是个很宽泛的概念,Hadoop生态圈(或者泛生态圈)基本上都是为了处理超过单机尺度的数据处理而诞生的。你可以把它比作一个厨房所以需要的各种工具。锅碗瓢盆,各有各的用处,互相之间又有重合。你可以用汤锅直接当碗吃饭喝汤,你可以用小刀或者刨子去皮。但是每个工具有自己的特性,虽然奇怪的组合也能工作,但是未必是最佳选择。

·····首先你要能存的下大数据。传统的文件系统是单机的,不能横跨不同的机器。HDFS(Hadoop Distributed FileSystem)的设计本质上是为了大量的数据能横跨成百上千台机器,但是你看到的是一个文件系统而不是很多文件系统。比如你说我要获取/hdfs/tmp/file1的数据,你引用的是一个文件路径,但是实际的数据存放在很多不同的机器上。你作为用户,不需要知道这些,就好比在单机上你不关心文件分散在什么磁道什么扇区一样。HDFS为你管理这些数据。

······存的下数据之后,你就开始考虑怎么处理数据。虽然HDFS可以为你整体管理不同机器上的数据,但是这些数据太大了。对于很多公司来说,单机处理是不可忍受的,比如微博要更新24小时热博,它必须在24小时之内跑完这些处理。那么我如果要用很多台机器处理,我就面临了如何分配工作,如果一台机器挂了如何重新启动相应的任务,机器之间如何互相通信交换数据以完成复杂的计算等等。这就是MapReduce / Tez / Spark的功能。MapReduce是第一代计算引擎,Tez和Spark是第二代。MapReduce的设计,采用了很简化的计算模型,只有Map和Reduce两个计算过程(中间用Shuffle串联),用这个模型,已经可以处理大数据领域很大一部分问题了。
·····那什么是Map什么是Reduce? 考虑如果你要统计一个巨大的文本文件存储在类似HDFS上,你想要知道这个文本里各个词的出现频率。你启动了一个MapReduce程序。Map阶段,几百台机器同时读取这个文件的各个部分,分别把各自读到的部分分别统计出词频,产生类似(hello, 12100次),(world,15214次)等等这样的成对结果(我这里把Map和Combine放在一起说以便简化);这几百台机器各自都产生了如上的集合,然后又有几百台机器启动Reduce处理。Reducer机器A将从Mapper机器收到所有以A开头的统计结果,机器B将收到B开头的词汇统计结果(当然实际上不会真的以字母开头做依据,而是用函数产生Hash值以避免数据串化。因为类似X开头的词肯定比其他要少得多,而你不希望数据处理各个机器的工作量相差悬殊)。然后这些Reducer将再次汇总,(hello,12100)+(hello,12311)+(hello,345881)= (hello,370292)。每个Reducer都如上处理,你就得到了整个文件的词频结果。
Map+Reduce虽然好用,但是很笨重。第二代的Tez和Spark除了内存Cache之类的新feature,本质上来说,是让Map/Reduce模型更通用,让Map和Reduce之间的界限更模糊,数据交换更灵活,更少的磁盘读写,以便更方便地描述复杂算法,取得更高的吞吐量。

······Pig和Hive:有了MapReduce,Tez和Spark之后,程序员发现,MapReduce的程序写起来真麻烦。他们希望Pig和Hive简化这个过程。这就好比你有了汇编语言,虽然你几乎什么都能干了,但是你还是觉得繁琐。你希望有个更高层更抽象的语言层来描述算法和数据处理流程。于是就有了Pig和Hive。Pig是接近脚本方式去描述MapReduce,Hive则用的是SQL。它们把脚本和SQL语言翻译成MapReduce程序,丢给计算引擎去计算,而你就从繁琐的MapReduce程序中解脱出来,用更简单更直观的语言去写程序了。
有了Hive之后,人们发现SQL对比Java有巨大的优势。Hive逐渐成长成了大数据仓库的核心组件。甚至很多公司的流水线作业集完全是用SQL描述,因为易写易改,一看就懂,容易维护。
······Hive在MapReduce上跑非常慢,于是Impala,Presto,Drill诞生了(当然还有无数非著名的交互SQL引擎,就不一一列举了)。三个系统的核心理念是,MapReduce引擎太慢,因为它太通用,太强壮,太保守,我们SQL需要更轻量,更激进地获取资源,更专门地对SQL做优化,而且不需要那么多容错性保证。
······这些系统,说实话,一直没有达到人们期望的流行度。这时候又两个异类Hive on Tez / Spark和SparkSQL被造出来了。它们的设计理念是,MapReduce慢,但是如果我用新一代通用计算引擎Tez或者Spark来跑SQL,那我就能跑的更快。而且用户不需要维护两套系统。这就好比如果你厨房小,人又懒(形容MapReduce过程复杂而且慢),对吃的精细程度要求有限,那你可以买个电饭煲,能蒸能煲能烧,省了好多厨具(MapReduce是传统厨具)。

上面的介绍,基本就是一个数据仓库的构架了。底层HDFS,上面跑MapReduce/Tez/Spark,在上面跑Hive,Pig。或者HDFS上直接跑Impala,Drill,Presto。这解决了中低速数据处理的要求。
······那如果我要更高速的处理呢?我希望显示不是24小时热博,我想看一个不断变化的热播榜,更新延迟在一分钟之内,于是又一种计算模型被开发出来,这就是Streaming(流)计算。Storm是最流行的流计算平台。流计算的思路是,如果要达到更实时的更新,我何不在数据流进来的时候就处理了?比如还是词频统计的例子,我的数据流是一个一个的词,我就让他们一边流过我就一边开始统计了。流计算很牛逼,基本无延迟,但是它的短处是不灵活,你想要统计的东西必须预先知道,毕竟数据流过就没了,你没算的东西就无法补算了。因此它是个很好的东西,但是无法替代上面数据仓库和批处理系统。
······ 还有一个有些独立的模块是KV Store,比如Cassandra,HBase,MongoDB以及很多很多很多很多其他的(多到无法想象)。所以KV Store就是说,我有一堆键值,我能很快速滴获取与这个Key绑定的数据。比如我用身份证号,能取到你的身份数据。这个动作用MapReduce也能完成,但是很可能要扫描整个数据集。而KV Store专用来处理这个操作,所有存和取都专门为此优化了。比如我网页上有个根据订单号查找订单内容的页面,而整个网站的订单数量无法单机数据库存储,我就会考虑用KV Store来存。KV Store的理念是,基本无法处理复杂的计算,大多没法JOIN,也许没法聚合,没有强一致性保证(不同数据分布在不同机器上,你每次读取也许会读到不同的结果,也无法处理类似银行转账那样的强一致性要求的操作)。但是特点是极快。
······除此之外,还有一些更特制的系统/组件,比如Mahout是分布式机器学习库,Protobuf是数据交换的编码和库,ZooKeeper是高一致性的分布存取协同系统,等等。
······调度系统。现在最流行的是Yarn。 有了这么多乱七八糟的工具,都在同一个集群上运转,大家需要互相尊重有序工作。所以另外一个重要组件是,调度系统。现在最流行的是Yarn。你可以把他看作中央管理,好比你妈在厨房监工,哎,你妹妹切菜切完了,你可以把刀拿去杀鸡了。只要大家都服从你妈分配,那大家都能愉快滴烧菜。你可以认为,大数据生态圈就是一个厨房工具生态圈。为了做不同的菜,中国菜,日本菜,法国菜,你需要各种不同的工具。而且客人的需求正在复杂化,你的厨具不断被发明,也没有一个万用的厨具可以处理所有情况,因此它会变的越来越复杂。

虚拟机需用

需要从本地上传到虚拟机的文件放在 D:\Courses\Softwares

两台机器内存加在一起小于等于物理机内存的75% 12*75%=9

Linux指令

图形界面startx
Poweroff指令关机
cd / 意思是回到根目录
cd ~ 进入用户主文件夹
cd … 意思是到上一级目录;
cd - 意思是返回到上次的目录
tar -xzvf解压
tar -zzvf压缩
java -version
whereis java
ll查看当前文件目录
ls -la可以看到隐藏文件
进入vi编辑工具界面,输入i进入编辑模式,按esc,输入冒号:,再输入wq(保存退出)

[naya@c1 ~]$ ssh c2用户登录到c2机器
mkdir hadoopdata创建文件夹
source .bash_profile 修改完环境变量以后使生效
cat .bash_profile 查看当前环境变量
echo ¥HADOOP_HOME检验环境变量
echo H A D O O P H O M E HADOOP_HOME HADOOPHOME确认环境变量

Exiting with status 0日志中状态为0就是正常退出
Ctrl+C退出ping
lsof -i:port

c1:50070(启动集群)
c1:18088(需要启动集群)
hdfs namenode -format在master机器初始化名称节点
hadoop-2.8.3/sbin/start-all.sh启动集群
hadoop-2.8.3/sbin/stop-all.sh 关闭集群
hadoop fs -mkdir /test 新建文件夹
hadoop fs -put xxx /xxx/ 传文件eg. hadoop fs -put sougou-data/sougou.500w.utf8 /test/
hadoop jar ~/hadoop-2.8.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.3.jar pi 10 10启动集群后跑pi程序
(pi后第一个参数是map任务2-6一般是2 第二个点是采样点个数可以测试10000000千万 100000000亿 reduce和具体结果需要有关一般是1)
hadoop fs -ls / 看根目录下有哪些
hadoop fs -rm /test/xxx 删除文件
hadoop fs -rm -r /test 删除文件夹

python使用

之前一直使用conda和pip ,有时候经常会两者混用。但是今天才发现二者装的东西不是在一个地方的,conda ≈ pip(python包管理) + virtualenv(虚拟环境) + 非python依赖包管理,conda 的关键作用是可以创建不同版本的 python 的环境。

pip
pip install xxx,下载的包会存在特定环境的目录里面,D:\Anaconda3\envs\nlp\Lib\site-packages\fasttext,使用pip uninstall xxx,包就卸载掉了,也可以用conda remove --name nlp --all 来删除环境
conda
conda install xxx ,不管在什么环境下载的包,都统一放在一个目录里面:
D:\Anaconda3\pkgs\fasttext,这个fasttext里面也有site-packages文件夹
在某个环境下面下载了某个包,再到另外一个环境下载同样的包,conda会自动在上面的目录里面找,如果有,就不会重复下载,而是将这个包的site-packages下的文件复制到当前环境下(和直接pip install 一样)
使用conda uninstall xxx时,和pip uninstall一样,删除了当前环境site-packages里面的包内容,但是在上述目录里面还存在这这个包,此时再到另外一个环境下载这个包,还是将site-packages复制一份到当前环境下,做到了一次下载,到处使用。

conda需记

新创建的虚拟环境路径C:\Users\18235.conda\envs
pip包安装路径可定期清理C:\Users\18235\AppData\Local\pip

更新自己conda update conda
更新软件conda update numpy scipy matplotlib scikit-learn
创建虚拟环境指定python版本pythonconda create --name p36 python=3.6
删除虚拟环境conda remove --name test --all
查看当前环境conda env list
切换环境Linux下:source activate snowflakes win下:activate p36 直接activate 切换到默认base环境
查看安装了哪些软件conda list
安装指定版本软件conda install spyder必须是两个等号没有等号默认最新版
卸载软件conda remove notebook
输入Spyder直接启动
不知道安装哪个版本时候上网查询版本安装软件pip install h2o
1.x
卸载软件pip uninstall h2o
升级软件到最新pip install -U h2o或者pip install --update h2o

notebook使用

进入notebook
在网页中打开一个端口8020,–ip不加只能本机访问,加上其他用户也能访问notebook,–no-browser不要弹出页面
jupyter notebook --port=8280 --ip=0.0.0.0 --no-browser -NotebookApp.password=sha1:9345ac9e27b4:ac459b2f50c4fd117a7849dea39721fe4dcb8b02 D:\Courses\PythonProjects
(进入ipython 生成密码from notebook.auth import passwd; passwd())(密码zhinaying)
打开浏览器:网址输入localhost:8280
关闭退出notebook:在命令行ctrl+c

在notebook中画图要加两行让图片嵌入
import matplotlib.pyplot as plt
%matplotlib inline
%pylab inline
数据抓取作业
jupyter notebook --port=8280 --ip=0.0.0.0 --no-browser -NotebookApp.password=sha1:9345ac9e27b4:ac459b2f50c4fd117a7849dea39721fe4dcb8b02 D:\Desktop\数据抓取与清洗\codezny

网速慢使用豆瓣镜像
!pip install mysql-connector-python -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple
在ipython中执行终端命令可以加感叹号,感叹号执行的命令会自动切换到环境所在终端执行特别是在notebook中,当然也可以open terminal
!pip install mysql-connector-python -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple

python下使用MySQL

安装驱动推荐官方mysql python connector:
official(recommended):
pip install mysql-connector-python
数据抓取课程使用的pymysql是第三方库

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值