:D :D :D :D Hadoop快速入门 :D
写在前面:
Hadoop是Apache的一个项目,它是一个实现了MapReduce计算模型的可以运用于大型集群并行计算的分布式并行计算编程框架,当然分布式计算离不开分布式存储,Hadoop框架包含了分布式存储系统HDFS(Hadoop Distributed File System),其存储和数据结构很类似Google的GFS.
[color=red]对于Hadoop来说,在HDFS看来,节点分为Namenode 和Datanode,其中Namenode只有一个,Datanode可以是很多;在MapReduce看来,节点又分为Jobtracker和 Tasktracker,其中Jobtracker只有一个,Tasktracker可以是很多。可以所有角色都在一个节点上,也可分布式。[/color] :D :D
HBase是Hadoop的子项目,它是基于Hadoop HDFS分布存储系统的一个Google BigTable开源实现(最近看了BigTable的Paper,很受鼓舞和启发),它在存储数据结构上并非关系型,而是疏松分布式的,持久并按多维排序并索引的map型,
目的
这篇文档的目的是帮助你快速完成单机上的Hadoop安装与使用以便你对Hadoop分布式文件系统(HDFS)和Map-Reduce框架有所体会,比如在HDFS上运行示例程序或简单作业等。
先决条件
支持平台
GNU/Linux是产品开发和运行的平台。 Hadoop已在有2000个节点的GNU/Linux主机组成的集群系统上得到验证。
Win32平台是作为开发平台支持的。由于分布式操作尚未在Win32平台上充分测试,所以还不作为一个生产平台被支持。
所需软件
Linux和Windows所需软件包括:
JavaTM1.5.x,必须安装,建议选择Sun公司发行的Java版本。
ssh 必须安装并且保证 sshd一直运行,以便用Hadoop 脚本管理远端Hadoop守护进程。
Windows下的附加软件需求
Cygwin - 提供上述软件之外的shell支持。
安装软件
如果你的集群尚未安装所需软件,你得首先安装它们。
以Ubuntu Linux为例:
$ sudo apt-get install ssh
$ sudo apt-get install rsync
[color=red]linux下jdk的安装方法及配置:[/color]
1. 先从网上下载jdk(jdk-1_5_0_02-linux-i586.rpm) ,推荐SUN的官方网站www.sun.com,下载后放在/home目录中,当然其它地方也行。
进入安装目录
#cd /home
#cp jdk-1_5_0_02-linux-i586.rpm /usr/local
#cd /usr/local
给所有用户添加可执行的权限
#chmod +x jdk-1_5_0_02-linux-i586.rpm.bin
#./jdk-1_5_0_02-linux-i586.rpm.bin
此时会生成文件jdk-1_5_0_02-linux-i586.rpm,同样给所有用户添加可执行的权限
#chmod +x jdk-1_5_0_02-linux-i586.rpm
安装程序
#rpm -ivh jdk-1_5_0_02-linux-i586.rpm
出现安装协议等,按接受即可。
2.设置环境变量。
#vi /etc/profile
在最后面加入
#set java environment
JAVA_HOME=/usr/java/jdk-1_5_0_02
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
保存退出。
要使JDK在所有的用户中使用,可以这样:
vi /etc/profile.d/java.sh
在新的java.sh中输入以下内容:
#set java environment
JAVA_HOME=/usr/java/jdk-1_5_0_02
CLASSPATH=.:$JAVA_HOME/lib/tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
保存退出,然后给java.sh分配权限:chmod 755 /etc/profile.d/java.sh
3.在终端使用echo命令检查环境变量设置情况。
#echo $JAVA_HOME
#echo $CLASSPATH
#echo $PATH
4.检查JDK是否安装成功。
#java -version
如果看到JVM版本及相关信息,即安装成功!
下载
为了获取Hadoop的发行版,从Apache的某个镜像服务器上下载最近的 稳定发行版。
在Apache/Hadoop项目的网站(hadoop.apache.org/)下载hadoop以及hbase的发行包,此处两个发行包的大版本号一定要一致,譬如都是0.18版本:hadoop-0.18.2.tar.gz hbase-0.18.1.tar.gz
[color=red]创建hadoop用户, $useradd hadoop 可以用 $passwd hadoop 修改hadoop用户的登录密码.
创建hadoop用户的home目录,如果打算在别处安装hadoop/hbase的话可以不这样做,这里我们默认将hadoop/hbase安装在/home/${username}目录下.
$cd /home
$mkdir hadoop
将目录用户指派给hadoop
$chown hadoop hadoop
改变目录权限,这里我们配大一些,其实只要644就足够了:
$chmod 755 hadoop
使用hadoop用户登录系统,将下载的两个发行包文件传到/home/hadoop目录下面,然后给它们加上执行权限:
$chmod a+x hadoop-0.18.2.tar.gz
$chmod a+x hbase-0.18.1.tar.gz
解压hadoop:
$tar zxvf hadoop-0.18.2.tar.gz
这样做会在/home/hadoop目录下解压hadoop发行包并创建到/home/hadoop/hadoop-0.18.2目录中,这里可以详细设计目录结构并创建link文件来方便日后升级等工作,这里我们先简单放在这里.
修改hadoop环境脚本:
修改文件/home/hadoop/hadoop-0.18.2/conf/hadoop-env.sh,在其中加入JAVA_HOME变量: export JAVA_HOME=/opt......
HADOOP_HOME变量我们可以不设置,默认的情况是指定HADOOP_HOME为运行启动脚本当前目录的父目录.
:D :D 至少需要将JAVA_HOME设置为Java安装根路径。[/color]
尝试如下命令:
$ bin/hadoop
将会显示hadoop 脚本的使用文档。
修改hadoop启动配置:
参照默认配置文件/home/hadoop/hadoop-0.18.2/conf/hadoop-default.xml 修改用户配置文件/home/hadoop/hadoop-0.18.2/conf/hadoop-site.xml,hadoop启动的时候会加载默认配置文件,然后读取用户配置文件并使用用户配置文件中的属性替换默认配置文件中的值,这里最简单的情况我们只需要修改如下几项即可,如果需要做分布的话也是要在这个文件里面进行配置.将要修改的配置项简单的放到hadoop-site.xml文件的<configuration/>中去:
格式化nodename及启动hdfs守护进程:
使用shart-all.sh可以方便的启动所有的hdfs守护进程,如果想关闭这些守护进程可以使用stop-all.sh脚本.
启动过程中需要输入登录密码.
启动成功后可以用以下简单方法测试hdfs:
相当于linux系统下的mkdir ls cp命令.
用浏览器访问 http://localhost:50030/ 和 http://localhost:50070/ 可以查看hdfs拓扑结构和job进程还有hdfs文件系统结构.
现在你可以用以下[u]三种支持的模式中的一种启动Hadoop集群:
单机模式
伪分布式模式
完全分布式模式[/u][color=green][/color]
单机模式的操作方法
默认情况下,Hadoop被配置成以非分布式模式运行的一个独立Java进程。这对调试非常有帮助。
写在前面:
Hadoop是Apache的一个项目,它是一个实现了MapReduce计算模型的可以运用于大型集群并行计算的分布式并行计算编程框架,当然分布式计算离不开分布式存储,Hadoop框架包含了分布式存储系统HDFS(Hadoop Distributed File System),其存储和数据结构很类似Google的GFS.
[color=red]对于Hadoop来说,在HDFS看来,节点分为Namenode 和Datanode,其中Namenode只有一个,Datanode可以是很多;在MapReduce看来,节点又分为Jobtracker和 Tasktracker,其中Jobtracker只有一个,Tasktracker可以是很多。可以所有角色都在一个节点上,也可分布式。[/color] :D :D
HBase是Hadoop的子项目,它是基于Hadoop HDFS分布存储系统的一个Google BigTable开源实现(最近看了BigTable的Paper,很受鼓舞和启发),它在存储数据结构上并非关系型,而是疏松分布式的,持久并按多维排序并索引的map型,
目的
这篇文档的目的是帮助你快速完成单机上的Hadoop安装与使用以便你对Hadoop分布式文件系统(HDFS)和Map-Reduce框架有所体会,比如在HDFS上运行示例程序或简单作业等。
先决条件
支持平台
GNU/Linux是产品开发和运行的平台。 Hadoop已在有2000个节点的GNU/Linux主机组成的集群系统上得到验证。
Win32平台是作为开发平台支持的。由于分布式操作尚未在Win32平台上充分测试,所以还不作为一个生产平台被支持。
所需软件
Linux和Windows所需软件包括:
JavaTM1.5.x,必须安装,建议选择Sun公司发行的Java版本。
ssh 必须安装并且保证 sshd一直运行,以便用Hadoop 脚本管理远端Hadoop守护进程。
Windows下的附加软件需求
Cygwin - 提供上述软件之外的shell支持。
安装软件
如果你的集群尚未安装所需软件,你得首先安装它们。
以Ubuntu Linux为例:
$ sudo apt-get install ssh
$ sudo apt-get install rsync
[color=red]linux下jdk的安装方法及配置:[/color]
1. 先从网上下载jdk(jdk-1_5_0_02-linux-i586.rpm) ,推荐SUN的官方网站www.sun.com,下载后放在/home目录中,当然其它地方也行。
进入安装目录
#cd /home
#cp jdk-1_5_0_02-linux-i586.rpm /usr/local
#cd /usr/local
给所有用户添加可执行的权限
#chmod +x jdk-1_5_0_02-linux-i586.rpm.bin
#./jdk-1_5_0_02-linux-i586.rpm.bin
此时会生成文件jdk-1_5_0_02-linux-i586.rpm,同样给所有用户添加可执行的权限
#chmod +x jdk-1_5_0_02-linux-i586.rpm
安装程序
#rpm -ivh jdk-1_5_0_02-linux-i586.rpm
出现安装协议等,按接受即可。
2.设置环境变量。
#vi /etc/profile
在最后面加入
#set java environment
JAVA_HOME=/usr/java/jdk-1_5_0_02
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
保存退出。
要使JDK在所有的用户中使用,可以这样:
vi /etc/profile.d/java.sh
在新的java.sh中输入以下内容:
#set java environment
JAVA_HOME=/usr/java/jdk-1_5_0_02
CLASSPATH=.:$JAVA_HOME/lib/tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
保存退出,然后给java.sh分配权限:chmod 755 /etc/profile.d/java.sh
3.在终端使用echo命令检查环境变量设置情况。
#echo $JAVA_HOME
#echo $CLASSPATH
#echo $PATH
4.检查JDK是否安装成功。
#java -version
如果看到JVM版本及相关信息,即安装成功!
下载
为了获取Hadoop的发行版,从Apache的某个镜像服务器上下载最近的 稳定发行版。
在Apache/Hadoop项目的网站(hadoop.apache.org/)下载hadoop以及hbase的发行包,此处两个发行包的大版本号一定要一致,譬如都是0.18版本:hadoop-0.18.2.tar.gz hbase-0.18.1.tar.gz
[color=red]创建hadoop用户, $useradd hadoop 可以用 $passwd hadoop 修改hadoop用户的登录密码.
创建hadoop用户的home目录,如果打算在别处安装hadoop/hbase的话可以不这样做,这里我们默认将hadoop/hbase安装在/home/${username}目录下.
$cd /home
$mkdir hadoop
将目录用户指派给hadoop
$chown hadoop hadoop
改变目录权限,这里我们配大一些,其实只要644就足够了:
$chmod 755 hadoop
使用hadoop用户登录系统,将下载的两个发行包文件传到/home/hadoop目录下面,然后给它们加上执行权限:
$chmod a+x hadoop-0.18.2.tar.gz
$chmod a+x hbase-0.18.1.tar.gz
解压hadoop:
$tar zxvf hadoop-0.18.2.tar.gz
这样做会在/home/hadoop目录下解压hadoop发行包并创建到/home/hadoop/hadoop-0.18.2目录中,这里可以详细设计目录结构并创建link文件来方便日后升级等工作,这里我们先简单放在这里.
修改hadoop环境脚本:
修改文件/home/hadoop/hadoop-0.18.2/conf/hadoop-env.sh,在其中加入JAVA_HOME变量: export JAVA_HOME=/opt......
HADOOP_HOME变量我们可以不设置,默认的情况是指定HADOOP_HOME为运行启动脚本当前目录的父目录.
:D :D 至少需要将JAVA_HOME设置为Java安装根路径。[/color]
尝试如下命令:
$ bin/hadoop
将会显示hadoop 脚本的使用文档。
修改hadoop启动配置:
参照默认配置文件/home/hadoop/hadoop-0.18.2/conf/hadoop-default.xml 修改用户配置文件/home/hadoop/hadoop-0.18.2/conf/hadoop-site.xml,hadoop启动的时候会加载默认配置文件,然后读取用户配置文件并使用用户配置文件中的属性替换默认配置文件中的值,这里最简单的情况我们只需要修改如下几项即可,如果需要做分布的话也是要在这个文件里面进行配置.将要修改的配置项简单的放到hadoop-site.xml文件的<configuration/>中去:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000/</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>
格式化nodename及启动hdfs守护进程:
$/home/hadoop/hadoop-0.18.2/bin/hadoop namenode -format
$/home/hadoop/hadoop-0.18.2/bin/start-all.sh
使用shart-all.sh可以方便的启动所有的hdfs守护进程,如果想关闭这些守护进程可以使用stop-all.sh脚本.
启动过程中需要输入登录密码.
启动成功后可以用以下简单方法测试hdfs:
$/home/hadoop/hadoop-0.18.2/bin/hadoop dfs -mkdir dir4test
$/home/hadoop/hadoop-0.18.2/bin/hadoop dfs -ls
$/home/hadoop/hadoop-0.18.2/bin/hadoop dfs -put /home/hadoop/file4test.zip file4test_temp.zip
相当于linux系统下的mkdir ls cp命令.
用浏览器访问 http://localhost:50030/ 和 http://localhost:50070/ 可以查看hdfs拓扑结构和job进程还有hdfs文件系统结构.
现在你可以用以下[u]三种支持的模式中的一种启动Hadoop集群:
单机模式
伪分布式模式
完全分布式模式[/u][color=green][/color]
单机模式的操作方法
默认情况下,Hadoop被配置成以非分布式模式运行的一个独立Java进程。这对调试非常有帮助。