1.linux
shell指令学习我是从私房菜开始看的,而且只看了shell指令相关的
linux | dos (dos命令百度百科 内容很全) |
ls显示目录列表,较常用的是ls -l,用别名ll表示 | 使用dir |
cd directory 进入directory表示的目录,又分为相对路径和绝对路径, 相对路径前面是不用/,相对于当前目录开始 绝对路径是以/目录开始 ./表示当前目录 ../表示上级目录 |
windows中有盘符所以切换盘符的时候要用cd /D directory 其他情况和linux相同 也可以直接盘符D: |
编辑文件使用vi,这里内容很多,要理解命令模式,编辑模式的区分,学习起来较为容易 有i,o等命令可以进入编辑模式,用esc退出编辑模式,退出vi可以用:wq保存写入内容后退出 ;q!不保存强制退出 |
edit |
df -ah查看磁盘使用情况,du -sh file 这里file可以是目录和文件查看指定文件和目录使用空间大小 |
|
2.hadoop
hadoop1分为hdfs和mapred,hadoop2分为hdfs,mapreduce和yarn。我主要学习了hadoop1
hadoop要求jdk,因此要先安装jdk,hadoop安装主要配置文件为core-site.xml hdfs-site.xml mapred-site.xml 和hadoop-env.sh
主要学习途径是stackoverflow,jira。hadoop权威指南
hadoop的核心架构 HDFS是按照Master和Slave的结构。由namenode和datanode构成,namenode通过datanode的heartbeat(“心跳”)确定节点正常。namenode管理datanode的block信息。同时管理client对集群的访问。还有一个secondnamenode实现namenode的冷备份,根据snapshot(“快照”)和checkpoint(“监测点”)实现和namenode的一致性,在namenode节点dead时secondnamenode替代namenode的工作。datanode保存hadoop的数据,datanode的基本数据单元是block,每个block大小为64M。因此可知hadoop是用来存储大文件的。小文件的读写会很消耗hadoop内存。
热备份:b是a的热备份,如果a坏掉。那么b马上运行代替a的工作。
冷备份:b是a的冷备份,如果a坏掉。那么b不能马上代替a工作。但是b上存储a的一些信息,减少a坏掉之后的损失。
mapreduce 一种云计算的核心计算模式,一种分布式运算技术,也是简化的分布式编程模式,它主要用于解决问题的程序开发模型,也是开发人员拆解问题的方法。
原理是 map :
3.hbase
hbase是列族数据库底层依赖于hdfs。hbase是按照Master和Slave的结构。分为HMaster和regionserver。hbase中hmaster主要管理-ROOT-和.META.表的数据。-ROOT-只有一个是不可分割的。存储了.META.的索引信息,而.META.存储了regionserver中region的索引信息。所以是采用了三级索引思想。regionserver中是存储数据的地方,而regionserver中有可以有多个region和一个Hlog。每个region里面又分为多个store,store存储的列族数据。store中有memstore和storefile。memstore达到阀值时,将数据刷写成storefile中。Hregion是以完整的记录行存储。hbase内部中行键是有序的。client只能根据行键key读取数据。hbase中内部数据是
hbase中最小单元是hfile,HFile中KeyValue数据的存储格式,HFile是Hadoop的二进制格式文件,实际上StoreFile就是对HFile做了轻量级包装,即StoreFile底层就是HFile
hbase中还内置有zookeeper(你也可以不使用内置的zookeeper),Zookeeper Quorum存储-ROOT-表地址、HMaster地址
HRegionServer把自己以Ephedral方式注册到Zookeeper中,HMaster随时感知各个HRegionServer的健康状况
Zookeeper避免HMaster单点问题
client访问过程 : client -> zookeeper -> -ROOT- > .META.-> 用户数据表
4.hive
hive是数据仓库,hive底层依赖于hadoop,它的sql解析是通过mapreduce任务完成的。hive的两个核心服务是metastore和hiveserver。
数据访问和存储是采用sql方式访问的。hiveQL是hive的核心。它不支持update和delete
(1)HQL中对查询语句的解释、优化、生成查询计划是由Hive完成的
(2)所有的数据都是存储在Hadoop中
(3)查询计划被转化为MapReduce任务,在Hadoop中执行(有些查询没有MR任务,如:select * from table)
(4)Hadoop和Hive都是用UTF-8编码的
hiveQL中select的使用,与sql的区别和hive的性能优化都是重点去理解的。