很早就听说hadoop,但项目中一直没怎么接触,今天终于下定决心,花了一天的时间,搭起了基本的开发环境,总结如下。
一.软件准备
jdk、hadoop软件包、eclipse软件包(linux版)
二.安装java
详见http://blog.csdn.net/tonytfjing/article/details/42167599
三.安装hadoop(单机伪分布式)
3.1创建hadoop用户
为hadoop创建一个专门的用户,具体如下:
groupadd hadoopGroup //创建hadoop用户组 useradd -g hadoopGroup hadoop //新增用户hadoop并将其加入hadoopGroup群组 passwd hadoop //建立hadoop用户的新密码,密码也是hadoop
3.2安装hadoop
用ftp工具将hadoop安装包上传到linux系统中,解压
tar -zxvf hadoop-1.2.1.tar.gz
3.3配置ssh
Hadoop需要通过SSH(安全外壳协议,可以保护共享访问的安全性)来启动Slave列表中各台主机的守护进程。但是由于SSH需要用户密码登陆,所以为了在系统运行时,节点之间免密码登录和访问,就需要把SSH配置免密码方式。具体如下:
ssh-keygen -t rsa //生成密钥对,ras加密
一直按enter,就会按照默认的选项将生成的密钥对保存到.ssh/id_rsa
cd .ssh/ cp id_rsa.pub authorized_keys //进入.ssh,把id_rsa.pub文件追加到授权(authorized_keys)里面 ssh localhost //测试无密码登录本机
3.4配置hadoop环境
切换到hadoop的安装路径找到conf/hadoop-env.sh文件,vi编辑,在文件最后添加如下语句:
export JAVA_HOME=/usr/java/jdk1.7.0_71
同时将hadoop安装目录的bin目录配置到系统path变量中,不然如果无法使用hadoop命令(当然也可以每次都到hadoop安装文件夹下的bin里面去执行./hadoop)
vi /etc/profile export HADOOP_HOME=/hadoop1.2.1 export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin
Hadoop-1.2.1的配置文件主要有三个,从名字上很容易辨认和理解:conf/core-site.xml(全局配置文件)、conf/hdfs-site.xml(HDFS配置文件)和conf/mapred-site.xml(MapReduce的配置文件)。下面是我的配置,name都是固定的,也很容易理解。value注意根据自己的路径来配
conf/core-site.xml
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Put site-specific property overrides in this file. --> <configuration> <property> <name>hadoop.tmp.dir</name> <value>/hadoop1.2.1/tmp</value> </property> <property> <name>fs.default.name</name> <value>hdfs://192.168.5.227:9000</value> <!-- 最好写成这样,因为后面编程时会用到这个地址 --> </property> </configuration>
conf/mapred-site.xml
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Put site-specific property overrides in this file. --> <configuration> <property> <name>mapred.job.tracker</name> <value>192.168.5.227:9001</value> </property> <property> <name>mapred.cluster.local.dir</name> <value>/hadoop1.2.1/mapred/local</value> </property> <property> <name>mapred.jobtracker.system.dir</name> <value>/hadoop1.2.1/mapred/system</value> </property> </configuration>
hdfs-site.xml
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Put site-specific property overrides in this file. --> <configuration> <property> <name>dfs.namenode.name.dir</name> <value>/hadoop1.2.1/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/hadoop1.2.1/dfs/data</value> </property> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
3.5格式化HDFS文件系统
修改完上述文件之后,进入hadoop安装目录
cd /hadoop1.2.1
在首次安装和使用Hadoop之前,需要格式化分布式文件系统HDFS,所以执行如下命令:
bin/hadoop namenode -format
3.6启动hadoop环境
启动守护进程
bin/start-all.sh
成功后,至少将在本机上启动5个新进程:NameNode、DataNode、JobTracke、TaskTracker、SecondaryNameNode
查看hadoop启动情况
jps
8165 Jps 27621 NameNode 2982 oc4j.jar 28001 JobTracker 2454 Bootstrap 28142 TaskTracker 27764 DataNode 27907 SecondaryNameNode
如果现实类似于上述的信息,则表示Hadoop已经正常启动了,恭喜你!既然Hadoop安装好了,那就该用用了。
四、Hadoop下eclipse开发环境准备
4.1安装eclipse,并编译插件
cp eclipse-SDK-3.4-linux-gtk.tar.gz /opt //将eclipse-SDK-3.4-linux-gtk.tar.gz安装包复制到/opt目录 cd /opt //切换到/opt目录 tar -zxvf eclipse-java-luna-SR1-linux-gtk.tar.gz //解压eclipse-SDK-3.4-linux-gtk.tar.gz数据包
eclipse插件编译及使用详见 http://f.dataguru.cn/thread-288619-1-1.html
4.2配置Map/Reduce Locations
重启eclipse,配置hadoop installation directory,如图
如果安装插件成功,打开Window-->Preferens,你会发现Hadoop Map/Reduce选项,在这个选项里配置Hadoop installation directory。进入Map/Reduce视角,如下图,
新建location
配置如下,
这里面的Host、Port分别是我前面在core-site.xml、mapred-site.xml中配置的地址及端口。配置完后退出。一层层打开DFS Locations,如果能显示文件夹(1)说明配置正确,如果显示"拒绝连接",请检查配置。
4.3第一个Map/Reduce Project
新建一个Map/Reduce Project项目,将example里的WordCount.java复制到新建的项目下面。先编写个数据输入文件,如下:
通过hadoop的命令在HDFS上创建/tmp/workcount目录,命令如下:
hadoop fs -mkdir /tmp/wordcount
通过copyFromLocal命令把新建的word.txt复制到HDFS上,命令如下:
hadoop fs -copyFromLocal /word.txt /tmp/wordcount/word.txt
这个时候我们回到eclipse里面,在Map/Reduce Locations上reconnect看看,发现多出来了文件,如下所示,
4.4运行第一个Map/Reduce Project
在WordCount.java,右键-->Run As-->Run Configurations ,配置如下,
两个配置参数很容易理解,就是输入文件和输出文件。点击Run,运行程序,等运行结束后,查看运行结果,同样在Map/Reduce Locations上reconnect看看(也可以用命令hadoop fs -ls /tmp/wordcount/out)会发现又多出一个文件夹,下面含有两个文件。
使用命令查看part-r-00000文件,hadoop fs -cat /tmp/wordcount/out/part-r-00000可以查看运行结果。
好了,现在搭建好了基本的开发环境了,小伙伴们可以去折腾了!