最近想学习下大数据,有点急于求成,因而去网上找了各类培训机构的视频,发现大都质量不佳,理论基本不说或者简单讲下,而后教你照猫画虎的敲代码,出了问题都无法分析。最后仍是找了厦门大学的公开课从理论开始稳扎稳打的学习了。node
Hadoop的理论起源主要来自谷歌公司的三大论文,并迅速应用于全球各大互联网公司。所以,学习大数据Hadoop是绕不开的一个知识点。今年来,大数据的兴起其实来自于计算机技术的发展,物联网技术产生了大量的数据,云技术使得计算机存储与运算资源更加普及,所以大数据技术应运而出,用以解决大量数据的存储与计算的问题。web
学习Hadoop,须要知道Hadoop生态圈中各个项目的功能与做用,为什么要用开发这种新项目,而不使用已有项目实现这种功能。数据库
Hadoop的底层文件系统,与传统文件系统不一样在于它是分布式的。同时与已有的分布式文件系统相比,它又有着旧分布式文件系统没有的优势。如:高可用性,高可靠性,吞吐量大,能使用廉价服务器构建,可经过不断增长机器数来进行拓展。具体实如今HDFS文章中记录。服务器
构建在HDFS之上的分布式数据库系统。是一种基于列的NoSQL数据库,从另外一个角度看也能当作键值对的NoSQL数据库。与传统关系型数据库相比,最大的优点在于可经过增长机器进行横向扩展,而且能使用廉价服务器。app
一种分布式数据仓库,能够导入外部数据后用类SQL语言进行操做。通常用于历史数据的查询与分析。与HBase不一样,HBase经常使用于实时的交互式查询。框架
一种分布式计算框架,MapRuce原本就是一种计算模型的名称。核心思想是“分而治之”,能将计算分解成多个小计算,由多个机器同时计算。适合离线批处理。webapp
一种流式计算框架,MapRuce适合批处理,没法完成流式数据的处理,所以开发出流式处理框架。分布式
基本的关系就是,底层用HDFS存储,之上是核心计算框架MapRuduce。而Hive,Hbase,Pig等等组件通常都是将自身的操做转化成Mapreduce代码而后经过Mapreduce进行计算实现功能。同时与MapRuduce框架同一层次的Storm解决了流式数据的处理。Hbase虽然是使用Mapreduce框架进行处理,可是基本也能实现实时交互式处理的要求。(也正是Mapreduce存在种种问题,Spark渐渐兴起,虽然Mapreduce也作了各类优化,可是在某些领域相比Spark仍是有些差距)。oop
准备。同一局域网的Linux服务器数台,我是用个人游戏本同时开了3个虚拟机代替的。学习
Linux里建立hadoop用户,专门负责Hadoop项目,便于管理与权限划分。
安装JDK,下载Hadoop时官方会指明JDK版本需求,设置JDK环境变量
安装SSH并设置免密登陆。由于HDFS的NameNode与其余DateNode等节点的通信与管理就是基于SSH协议的。而且将要使用的机器域名写入hosts文件,方便命名。
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://Master:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>file:/usr/local/hadoop/tmp</value> <description>Abase for other temporary directories.</description> </property> </configuration>
<configuration> <property> <name>dfs.namenode.secondary.http-address</name> <value>Master:50090</value> </property> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/data</value> </property> </configuration>
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>Master:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>Master:19888</value> </property> </configuration>
<configuration> <property> <name>yarn.resourcemanager.hostname</name> <value>Master</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>
看看网友博客和官方文档差很少就会了,基本一个形式。下载解压-配置环境变量-配置组件的配置文件,基本都是xxxx-env.sh,xxx-site.sh,xxx-core.sh,slave,work这种,在里面按照需求配置参数就行了,具体参数意思和必需要配置的参数看看官方文档也就懂了(滑稽)。