Hadoop本身是JAVA语言开发,所以需要安装JDK。为了更好的使用Hadoop建议使用Sun的JDK。Linux是Hadoop唯一支持的生产平台,所以,童鞋们还是装上Linux吧,哈哈。其实Linux挺好用的。
Hadoop目录结构
Hadoop0.23版本相对以前的版本变化还是比较大的,主要有以下几方面:
(1)Hadoop0.23中加入了权限的区分,原来的bin目录被分成两个部分——bin和sbin目录,sbin目录存放的是Hadoop的运行脚本,只有超级用户才可以执行;而bin目录下存放的东西是所有用户都可以执行的。
(2)原来的配置文件在conf目录下,在0.23版本中,配置文件放到了
etc/hadoop目录下了。
(3)include和lib目录下存放的是用C语言开发的Hadoop头文件和库文件;
(4)libexec目录存放的是Hadoop的配置脚本;
(5)share目录下存放的是doc文档和最重要的Hadoop的Jar包文件,就是开发中用到的那些Jar包(开发就用这里的包,里面有Hadoop的全部包和它需要的第三方包)
安装
从Hadoop的官方网页下载最新版的Hadoop(http://hadoop.apache.org)。解压到本地文件系统中
%tar xvf hadoop-x.y.z.tar.gz
在运行Hadoop安装程序之前,需要指定JAVA在本机的路径。
创建一个Hadoop的安装目录的环境变量(例如
HADOOP_DEV_HOME),再把Hadoop安装目录放在命令行路径上,是非常方便的。例如:
%export
HADOOP_DEV_HOME=/home/tony/hadoop-0.23.0
%export
HADOOP_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop
%export PATH=$PATH:${
HADOOP_DEV_HOME}/bin
设置完之后,运行命令测试Hadoop的安装是否正确
%hadoop version
如果显示出版本信息,则表示成功了。
配置
1.配置SSH
要启动Hadoop的守护进程,必须要配置SSH。在Ubuntu中,可以使用下面的命令来安装SSH
%:sudo apt-get install ssh
然后创建一个新的SSH密钥,以启动无密码登陆
% ssh-keygen -t rsa -P '' -f
~/.ssh/id_rsa
% cat ~/.ssh/id_rsa.pub
>>
~/.ssh/authorized_keys
用以下指令测试:
% ssh localhost
第一次执行时会有个提示,输入yes就行了,然后一路回车,如果成功了,则需要输入密码。
2.配置环境变量
在~/.bashrc文件中增加如下内容(此处没有配置yarn的环境变量)
export
HADOOP_DEV_HOME=/home/tony/cop/Cloud/hadoop-0.23.5
export
HADOOP_COMMON_HOME=${HADOOP_DEV_HOME}
export
HADOOP_HDFS_HOME=${HADOOP_DEV_HOME}
export
HADOOP_CONF_DIR=${HADOO_DEV_HOME}/etc/hadoop
网上还说要在libexec/hadoop-config.sh中添加JAVA_HOME,我在~/.bashrc中配置了,所以没有在这里进行配置,运行Hadoop也成功了,如果各位运行没有成功,可以在这里指定一下JAVA_HOME。
注:我试了,在hadoop-config.sh中增加JAVA_HOME,一直没成功。建议大家去etc/hadoop/hadoop-env.sh中修改。
3.配置Hadoop的配置文件
配置文件都放在etc/haddop目录下了,主要的配置文件有core-site.xml(用于配置Common组件的属性)、hdfs-site.xml(HDFS的配置文件)和mapred-site.xml(MapReduce的配置文件)。
Hadoop分有三种运行模式:独立模式、伪分布模式和分布模式。独立模式不需要进行配置就可以运行,是默认的模式;伪分布模式和分布模式主要差别在HDFS对于文件副本数要求的差别,伪分布式只有一个副本,而分布式模式需要多个副本。
(1)伪分布式模式
修改core-site.xml文件
fs.default.name
hdfs://localhost/
dfs.replication
1
hadoop.tmp.dir
/home/tony/cop/Cloud/hadoop-0.23.5/tmp
注:dfs.replication的数目为1就是伪分布式,>1就是分布式。由于core-default.xml中默认把临时文件目录放在了/tmp目录下了,重启机器就会丢失数据,所以我们在这里对hadoop.tmp.dir重新定义,以覆盖默认的配置。
配置hdfs-site.xml
这部分还在研究中。在使用中,如果仅执行 $ hadoop namenode
-format,我遇到的情况是没有DataNode被启动,导致无法操作hdfs。所以我配置了一下datanode
格式化HDFS文件系统
使用Hadoop前,必须格式化一个全新的HDFS安装。通过创建存储目录和namenode管理文件系统的元数据。需要进入bin目录,执行下面的语句
% hadoop namenode -format
如前段所说,仅执行这条语句后,datanode没有启动,所以我加了一句
%
hadoop datanode -format
启动和终止守护进程
% ./sbin/start-dfs.sh
% ./sbin/start-mapred.sh(Hadoop
0.23.5中没找到这个东东,不知道是我少下了什么东西,还是有问题)
% ./sbin/stop-dfs.sh
% ./sbin/stop-mapred.sh