0. 先决条件,已经安装好 Java 环境
1. hadoop 安装
下载地址:http://hadoop.apache.org/releases.html,下载完成之后
$ tar xvf hadoop-2.6.4.tar # 解压
$ mv hadoop-2.6.4 /usr/local # 将解压后文件复制到 /usr/local 里
$ cd /usr/local/hadoop-2.6.4/bin # 进入hadoop命令目录
$ ./hadoop version # 查看hadoop版本
Hadoop 2.6.4
Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r 5082c73637530b0b7e115f9625ed7fac69f937e6
Compiled by jenkins on 2016-02-12T09:45Z
Compiled with protoc 2.5.0
From source with checksum 8dee2286ecdbbbc930a6c87b65cbc010
This command was run using /usr/local/hadoop-2.6.4/share/hadoop/common/hadoop-common-2.6.4.jar
2. hadoop 分布式配置
2.1 修改 hadoop 的 core-site.xml 配置文件
$ cd /usr/local/hadoop-2.6.4/etc/hadoop
$ vi core-site.xml # 编辑 core-site.xml 配置文件
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
2.2 修改 hadoop 的 hdfs-site.xml 配置文件
$ cd /usr/local/hadoop-2.6.4/etc/hadoop
$ vi hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop-data/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop-data/tmp/dfs/data</value>
</property>
</configuration>
2.3 以上配置完成之后,执行 NameNode 的格式化
$ cd /usr/local/hadoop-2.6.4/bin
#执行下面命令之后的返回信息中应该出现
#common.Storage: Storage directory /usr/local/hadoop-2.6.4/site_data/hadoop-data/tmp/dfs/name has been successfully formatted.
#util.ExitUtil: Exiting with status 0
$ ./hdfs namenode -format
2.4 开启 NameNode 和 DataNode 守护进程
$ cd /usr/local/hadoop-2.6.4/sbin
#执行下面命令之后,如果出现
#Are you sure you want to continue connecting(yes/no)?
#输入yes
$ ./start-dfs.sh
如果启动时提示:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable,则可以忽略提示,不会影响正常使用。
2.5 完成启动之后,使用 jps 来判断启动是否成功
$ jps
4355 DataNode
4499 SecondaryNameNode
4240 NameNode
11332 Jps
DataNode、NameNode 和 SecondaryNameNode 这三个进程必须存在,缺一不可。
PS. 如果 DataNode 无法正常启动,则可以删除所有 tmp 文件
$ cd /usr/local/hadoop-2.6.4/sbin
$ ./stop-dfs.sh #关闭
$ cd /usr/local/hadoop #具体路径查看 core-site.xml 配置文件
$ rm -rf tmp
$ cd /usr/local/hadoop-data #具体路径查看 hdfs-site.xml 配置文件
$ rm -rf tmp
3. 运行 hadoop 的实例,进行开发测试
$ cd /usr/local/hadoop-2.6.4/bin
#在hdfs上创建一个hadoop实例读取日志文本的目录
$ ./hdfs dfs -mkdir -p /user/hadoop/input
#将本地的日志文件上传至hdfs的/user/hadoop/input/目录中
$ ./hdfs dfs -put /home/guonan/user-behave.log /user/hadoop/input/
#查看hdfs中/user/hadoop/input/目下的文件
$ ./hdfs dfs -ls /user/hadoop/input/
#运行hadoop执行实例的命令
#如果重新执行该命令,则必须先删除/user/hadoop/output/该目录
#使用 ./hdfs dfs -rm -r /user/hadoop/output 删除
$ ./hadoop jar /home/guonan/user-behave-1.0.jar /user/hadoop/input/user-behave.log /user/hadoop/output/
#查看执行结果
$ ./hdfs dfs -cat /user/hadoop/output/*