这个是在自己笔记本上的实验版本,在不熟悉的情况还是先考虑在自己的电脑上安装一个试验版本,然后
再考虑安装部署生产环境中的机器。首先自己的电脑上需要安装一个虚拟机VMWare WorkStation, 安装好
了之后,再在此虚拟机上安装Ubutun操作系统,我这里装的是Ubutun 11.10, 可以通过lsb_release -a 命令
查看,如果没有这个命令的话可以用下面的命令安装一下sudo apt-get install lsb。
1. 在此操作系统上新建一个账号hadoop.
tinyfun@ubuntu:/home$ sudo addgroup hadoop Adding group `hadoop' (GID 1001) ... Done.
然后增加hadoop用户: sudo adduser -ingroup hadoop hadoop 之后通过sudo gedit /etc/sudoers命令
在sudoers文件中添加 hadoop ALL=(ALL:ALL) ALL 给hadoop用户root权限。机器默认的名字是ubuntu,
如果需要修改的话,就用sudo gedit /etc/hostname.
2. 建立ssh无密码登录
首先sudo apt-get install ssh openssh-server服务, 之后创建ssh-key, 使用命令ssh-keygen -t rsa -P ""
回车后会在~/.ssh/下生成两个文件:id_rsa和id_rsa.pub这两个文件,进入~/.ssh/目录下,将id_rsa.pub追加到
authorized_keys授权文件中,开始是没有authorized_keys文件的, 使用命令:cat id_ras.pub >> authorized_keys中
接着使用ssh localhost就可以成功登录了。
3. 安装hadoop
在hadoop账户根目录创建一个文件夹hadoop,使用
wget http://mirror.bjtu.edu.cn/apache/hadoop/common/hadoop-1.1.1/hadoop-1.1.1-bin.tar.gz 下载最新
版本的hadoop, 现在是1.1.1的稳定版本。解压到当前文件夹 tar -xvf hadoop-1.1.1-bin.tar.gz 然后用命令mv
hadoop-1.1.1 hadoop, 然后开始配置hadoop, 有四个文件需要配置的,这里采用的都是最简单的配置,很多参数
都是采用hadoop系统自己默认的,这四个文件是conf目录下的,hadoop-env.sh core-site.xml hdfs-site.xml
mapred-site.xml.
1) 修改hadoop-env.sh
sudo gedit hadoop-env.sh, 将其中的一行修改为export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.24
也就是配置Java虚拟机的运行目录,这个目录是你机器上安装java的位置。
2)修改core-site.xml
<configuration> <property> <name>hadoop.tmp.dir</name> <value>/home/hadoop/hadoop/hadoop/tmp</value> </property> <property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property> </configuration>
3) 修改hdfs-site.xml
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
4)修改mapred-site.xml
<configuration> <property> <name>mapred.job.tracker</name> <value>localhost:9001</value>
</property> </configuration>
4 运行Hadoop
进入hadoop目录下,格式化hdfs文件系统, bin/hadoop namenode -format, 格式化完成之后
启动hadoop, 通过命令bin/start-dfs.sh bin/start-mapred.sh, 启动完成之后,通过jps命令查看
进程。如果进程中包含下面这五个进程就表明安装成功了。
3453 TaskTracker 7753 Jps 3218 JobTracker 2572 NameNode 3073 SecondaryNameNode 2843 DataNode
5. 运行一个简单的wordcount例子
准备测试数据,我们可以简单的使用echo命令来生成两个测试文件,新建一个目录testdata,在此目录下
echo "hello world bye world" > file1.txt
echo "hello hadoop goodbye hadoop" > file2.txt
将这两个文件写入到hdfs文件系统中,bin/hadoop fs -put ./testdata/ input 使用命令hadoop fs -lsr
就可以看到这两个文件已经在hadoop的hdfs文件系统当中去了。之后使用命令bin/hadoop jar hadoop-examples-1.1.1.jar
wordcount input output 来运行wordcount的例子,我们会看到如下的执行过程:
12/12/10 22:31:15 WARN conf.Configuration: mapred.used.genericoptionsparser is deprecated. Instead, use mapreduce.client.genericoptionsparser.used 12/12/10 22:31:15 INFO input.FileInputFormat: Total input paths to process : 2 12/12/10 22:31:16 INFO mapreduce.JobSubmitter: number of splits:2 12/12/10 22:31:18 INFO mapreduce.Job: Running job: job_201212102055_0001 12/12/10 22:31:19 INFO mapreduce.Job: map 0% reduce 0% 12/12/10 22:32:43 INFO mapreduce.Job: map 100% reduce 0% 12/12/10 22:33:30 INFO mapreduce.Job: map 100% reduce 100% 12/12/10 22:33:54 INFO mapreduce.Job: Job complete: job_201212102055_0001 12/12/10 22:33:54 INFO mapreduce.Job: Counters: 36 FileInputFormatCounters
表明我们的程序已经成功执行完成了,之后我们可以通过命令bin/hadoop fs -cat output/* 可以看到运行结果:
bye 1 goodbye 1 hadoop 2 hello 2 world 2
当然我们也可以通过命令 bin/hadoop fs -get output output 导出到本地的文件系统中来查看。