一步一步学习hadoop(一)
想要学习hadoop,首先要将把“刀”磨好,安装好hadoop,hadoop集群有三种模式:本地模式,伪集群模式和集群模式,其中本地模式和伪集群模式主要用于在本地测试程序,集群模式用于实际运行中。本地模式和伪集群模式非常类似,只是在hadoop的配置上有一点差别,这里先介绍hadoop的伪集群模式的安装步骤
1.运行环境安装
1)ubuntu linux 12.04,安装非常简单,这里就不介绍了
2)java 1.6以上版本安装
1'下载,在http://www.oracle.com/technetwork/indexes/downloads里下载需要的linux的java版本
2'安装(假设下载的文件为java1.6.0_37.bin,放在/home/administrator目录下)
- 将下载的安装文件授权为可以执行,使用chmod u+x java1.6.0_37.bin
- 改变工作目录到你要安装java的地方,我的是/usr/lib,所以是cd /usr/lib
- 运行安装文件 直接在shell中输入/home/administrator/java1.6.0_37.bin即可
3'环境设置,打开/etc/profile文件,在文件最后增加如下几行
export JAVA_HOME=/usr/lib/jdk1.6.0_37
export JRE_HOME=/usr/lib/jdk1.6.0_37/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
4'重启机器,在shell中键入java -version得到java version "1.6.0_37"的话表示安装好java环境了
3) 安装ssh,如果可以连接因特网就比较方便了,直接使用sudo apt-get install openssh-server就搞定了。如果不能联网,拷贝下载好openssh-server安装包到需要安装的机器,然后使用sudo dpkg -i 你的ssh安装包的名字 。安装好了后,运行一下ssh localhost,可以运行表示安装成功。
4)配置ssh,hadoop需要ssh去管理节点,对于伪集群模式(也就是单节点)只需ssh能够无密码访问localhost即可
配置无密码访问,1'先切换到hduser用户,2'然后生成密钥对,3'然后将公钥给要访问的机器
su - hduser
ssh-keygen -t rsa -P ""
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
配置好后ssh localhost测试一下
5)新建一个运行hadoop的用户,这不是必须的
sudo addgroup hadoop
sudo adduser --ingroup hadoop hduser
6)增加一个给hadoop使用的目录,运行下面命令
sudo mkdir -p /usr/local/app/hadoop/tmp
sudo chown hduser:hadoop /usr/local/app/hadoop/tmp
sudo chmod 750 /usr/local/app/hadoop/tmp
2.安装hadoop
1)下载hadoop安装文件,在hadoop官网下载hadoop,我下的版本是1.0.4
2 ) 解压到自己想要安装的目录,我这里假设为/usr/local/hadoop,并确保改变文件的所有权给hduser,下面这些命令完成这些工作
cd /usr/local
sudo tar xzf /你放hadoop安装文件的目录替换这里/hadoop-1.0.4.tar.gz
sudo mv hadoop-1.0.4 hadoop
sudo chown -R hduser:hadoop hadoop
3)修改shell启动文件 ~/.bashrc 增加下面几行
export HADOOP_HOME=/usr/local/hadoop
export JAVA_HOME=/usr/lib/jdk1.6.0_37
export PATH=$PATH:$HADOOP_HOME/bin
#增加几个使用较多的命令的简写
unalias fs &>/dev/null
alias fs="hadoop fs"
unalias hls &>/dev/null
alias hls="fs -ls"
unalias start-all &>/dev/null
alias start-all="/usr/local/hadoop/bin/start-all.sh"
unalias stop-all &>/dev/null
alias stop-all="/usr/local/hadoop/bin/stop-all.sh"
unalias start-dfs &>/dev/null
alias start-dfs="/usr/local/hadoop/bin/start-dfs.sh"
unalias stop-dfs &>/dev/null
alias stop-dfs="/usr/local/hadoop/bin/stop-dfs.sh"
unalias start-mapred &>/dev/null
alias start-mapred="/usr/local/hadoop/bin/start-mapred.sh"
unalias stop-mapred &>/dev/null
alias stop-mapred="/usr/local/hadoop/bin/stop-mapred.sh"
4)配置hadoop相关的配置文件,在目录/usr/local/hadoop/conf里面
修改hadoop-en.sh,将export JAVA_HOME这一句前面的#去掉,改为export JAVA_HOME=/usr/lib/jdk1.6.0_37
core-site.xml文件,内容如下
<?xml version="1.0"?>
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:54310</value>
</property>
<property>
<name>fs.tmp.dir</name>
<value>/usr/local/app/hadoop/tmp</value>
</property>
</configuration>
hdfs-site.xml文件,内容如下
<?xml version="1.0"?>
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
mapred-site.xml文件,内容如下
<?xml version="1.0"?>
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:54311</value>
</property>
</configuration>
5)格式化HDFS文件系统
hadoop namenode -format
6)启动伪集群,启动后可以使用jps命令,看NameNode,DataNode,JobTracker和TaskTracker是不是都启动了
start-all
7)可以使用hadoop了,运行一个hadoop自带的测试程序
1'将数据拷贝到HDFS文件系统中,使用如下命令将hadoop的配置文件拷贝到HDFS下的input目录下
hadoop fs -put /usr/local/hadoop/conf /input
2'运行hadoop作业
hadoop jar /usr/local/hadoop/hadoop-examples-1.0.4.jar WordCount /input /output
运行成功表示安装OK了
8)可以使用http://localhost:50030查看map/reduce情况,使用http://localhost:50070查看HDFS文件系统情况
9)停止伪集群
stop-all