单台服务器上安装Hadoop和Hive十五分钟教程
单台服务器上学习Hadoop和Hive十分钟教程
Hadoop是个很流行的分布式计算解决方案,Hive是基于hadoop的数据分析工具。
一般的学习者不是太容易找到多台服务器来做集群学习hadoop,所以hadoop官方文档提供了在单台服务器上运行hadoop的指南(hive是基于hadoop的,它不关心有几台服务器,只要有hadoop就行了),来教大家怎样在一台硬件机器上模拟一个hadoop集群,这种模式只适合用来学习练手,真正要做分布式计算,是会配置在多台机器上的。
下面是一个最简单的安装使用hadoop/hive的文档:
下载Hadoop、Hive
a) Hadoop下载地址:http://www.apache.org/dyn/closer.cgi/hadoop/core/
b) Hive下载地址:http://www.apache.org/dyn/closer.cgi/hive/
选择较新的稳定版本下载即可,下载到任意目录都可以,解压开就可以运行的,不需要编译安装。
这里要注意,Hive 0.6不支持Hadoop 0.21,我是使用Hadoop 0.20.2 + Hive 0.6.0测试成功的(测试于2011年3月16日)
检查环境
Hadoop依赖Java和SSH
Java
Hadoop 0.20要求Java 1.6,最好是从Sun官方下载安装的,通过java –version确认你有没有装java以及java的版本。
输出像这样说明是OK的:
$ java -version
java version “1.6.0_17″
输出像这样说明没装java:
chin@lily ~ $ java -version
-bash: java: command not found
去sun的网站下载个JDK来装上(SUN被Oracle收购了,所以下载地址的域名是oracle.com):http://www.oracle.com/technetwork/java/javaee/downloads/index.html
SSH
i. 确认有没有安装sshd服务和ssh客户端工具
一般服务器都有sshd服务的(因为你要远程连过去操作这个服务器呀),如果没有,说明你是通过linux桌面来操作的,用yum, apt-get之类的包管理工具装上就好了:
chin@lily ~ $ sudo apt-get install ssh
chin@lily ~ $ sudo apt-get install rsync
ii. 确认可以用ssh免密码登录localhost
输入ssh localhost命令
chin@lily ~ $ ssh localhost
如果直接登录进去了而没问你要密码(屏幕提示如下),就是OK的
Last login: Wed Mar 16 15:06:21 2011 from *.*.*.*
如果问你要密码(屏幕提示如下):
chin@lily ~ $ ssh localhost
chin@localhost’s password:
就需要简单设置一下,方法如下:
chin@lily ~ $ ssh-keygen -t dsa -P ” -f ~/.ssh/id_dsa
chin@lily ~ $ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
这两个命令的意思是让你从本地ssh到localhost的时候使用证书登录,密码是空。
做完之后再用ssh localhost验证一下。最好logout之后再来试,因为如果你ssh localhost成功了,就已经在localhost(在软件概念里,已经是在远程服务器上了)里了,再ssh localhost的话,会问你要密码的,听起来是不是像盗梦空间,哈哈!所以全部退出,退到未登录状态,再来试,不容易出错一些。
解压、配置hadoop
解压
chin@lily ~ $ tar zxf hadoop-0.20.2.tar.gz
进入解压后的hadoop目录
chin@lily ~ $ cd hadoop-0.20.2
chin@lily ~/hadoop-0.20.2 $
修改配置文件
iii. 设置JAVA_HOME
编辑conf/hadoop-env.sh文件,找到:
# export JAVA_HOME=/usr/lib/j2sdk1.5-sun
把前面的注释符号#去掉,这个#是注释的意思
把等号后面的路径改为你的JDK所在的目录,如你的java可执行文件在/usr/bin/java,则写成(不要包含bin):
export JAVA_HOME=/usr
如果不知道java在什么地方请用whereis java查询
iv. 配置hadoop的单机集群模式(伪集群模式)
按此文档的指示改:
http://hadoop.apache.org/common/docs/r0.20.0/quickstart.html#PseudoDistributed
修改conf/core-site.xml,内容改为:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
修改conf/hdfs-site.xml,内容改为:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
修改conf/mapred-site.xml,内容改为:
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>
初始化hadoop Namenode
执行:bin/hadoop namenode –format
看到successfully formatted
chin@lily ~/hadoop-0.20.2 $ bin/hadoop namenode -format
11/03/16 16:12:03 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
一堆日志输出,为节省篇幅,不贴了
11/03/16 16:12:04 INFO common.Storage: Storage directory /tmp/hadoop-chin/dfs/name has been successfully formatted.
启动运行hadoop
执行:bin/start-all.sh
chin@lily 16:12:04 ~/hadoop-0.20.2 $ bin/start-all.sh
starting namenode, logging to 一个日志文件
localhost: starting datanode, logging to一个日志文件
localhost: starting secondarynamenode, logging to 一个日志文件
starting jobtracker, logging to一个日志文件
localhost: starting tasktracker, logging to一个日志文件
会看到这个脚本依次启动了namenode, secondarynamenode, datanode, jobtracker, tasktracker,只有这五个全部成功启动才算成功,用jps命令看一下启动了哪些java进程:
chin@lily 16:30:57 ~/hadoop-0.20.2 $ jps
24106 TaskTracker
23931 SecondaryNameNode
24001 JobTracker
25095 Jps
23712 NameNode
24741 DataNode
至此,Hadoop安装成功
在HDFS中建立hive要用的目录
chin@lily ~/hadoop-0.20.2 $ bin/hadoop fs -mkdir /tmp
chin@lily ~/hadoop-0.20.2 $ bin/hadoop fs -mkdir /user/hive/warehouse
chin@lily ~/hadoop-0.20.2 $ bin/hadoop fs -chmod g+w /tmp
chin@lily ~/hadoop-0.20.2 $ bin/hadoop fs -chmod g+w /user/hive/warehouse
解压Hive
chin@lily ~ $ tar zxf hive-0.6.0-bin.tar.gz
chin@lily ~ $ cd hive-0.6.0-bin
chin@lily ~/hive-0.6.0-bin $
设置HADOOP_HOME
chin@lily ~/hadoop-0.20.2 $ export HADOOP_HOME=/home/chin/hadoop-0.20.2
运行Hive
chin@lily ~/hive-0.6.0-bin $ bin/hive
Hive history file=/tmp/chin/hive_job_log_chin_201103161721_2092136471.txt
hive >
至此,Hive运行成功