博文中如果出现错误和不妥之处,请在评论中指出,谢谢:)
学习Hadoop的两个条件:会用Linux;会Java语言。
尽管Hadoop也支持其他语言开发,但在学习阶段用Java开发最容易理解Hadoop。
1. 操作系统ubuntu-10.04 桌面版。
不同发行版的Linux的安装过程基本类似,没太大的差别。
2. Hadoop现在的稳版本是1.1.2
3. 下载hadoop
3.1 在hadoop的主页上提供了多个下载链接。
3.2 任选一个下载站点:
3.3 选择1.1.2这个版本:
在这个目录下有多个文件,是针对不同的linux发行版的。不需要全部下载。
Hadoop的API文档在此:
http://hadoop.apache.org/docs/r1.1.2/api/index.html
我们将这两个文件下载到~/setup/hadoop下,命令如下:
"
cd ~/setup/hadoop"
"
wget http://mirror.esocc.com/apache/hadoop/common/hadoop-1.1.2/hadoop-1.1.2.tar.gz.mds"
"
wget http://mirror.esocc.com/apache/hadoop/common/hadoop-1.1.2/hadoop-1.1.2.tar.gz"
检查下载的文件是否完整:
"
md5sum hadoop-1.1.2.tar.gz"
这时候会出来形如"5557aa1089ab9073d2a5c35c775cccad hadoop-1.1.2.tar.gz"的字符串,前面的一串字符串就是32位的md5校验码。
然后运行"
cat hadoop-1.1.2.tar.gz.mds",会在屏幕上打印出一些校验码,在里面找到"md5"这一行,如果跟md5sum出来的一致,则表明下载文件完整的,否则需要重新下载。
4 安装java jdk
4.1 在这里有jdk 1.7的下载
这里,我们选择linux x86版本。如果是cpu是32位的系统,选择下载Linux,如果是64位的,要选择Linux x64
下载的jdk 1.7存放到 /home/bri/setup/java-jdk-1.7/java-jdk-7u25-linux-i586.tar.gz
4.2 切换到root用户
"
sudo su"
4.3 解压缩jdk
"
cd /usr/local/lib"
"
tar -xvfz /home/bri/setup/java-jdk-1.7/java-jdk-7u25-linux-i586.tar.gz"
解压缩完毕之后,执行"
ls",能看到有一个目录叫"jdk1.7.0_25"
4.4 配置环境变量:
"
gedit /etc/profile" #打开profile文件
在/etc/profile文件末尾加上三行代码:
"
export JAVA_HOME=/usr/java/jdk1.7.0_25"
" export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar"
" export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar"
"
export PATH=$PATH:$JAVA_HOME/bin"
然后保存文件,然后退出
更改own
"
chown root:root -R /usr/local/lib/jdk1.7.0_25"
更改模式
"
chmod 755 -R /usr/local/lib/jdk1.7.0_25"
更新环境变量
"
. /etc/profile"
检查java配置是否合理:
"
java -version"
只要没有报错就表明jdk安装成功。
5 安装hadoop
5.1 文件操作
我的登录用户名是brian,看官们可以根据自己的登录名修改:)
切回brian用户
"
su brian"
创建安装目录
"
mkdir -p ~/usr/hadoop"
安装
"
cd ~/usr/hadoop"
"
tar -xvzf ~/setup/hadoop/hadoop-1.1.2.tar.gz"
解压缩完毕后,就有目录“~/usr/hadoop/hadoop-1.1.2”,这是hadoop的主目录。
5.2 配置hadoop。根据
http://hadoop.apache.org/docs/stable/single_node_setup.pdf。
我们按照伪分布式进行配置,也就是用一个机器同时运行NameNode, SecondaryNameNode, DataNode, JobTracker, TaskTracker 5个角色.
5.2.1 配置文件在"~/usr/hadoop/hadoop-1.1.2/conf/"目录下
5.2.2 core-site.xml 文件内容修改成如下:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
5.2.3 mapred-site.xml文件内容如下:
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>
5.2.4 hdfs-site.xml文件内容如下:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
5.2.5 hadoop-env.sh文件:
在这里,添加
export JAVA_HOME=/usr/java/jdk1.7.0_25
6. 安装rsync和ssh
6.1 安装
"
sudo apt-get install ssh rsync"
6.2 配置
执行一下"
ssh localhost",如果没有提示让你输入密码,可以忽略以下步骤。如果提示输入密码,则要执行如下步骤:
"
ssh-keygen -t dsa -P -f ~/.ssh/id_dsa"
"
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys"
7. 启动hadoop
"
cd ~/usr/hadoop/hadoop-1.1.2"
格式化名称节点,如果已经在运行,会提示你否是要重新格式化,选择Y
"
./bin/hadoop namenode -format"
启动所有节点:
"
./bin/start-all.sh"
检查各进程是否运行
"
jps"
这时候,你应该看到有6个java虚拟机的进程,分别是Jps, NameNode, SecondaryNameNode, DataNode, JobTracker, TaskTracker,看到6个就对了,表明启动成功。
8. 测试hadoop
"
cd ~/usr/hadoop/hadoop-1.1.2"
将当前目录下的README.txt放到hadoop进行测试:
"
./bin/hadoop fs -put README.txt readme.txt"
ls一下hdfs的文件:
"
./bin/hadoop fs -lsr"
应该能看到刚才放上去的文件,现在名字是readme.txt
运行hadoop的examples的wordcount,测试hadoop的执行:
"
./bin/hadoop jar hadoop-examples-1.1.2.jar wordcount readme.txt output"
执行完之后,所有的结果会放在output目录里,我们可以看结果文件,如下:
"
./bin/hadoop fs -cat output/part-r-00000"
会显示字符的统计结果。这是一个简单的字符统计,wordcount只是做了简单的处理,非字符符号诸如逗号空格等没有做处理。