Hadoop简介

原来:计算效率低java

如今:成本下降,能用PC机,就不用大型机和高端存储了;软件容错硬件故障视为常态,经过软件保证可靠性;简化并行分布式计算,无需控制节点同步和数据交换,可是谷歌只发表了相关技术论文,没有开源实现,hadoop是模仿谷歌大数据技术的开源实现来了。node

谷歌大数据技术:MapReduce、BigTable、GFSlinux

目前hadoop是属于apache,他是开源的,分布式存储和分布式计算的平台。sql

核心组成:数据库

HDFS,分布式文件系统,存储海量数据;apache

MapReduce,并行处理框架,实现任务分解和调度。编程

用来作什么?vim

搭建大型仓库,PB级数据存储、处理、分析、统计;搜索引擎,商业智能,日志分析,数据挖掘浏览器

性能优点:1。经过增长一些硬件,高扩展,提升性能;2.低成本;3.成熟的生态圈bash

应用:百度、淘宝、华为、新浪、京东、网易、腾讯、小米

人才:开发人才和运维人才

生态圈(小工具):HDFS

MapReduce

Hive(小蜜蜂,表明着一种牵引,不用写复杂的hadoop任务,只须要写个简单的sql语句,hive就会把sql语句转化成hadoop任务去执行,下降了使用hadoop的门槛)、

HBase:与传统的关系型数据库不一样,放弃事物的特性,追求更高的扩展;与HDFS的不一样,hbase提供对数据的随机读写和实时访问,实现对表数据的读写功能、

zookeeper:动物管理员,监控hadoop集群中每一个节点的状态,配置,维护节点之间数据的一次性

版本选择:1.x与2.x差异挺大,但1.x比较稳定,易学,好上手

获取linux操做系统:

租用云主机:阿里云、UnitedStack等。   申请云主机、公网IP,将云主机与公网IP绑定。使用云主机很是方便,能够不用像虚拟机那样得受本地计算机性能的影响。hadoop须要在linux操做环境下运行的。

javac是啥?  安装JDK

是java编程的编译器,把.java  翻译成 .class 文件  由于hadoop是java写的,因此须要javac编译器

Linux配置环境变量 vim /etc/profile .bashrc .bash_profile  。得到编译器以后须要在系统中配置环境变量

export CLASS_PATH=./:$JAVA_HOME/lib
export JAVA_OPTIONS=-Djava.security.egd=file:/dev/./urandom
export PATH=$JAVA_HOME/bin:$PATH
export:设置或显示环境变量。(好比咱们要用一个命令,但这个命令的执行文件不在当前目录,这样咱们每次用的时候必须指定执行文件的目录,麻烦,在代码中先执行export,这个至关于告诉程序,执行某某东西时,须要的文件或什么东东在这些目录里).

source /etc/profile  在当前bash环境下读取并执行FileName中的命令。意思是让这个文件生效。计算机很笨的,得我一点一点指挥告诉他下一步要作什么,建立文件,环境变量路径须要我告诉它,编辑修改文件,执行。。。每一步

apt -get install <pacakge>  这个是linux软件管理包的工具

wget 网址路径  就能够自动下载

wget是一个下载文件的工具,它用在命令行下。对于Linux用户是必不可少的工具,咱们常常要下载一些软件或从远程服务器恢复备份到本地服务器。wget支持HTTP,HTTPS和FTP协议,可使用HTTP代理。所谓的自动下载是指,wget能够在用户退出系统的以后在后台执行。这意味这你能够登陆系统,启动一个wget下载任务,而后退出系统,wget将在后台执行直到任务完成,相对于其它大部分浏览器在下载大量数据时须要用户一直的参与,这省去了极大的麻烦。


 

HDFS

HDFS的文件被分红块进行存储,默认大小是64M,块是文件存储处理的逻辑单元。一共有两个节点,namenode与datanode

NameNode节点:是管理节点,存放文件元数据。文件与数据块的映射表;数据块与数据节点的映射表

DataNode节点:是工做节点,存放数据块的。因为廉价机器,每一个节点都有可能会出错,因此经过建立副本(备份),保证数据不会丢失,实现容错性

datanode 按期向 namenode汇报他的状态:网络有没有断,关机?宕机?整个状态会以一个心跳协议发送给namenode

若是namenode发生故障,整个这里边的原数据都会丢失,为了保证不丢失,作了个备份,原数据会按期同步到secondnamenode中去,大部分状况下,只要namenode不出毛病,secondnamenode只会作个备份,他不接收请求。可是,一旦namenode发生故障了,secondnamenode便会替换namenode,变成主的namenode。就跟替补队员似的,一场球赛中,替补队员也要在旁边看着比赛,一旦正式的出问题了,立马冲上去。

 

客户端(java程序/命令行)把文件名,路径告诉namenode,namenode查询原数据,把原数据返回给客户端,客户端就知道文件包含在那些块中,以及这些块分别能够在哪些datanode中找获得,客户端就会找到他们,读取他们,把他们下载下来,再进行组装。it's over

相关文章
相关标签/搜索