Hadoop安装手记
1. 创建java运行环境
l 下载jdk for linux: jdk-6u22-linux-i586.bin
http://www.java.com/zh_CN/download/manual.jsp
l 安装jdk:chmod a+x jdk-6u22-linux-i586.bin;
./ jdk-6u22-linux-i586.bin
l 设置环境变量
#vi /etc/profile
export JAVA_HOME=/home/ydzhang/jdk1.6.0_22
export PATH="$JAVA_HOME/bin:$PATH"
export CLASSPATH=".:$JAVA_HOME/lib:$CLASSPATH"
l 确认java安装成功
javac/java –version (正确配置PATH)
运行hello world (正确配置CLASSPATH)
2. 搭建hadoop集群
Hadoop可以在三种模式下运行,单机模式,伪分布式模式(NameNode与DataNode在一个节点上),分布式模式(NameNode与DataNode分散在多个不同的节点上)。
注:本例为伪分布式模式,搭建hadoop前,确保各个节点已经安装ssh。
参数配置:(配置文件在HADOOP_HOME/conf目录中, HADOOP_HOME为hadoop的根目录)
l 设置环境变量 hadoop-env.sh
如果环境变量都已设置好,此处无需再做配置
l core-site.xml (默认的配置可查看HADOOP_HOME/docs/cn/core-default.html)
修改该配置文件如下,更改fs.default.name,hadoop.tmp.dir选项。
fs.default.name为文件系统默认名字,其默认值为:file:///
hadoop.tmp.di为临时文件路径,其默认值为:/tmp/hadoop-${user.name}
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/u/tmp</value>
</property>
</configuration>
l hdfs-site.xml (默认的配置可查看HADOOP_HOME/docs/cn/hdfs-default.html)
修改该配置文件如下,修改dfs.replication,dfs.name.dir,dfs.data.dir。
dfs.replication为副本数,默认值为3。
dfs.name.dir为namenode存储数据的根目录,默认值为${hadoop.tmp.dir}/dfs/name。
dfs.data.dir为datanode存储数据的根目录,默认值为${hadoop.tmp.dir}/dfs/data。
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/home/u/hdfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/u/hdfs/data</value>
</property>
</configuration>
l mapred.xml(默认的配置可查看HADOOP_HOME/docs/cn/mapred-default.html)
修改该配置文件如下,修改mapred.job.tracker的值。
mapred.job.tracker为jobtracker运行的主机和端口号,默认为localhost;
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>
如果配置有多个DataNode并且运行在不同的机器上,则将配置好的Hadoop文件夹拷贝到对应的DataNode上。
启动hadoop前,需格式化hadoop的文件系统hdfs,在master上,进入hadoop文件夹输入命令:bin/hadoop namenode –format
启动所有的服务:bin/start-all.sh
验证hadoop是否安装成功:
http://localhost:50030 (mapreduce的web页面)
http://localhost:50070 (hdfs的web页面)
对于hadoop来说,mapreduce及hdfs都是必须的,但也可以只启动hdfs(start-dfs.sh)或mapreduce(start-mapred.sh)
向正在运行的集群中添加新的数据节点:
输入以下命令:
bin/hadoop-daemon.sh --config ./conf start datanode
bin/hadoop-daemon.sh --config ./conf start tasktracker
这样就可以把新的节点联入集群中,第一步是启动datanode,第二步是启动tasktracker。
3. 运行WordCount实例
l 方法1:参见HADOOP_HOME/docs/ mapred-default.html
注意:0.20.2版本的hadoop编译WordCount时,还要使用HADOOP_HOME/lib/commons-cli-1.2.jar。
l 方法2:
直接用hadoop提供的jar包(hadoop-0.20.2-examples.jar)中包含的wordcount来运行。(参见方法1,在hdfs中创建输入输出目录,建立输入文件集)
执行以下命令:
bin/hadoop jar hadoop-0.19.2-examples.jar wordcount wordcount/input wordcount/output
通过hadoop fs -ls wordcount/output 查看输出文件信息,并可通过cat查看。