Hadoop是一个由Apache基金会所开发的分布式系统基础架构。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS是一个分布式文件系统(Hadoop Distributed File System),为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。此外,在Hadoop2.0以上版本,Hadoop还支持yarn来进行资源调度优化。
Hadoop是用java语言开发的,所以在部署Hadoop集群时,通常要在每个节点安装JDK,进而在每个节点搭建Namenode或DataNode,这是一个典型的主从结构,NameNode负责维护管理DataNode,DataNode负责数据块的存储,并将自身所持有的数据块信息上报给NameNode。由于目前我们只有一个节点,所以搭建的是Haoop伪分布集群,即HDFS的Namenode和Datanode都在一个节点上。
综上,要认真学习好Hadoop及其生态框架,必须熟知HDFS和MapReduce的算法原理与结构方法,在这里推荐大数据的三篇论文,Google大数据的三驾马车:Google FS、MapReduce、BigTable。奠定了风靡全球的大数据算法的基础!在Hive开发中,只有对HDFS的分布式存储方式有清晰的认识,掌握了MapReduce算法原理,才能认识到Hive在抽取数据时DataNode的工作方式,知道Hive脚本在集群上是如何执行的,从而对Hive进行调优,提升工作效率。
JDK以及hadoop安装包位于:
/home/vlog/soft/HADOOP
节点的ip地址为:localhost,使用虚拟机里的putty工具登录,如图:
配置hostname用于后续配置集群间通信寻址(需要root权限)。
vi /etc/sysconfig/network
修改hostname
保存退出
再执行一次 hostname SPDBHADOOP
将hostname与ip地址进行映射。
查看ip:
ifconfig
vi /etc/hosts(需要root权限)
在末尾追加一行
10.137.4.18 hostname
检查是否能ping通hostname
ping hostname
进入JDK存放目录,解压安装包,执行
tar -zxvf jdk-7u79-linux-x64.tar.gz
vi /etc/profile(需要root权限)
在末尾追加
export JAVA_HOME=/home/vlog/soft/HADOOP/jdk1.7.0_79
export PATH=.:$JAVA_HOME/bin:$PATH
执行source /etc/profile生效
执行java -version验证jdk安装是否成功。
进入Hadoop安装包存放目录,解压安装包
tar -zxvf hadoop-2.6.0.tar.gz
解压完成后在当前目录会出现hadoop-2.6.0文件夹,进入文件夹的/etc/hadoop目录:
cd hadoop-2.6.0/etc/hadoop
将core-sit.xml中的ip修改成主机名hostname,同时配置hadoop的安装路径;
将yarn-site.xml中的ip修改成主机名hostname;
在slaves中添加主机名hostname;
将hadoop-env.sh文件中的export的路径与JDK路径所匹配;
将mapred-site.xml文件中的mapreduce.framework.name的值设置为yarn;
设置hdfs-site.xml文件中的dfs.replication(文件副本数),实验环境设置为1,一般设置为3;
在集群第一次启动前,需要对Namenode进行格式化:
bin/hadoop namenode -format
sbin/start-dfs.sh
启动完成后,通过jps查询进程,可以看到namenode,datanode以及secondary namenode和jps进程,说明启动成功。
在浏览器地址栏输入hostname
执行Sbin/stop-dfs.sh
core-site文件中hadoop的路径配置错误,重新配置即可。
namenode没有格式化,执行/hadoop namenode -format即可。(注:namenode只能再第一次启动前进行格式化,后期如果格式化namenode会造成namenode和datanode版本不匹配的问题,这时则需要删除datanode的旧版本,然后再重新启动hadoop)
安装jdk时发现linux系统自带的openjdk,需要先删除系统自带的openjdk,然后再进行安装,安装完成后执行java -version查看是否安装成功。