路漫漫其修远兮 -,吾将上下而求索------------ 天道真的会酬勤?
1》 》》准备4台机子, 都装上linux的系统,我推荐安装的是 cenos,看硬件吧,有条件的话装centos7,因为这个是64位的,我在实验室所以差一点,装的是centos6.5的
2》 》》》装完机子后,用户名统一一下,我用的是root,但在实际环境中,需要自己创建用户,然后在/root下建立hjava文件夹,这样,我的jdk jre hadoop全是放在这里面的
3》 Java的配置,hadoop是java的,在装完centos6.5后,用java –version查看一下,就会发现是openjdk,不想用这个,想用自己的jdk,所以去下载jdk和jre,我下载的是jdk7 和 jre7 版本的,所以先解压, tar -xvzf jdk-XXX.tar.gz , tar –xzvf jre-XXX.tar.gz 运行完着两条命令后,接着变一下文件夹的名字吧,jdk-XXX总觉着太长,用 mv jdk-XXX jdk7 , mv jre-XXX jre7 来改变文件夹的名字。改完后就要删除系统中的openjdk了。用 rpm –qa |grep java 查出openjdk的java rpm包,然后用 rpm –e –nodeps @@ 逐渐一一删除,其中@@ 就是刚才pm –qa |grep java 这条命令查出的结果,一般有两条或3条,都删了就可以了,然后 运行 java -version会发现是空白,这样openjdk就删除干净了。接下来配置自己账户下的jdk。在自己的家目录下,我这里是/root目录,或者直接敲入命令 cd ~ 即可进入自己的家目录,然后 运行 vi .bashrc ,在文件底部加入 export JAVA_HOME=/root/hjava/jdk7
export JRE_HOME=/root/hjava/jdk7
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin 即可,这样 配置后保存,然后敲入source .bashrc使之立即生效。完成后,在命令行敲入java –version来查看自己设置的jdk环境。
4》 配置好java环境后,开始为hadoop做准备了,即联网的准备哦。怎么联网呢? 首先说明,我有四台机子,一台master,叫做xiaoxiong1
三台slave,叫做xiaoxiong2 xiaoxiong3 xiaoxiong4。这样,想给他们分配的ipv4是 192.168.8.1 192.168.8.2 192.168.8.3 192.168.8.4这4个ip地址,在vi /etc/sysconfig/network-scripts/ifcfg-eth0 ,在打开的文件中,注意,DEVICE TYPE UUID HWADDR是不用变的,而且千万别变,然后在这基础上加入或者修改 ONBOOT=yes BOOTPROTO=static IPADDR=你想写的IP地址,也就是刚才的ip地址, NETMASK=255.255.255.0弄完这些后保存退出,然后敲入命令 /etc/init.d/network reload使这些改变生效,然后你在运行 ifconfig 查看一下,看变成自己想要的ip没。做完这些后,在 敲入 vi /etc/hosts , 在文件尾部加入
192.168.8.1 xiaoxiong1
192.168.8.2 xiaoxiong2
192.168.8.3 xiaoxiong3
192.168.8.4 xiaoxiong4
这些是为了在你ssh的时候机器之间能互相认识,这些操作是要在你所有的机子上运行一遍的 切记 , 做完这些后,可以ping一下主机名,看通了吧,然后
关闭你的master也就是xiaoxiong1上的防火墙, 用命令 chkconfig iptables off,不然从节点上的 nodemanager无法启动
5》 网络弄好后,接下来是ssh的配置,我们使用ssh登录。随便选一台机子,比如我选的是xiaoxiong1,然后敲入 ssh-keygen –t dsa ,然后一路按回车,完后,在你的家目录下的 .ssh 文件夹下,会有生成idXX 和 idXX.pub文件,这个便是传说中的秘钥和公钥。然后运行 ssh-copy-id -i idXX.pub root@主机名,注意是在 .ssh 目录下的,这里的主机名是所有的主机名xiaoxiong1 2 3 4 都要运行一遍刚才的命令,这样,刚才选的xiaoxiong1才可以跟 xiaoxiong1 2 3 4进行ssh免密码登录,在这个过程中,会写 yes 和你要登录主机的密码,写上去回车即可。这样,xiaoxiong1 和4台机子ssh做好的,接着是xiaoxiong2 和其他机子的,以此类推,做完所有机子的ssh,这样,所有机子便可以免密码ssh互通了
6》 做ssh后,便是配置hadoop2.4.1的配置文件了,首先在下hadoop2.4.1,用tar命令解压,解压完后,我的目录用A表示,然后开始进行配置。首先是
A/etc/hadoop/salves的配置,就是说这个文件中写入你的salves节点名字即可,我的是 xiaoxiong2 xiaoxiong3 xiaoxiong4 。然后是 hadoop-env.sh文件,
在尾部加入 JAVA_HOME=$JAVA_HOME, 然后是
· /hadoop-2.4.1/etc/hadoop/core-site.xml
fs.defaultFS
hdfs://xiaoxiong1:9000
io.file.buffer.size
131072
hadoop.tmp.dir
file:/home/xiaoxiong1/hjava/hadoop-2.4.1/tmp
Abase for other temporary directories.
hadoop.proxyuser.hduser.hosts
*
hadoop.proxyuser.hduser.groups
*
· hdfs-site.xml
dfs.namenode.secondary.http-address
xiaoxiong1:9001
dfs.namenode.name.dir
file:/home/xiaoxiong1/hjava/hadoop-2.4.1/name
dfs.datanode.data.dir
file:/home/xiaoxiong1/hjava/hadoop-2.4.1/data
dfs.replication
3
dfs.webhdfs.enabled
true
· mapred-site.xml
mapreduce.framework.name
yarn
mapreduce.jobhistory.address
xiaoxiong1:10020
mapreduce.jobhistory.webapp.address
xiaoxiong1.19888
· yarn-site.xml
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.nodemanager.aux-services.mapreduce.shuffle.class
org.apache.hadoop.mapred.ShuffleHandler
yarn.resourcemanager.address
xiaoxiong1:8032
yarn.resourcemanager.scheduler.address
xiaoxiong1:8030
yarn.resourcemanager.resource-tracker.address
xiaoxiong1:8031
yarn.resourcemanager.admin.address
xiaoxiong1:8033
yarn.resourcemanager.webapp.address
xiaoxiong1:8088
7》 配置完这些文件后,把hadoop这个文件的家目录,就刚才解压hadoop-2.4.1.tar.gz的A,复制到其他的节点上去,用scp命令即可,都复制完后,进去master的A目录,进去后执行./bin/hdfs namenode –format , 然后看到INFO common.Storage:
Storage directory /home/wukong/a_usr/hadoop-2.4.1/name has been successfully formatted.说明成功啦,格式化节点成功
8》 启动dfs 在A目录下, 执行 ./sbin/start-dfs.sh,看到一系列的.out说明成功了
9》 启动yarn A下,./sbin/start-yarn.sh(master节点) 然后敲入jps
master节点:
1. 8783 NameNode
2. 8981 SecondaryNameNode
3. 9759 Jps
4. 9132 ResourceManager
slave节点:
1. 6911 DataNode
2. 7035 NodeManager
3. 7281 Jps
/etc/securetty
说明差不多啦
10》 (可以省略这一步)》用eclipse来开发hadoop程序。 首先要明白,eclipse是telnet来连接hadoop的,所以先看一下你的计算机能不telnet master节点。一般的话先去 控
制面板----》打开或关闭windows功能,将win7 的telnet功能开启,一般win7作为客户端只要开启telnet的客户端组件功能就ok啦,不需要开启服务端的。在linux下,
要开启telnet的服务端,因为telnet是明文发送的,所以centos默认是不安装这个服务的,可以去安装光盘的 packages下找到telnet-server这个rpm文件,然后再找一个
xinetd-2.3.14-39.el6_4.i686.rpm的文件,然后在linux中先安装xinetd,用 rpm –i xinetd-2.3.14-39.el6_4.i686.rpm 安装,然后就是telnet-server的安装。装好
后,去/etc/xinetd.d/telnet 中修改一下, 将 disable=yes 改成 disable=no, 这样, 重启xinted的服务, 即 service xinetd restart 后, 用
Netstat –ntl | grep 23 来查看linux的23号端口开了没,查到了的话就代表开启23的端口了。 一般而言, linux是禁止root通过telnet来登录的,可以去
/etc/securetty 末尾加上 pts/0 pts/1 ,然后保存,这样的话可用 root登录了。然后回到 win7中, ping一下,可以ping通的,但是telnet就是没反应,死活通不
了,后来才想到,是ip的问题。是的,win7下去给 本地连接 设置一个 ip去吧, 是 192.168.8.5,跟你的linux要在同一个网段上的, 掩码 255.255.255.0,其他的不填,
这样的话再去 dos中跑一下telnet命令,就会出现可以登录的情况,至此,断断续续的高了一礼拜才弄完了,但是这时候,我已经将hadoop从集群点上删除了,因为手贱,点错
了,导致hadoop的datanode节点无法启动,需要重装了,诶,晕死了,慢不慢来吧
11》 》 通过上面的,telnet应该能与linux连接了,主要就是将win7的ip放到集群的ip网段中就好了。然后就开始制作eclipse-hadoop的插件了,网上教程很多的。
@首先是 从 github上面下载eclipse-hadoop2.x 的源码,然后在eclipse中通过ant反编译成 jar插件。Github的网址是
https://github.com/winghc/hadoop2x-eclipse-plugin, 这上面右边导航树点击 download zip 就能下载 到hadoop2x-eclipse-plugin 了,下载完后,解压,然后在
eclipse新建一个普通的java project,将刚才下载的eclipse-hadoop2.x 包的 hadoop-eclipse2X-pulin\hadoop2x-eclipse-plugin-master\src\contrib\eclipse-plugin
中的
META-INF(文件夹)
Resources(文件夹)
src(文件夹)
build.properties
plugin.xml
build.xml
6个文件往项目里复制,build.xml会出错,粘贴下面的代码改掉build.xml中的前5个属性,这里build。Xml中已经修改过了,
Build.xml代码如下
具体代码见http://www.cnblogs.com/zxub/p/3884030.html
里面描述的。改完后 在build.xml上右击 ,然后ant运行,生成插件,刷新项目,就可以看见生成的插件了。将 生成的插件放到eclipse 的 puilgn 中,重启eclipse,
这时候若没有看到map/reduce插件,说明eclipse在偷懒,没有进行刷新,这时候删去eeclipse工作区里面的.metadata 文件夹,然后重启eclipse,这样就会看到了。
@@然后在 eclipse 的 window ---》 preference 中,找到右面功能树的hadoop map/reduce ,添加hadoop的目录,这里hadoop的目录就是你在linux中集群hadoop家目
录的一个备份,把它弄到这里来,我用的是 psftp(属于putty的一种,putty可以去http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html 下载) 的
get功能
@@@然后去eclipse的视图里面打开 map/reduce 视图,新建一个连接,这里面,Location name可任意填写,Mapreduce Master中Host为resourcemanager机器
ip,Port为resourcemanager接受任务的端口号,即yarn-site.xml文件中yarn.resourcemanager.scheduler.address配置项中端口号。DFS Master中的Host为
namenode机器ip,Port为core-site.xml文件中fs.defaultFS配置项中端口号。配置好后,在eclipse 中还看不到节点的话, 看看你的hdfs系统中有没上传文件,
一般在集群点上传几个文件,在eclipse中就会看到的。这样,eclipse已经远程连接到hadoop了,接下来就是开始第一个 wordCount程序了