人的一生犹如负重致远,不可急躁。 以不自由为常事,则不觉不足。 心生欲望时,应回顾贫困之日。 心怀宽恕,视怒如敌,则能无视长久。 只知胜而不知敗,必害其身。 责人不如责己,不及胜于过之。
分类: HADOOP
2017-02-09 13:30:47
2002年的Apache的Nutch,Nutch是一个开源Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。
2003年Google发表了一篇技术学术论文谷歌文件系统(GFS)。GFS也就是google File System,google公司为了存储海量搜索数据而设计的专用文件系统。
2004年Nutch创始人Doug Cutting基于Google的GFS论文实现了分布式文件存储系统名为NDFS。
2004年Google又发表了一篇技术学术论文MapReduce。MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行分析运算。
2005年Doug Cutting又基于MapReduce,在Nutch搜索引擎实现了该功能。
2006年,Yahoo雇用了Doug Cutting,Doug Cutting将NDFS和MapReduce升级命名为Hadoop,Yahoo开建了一个独立的团队给Goug Cutting专门研究发展Hadoop。
Hadoop实现了一个(Hadoop Distributed File System),简称HDFS。
HDFS有高的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
官网地址
镜像地址
网页如下:
稳定版本1
下载稳定版本1如图:
本人安装的操作系统是ubuntu-16.04-desktop-i386,你也可以选择其他的Linux发行版本安装。
安装 ssh
sudo apt-get install ssh
sudo apt-get install rsync
由于hadoop使用ssh协议来管理远程守护进程,因此还需要配置免密码登录,对于单极为分布式使用以下命令进行操作:
ssh-keygen –t rsa –P ‘’ –f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
下载jdk1.6.x以上版本,本人下载的是jdk-7u80-linux-i586.tar.gz。
tar –zxvf jdk-7u80-linux-i586.tar.gz
在操作系统用户目录下的 .bashrc 文件末尾增加
export JAVA_HOME=/usr/bin/develop/jdk1.7.0_80
export JRE_HOME=${JAVA_HOME}/jre
export PATH=${JAVA_HOME}/bin:$PATH
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
tar –zxvf hadoop-1.2.1.tar.gz
export HADOOP_HOME=/usr/bin/develop/hadoop-2.7.3
export HADOOP_HOME_WARN_SUPPRESS=1
export PATH=${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH
注释:HADOOP_HOME_WARN_SUPPRESS是去掉警告的。
例如:Warning: $HADOOP_HOME is deprecated
这个配置是hadoop的核心配置,至少需要配置HDFS的地址及端口号,这里使用以下配置方法:
fs.default.name用于指定NameNode的IP地址和端口号,localhost就是HDFS NameNode的地址,9000是HDFS的NameNode RPC交互端口。
这里主要配置HDFS的相关属性和参数:
dfs.replication用于指定HDFS中每个Block块被复制的次数,起到数据冗余备份的作用。
在典型的生产系统中,这个数常被设置为3,这里是伪分布式,只有一个节点,因此设置为1。dfs.name.dir用配置HDFS的NameNode的元数据,以逗号隔开,HDFS会把元数据冗余复制到这些目录下。dfs.data.dir用于配置HDFS的DataNode的数据目录,以逗号隔开,HDFS会把这些数据存储到这些目录下。这两个配置都在tmp目录下,建议用户在配置时使用自己创建的目录即可。
配置mapred-site.xml的代码:
mapred.job.tracker是Mapreduce Jobtracker的IP地址及端口号,localhost就是Mapreduce Jobtracker的地址,9001是Mapreduce Jobtracker RPC交互端口。
hadoop-env.sh用于配置集群特有的变量值,这里至少需要JAVA_HOME环境变量
如下图:
如下图:
在执行start-all.sh启动命令后,hadoop首先启动了NameNode的守护进程,紧接着是DataNode和secondaryNameNode守护进程,然后是Jobtracker和TaskTracker守护进程。
jps命令可以看到伪分布式下启动的所有守护进程。
NameNode、DataNode和SecondaryNode是HDFS的三个守护进程。
Jobtracker和TaskTracker是Mapreduce的守护进程。
通过hadoop NameNode和JobTracker的web接口来查看集群是否启动成功。
NameNode为
如下图:
从图中可以看到hadoop集群的配置容量、使用情况及节点是否正常等集群信息,也可以直接在web界面上浏览HDFS的内容以及日志文件。
JobTracker为
如下图:
从图中可以看到Mapreduce的相关情况,包括集群Map和Reduce的槽位数及最大容量,以及提交的作业数。Hadoop Mapreduce默认使用FIFO调度器,因此默认有一个default队列,用户提价的全部作业都会被提交到default队列并使用FIFO调度器调度运行。
命令:stop-all.sh
如下图:
参考链接:
http://baike.baidu.com/link?url=k5UBL0furMUHc7IHP0QW-Y03B3iBWg8jTVmcXJSHFfpS7FLKukHJ4ez0j-OhSBTv9u1XhIdv2sWEucur9mdZZq
参考书籍:
[1]翟周伟.Hadoop核心技术[M].机械工业出版社.