ITPub博客

首页 > 大数据 > 可视化 > linux Fedora搭建hadoop平台总结

linux Fedora搭建hadoop平台总结

可视化 作者:白明细 时间:2013-04-18 10:41:31 0 删除 编辑
一、准备
1.用户:用root也行,或者自己建立一个新的用户都可以,但是注意所有集群采用同样的用户名以及java和hadoop相同的安装目录。
2.两个文件:
  jdk-7u17-linux-x64.rpm,别的版本也可以,起码1.6以上(hadoop要求)。
  hadoop-1.1.2-bin.tar.gz,hadoop不推荐用rpm安装,这样各个文件相对比较集中,利于后期手动配置更多参数或者优化。
3.硬件:最好三台机器以上,独立linux系统(非虚拟机),配置当然越高越好。
4.先关了防火墙
   即时生效,重启后失败:
    service iptables stop(关)
    service iptables start(开)
   重启后永久生效:
    chkconfig iptables off(关)
    chkconfig iptables on(开)
也可以修改相关端口,自己看着办。

二、修改namenode和datanode的名称(namenode和所有datanode)
1.vim /etc/sysconfig/network
namenode上: HOSTNAME=namenode
datanode上: HOSTNAME=datanode1(其它datanode类似)
2.vim /etc/hosts
加入:192.168.xxx.xxx namenode
          192.168.xxx.xxx datanode1(其它类似)
注意:namenode上要全部都写上,datanode上写自己的就行了。
例如:datanode2的配置
192.168.xxx.xxx namenode
192.168.xxx.xxx datanode2

3.测试:ping namenode,ping datanode1.......

三、JAVA&JDK
1.首先安装JDK
 权限:chmod a+x jdk-7u17-linux-x64.rpm
 安装:rpm -ivh jdk7u17-linux-x64.rpm
2.配置java环境
 虽然是rpm安装,不用配置环境变量,java -version也能显示,但是为了hadoop还是不能偷懒。。。
首先看一下安装在哪了:
 find / -name java 然后找到安装目录
配置系统环境变量:
vim /etc/profile
添加:
 #set config java
export JAVA_HOME=/usr/java/jdk1.7.0_17
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME CLASSPATH PATH
source生效:
source /etc/profile

3.多个jdk的处理
 如果我们安装eclipse以后或者因为其它原因系统中有多个jdk,hadoop最好不要用sun的jdk(都说山寨,不明原因),这样处理:
alternatives --install /usr/bin/java java /usr/java/jdk1.7.0/bin/java 60
alternatives --config java
打完就看明白了,选我们希望用的jdk号,然后enter。。。
再java -version看一下吧。

如果实在是看不下去,那就删除别的jdk
rpm -qa|grep java
rpm -e --nodeps xxxxxxxx 或者 yum -y remove xxxxxxxxxxx
 
4.可以写个hello world感受一下。。。

四、SSH

1.用SSH的目的就是为了实现namenode和datanode之间能够直接访问(不需要输入root密码),这也是hadoop要求的。

2.SSH无密码原理
Master(NameNode | JobTracker)作为客户端,要实现无密码公钥认证,连接到服务器Salve(DataNode | Tasktracker)上时,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥追加到所有的Slave的authorized_keys文件上。当Master通过SSH连接Salve时,Salve就会生成一个随机数并从authorized_keys找到Master 的公钥,然后用这个公钥对随机数进行加密,并发送给Master。Master收到加密数之后再用私钥解密,并将解密数回传给Slave,Slave确认 解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。重要过程是将客户端Master复制到Slave 上。

3.实现
 a. 首先要安装openssh,yum安装server和client。
 b.配置ssh
    vim /etc/ssh/sshd_config
    设置:(把前面的#去掉即可,no的改成yes)
    RSAAuthentication yes
    PubkeyAuthentication yes
    AuthorizedKeysFile      .ssh/authorized_keys
 c.在namenode上
    ssh-keygen -t rsa  (ssh-keygen一个单独的命令)
    cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys (本机ssh本机)

    cat ~/.ssh/id_rsa.pub | ssh root@datanode1 "cat >>~/.ssh/authorized_keys" (本机和datanode)
    其他datanode一样
 d.在所有datanode上
    ssh-keygen -t rsa 
    cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys (本机ssh本机)

    cat ~/.ssh/id_rsa.pub | ssh root@namenode "cat >>~/.ssh/authorized_keys" (和namenode)
    cat ~/.ssh/id_rsa.pub | ssh root@datanode2 "cat >>~/.ssh/authorized_keys" (和其他datanode)
 e.重启ssh服务
    service sshd restart
 f.验证
    ssh namnode
    ssh datanode1。。。。。

五、HADOOP
1.解压缩(看准目录)
 tar -zxvf hadoop-1.1.2-bin.tar.gz

2.配置系统环境
 vim /etc/profile
 #set hadoop install
 export HADOOP_INSTALL=/usr/hadoop-1.1.2
 export PATH=$PATH:$HADOOP_INSTALL/bin

 #set hadoop
 export HADOOP_HOME=/usr/hadoop-1.1.2
 export PATH=$HADOOP_HOME/bin:$PATH
 export HADOOP_LOG_DIR=${HADOOP_HOME}/logs

 source /etc/profile生效

3.配置hadoop(conf目录下)
 a.主从配置
     vim masters 
     namenode 或者直接IP地址 192.168.XXX.XXX
     vim slaves
     datanode1
     datanode2。。。
     所有namenode和datanode都要配置(一样的)
 b.配置hadoop-env.sh
    vim hadoop-env.sh
    # The java implementation to use.  Required.
    export JAVA_HOME=/usr/java/jdk1.7.0_17(去掉#改成自己的目录)
    这里最好加一句:
    export HADOOP_HOME_WARN_SUPPRESS=TRUE
    是为了防止出现:“Warning:$HADOOP_HOME is deprecated 关闭”的警告信息。
    有这个也没事,就是看着蛋疼!
 c. 配置core-site.xml
    
       
                fs.default.name
                hdfs://namenode:9000/
       

       
                hadoop.tmp.dir
                /usr/hadoop-1.1.2/tmp/(*注意目录)
       


 d.配置hdfs-site.xml
 
       
                dfs.replication
                2(*表示数据备份个数)
       


 e.配置mapred-site.xml

       
                mapred.job.tracker
                namenode:9001
       


 f.datanode处理
把这三个xml文件拷贝到datanode上
例如:scp /usr/hadoop-1.1.2/conf/core-site.xml root@datanode1:/usr/hadoop-1.1.2/conf/
这里会发现,已经不需要输入密码了,这就是无密码ssh的作用。
别忘了datanode的 hadoop-env.sh

g.可以选择重启一下,我也不知道为什么,就是感觉~

4.初始化hadoop(所有namenode和datanode)
namenode: ./bin/hadoop namenode -format
datanode: ./bin/hadoop datanode -format
(*注意看出来的东西,什么都无所谓,但是不能有ERROR!)
如果有ERROR,大部分是因为JDK的目录没有设置好。

5.启动hadoop
./bin/start-all.sh
关闭:./bin/stop-all.sh
(*如果是rpm安装的hadoop,这里会有权限问题,运行chmod -R 777 /usr/sbin/ )
 (*如果这里有个warning,不用管)

6.查看结果
 a.jps
  如果这个命令用不了,说明是jdk配置错误。
 b.hadoop dfsadmin -report
 c.网页形式:
  jobtracker: http://192.168.xxx.xxx:50030/jobtracker.jsp
  dfs:http://192.168.xxx.xxx:50070/

六、测试
1.一个简单的sort样例(自带的)
hadoop jar $HADOOP_INSTALL/hadoop-examples-1.1.2.jar randomwriter random-data
hadoop jar $HADOOP_INSTALL/hadoop-examples-1.1.2.jar random-data sorted-data
(*期间可以在jobtracker上看过程)
结果:
hadoop jar $HADOOP_INSTALL/hadoop-test-1.1.2.jar testmapredsort -sortInput random-data -sortOutput sorted-data

七、自己编译JAR包
1.eclipse下project的方式,在网页中是看不见运行状态的。
2.自己写:(以WordCount为例)
   a.首先在workspaces/WordCount/src,就是eclipse的目录,找到WordCount.java
      mkdir wordcount_classes (javac后的.class文件在这里头)
   b.编译
      javac -classpath /usr/hadoop-1.0.4/hadoop-core-1.0.4.jar:/usr/hadoop-1.0.4/lib/commons-cli-1.2.jar -d wordcount_classes WordCount.java
      hadoop-core-1.0.4.jar这个文件各个版本可能不太一样,去hadoop目录瞅一眼。
    c.打包
       jar -cvf wordcount.jar -C wordcount_classes/ .(.前面有个空格)
    d.执行
       hadoop jar wordcount.jar WordCount /tmp/wordcount/word.txt /tmp/wordcount/output
       WordCount这里,如果在一个packet内,需要把完整的packet名加入,例如:org.myorg.WordCount
       后面直接跟hdfs路径的input和output就行
3.在http://192.168.xxx.xxx:50030/jobtracker.jsp中就可以看见job的记录了。

八、傻媳妇儿,我想你了~
久、饿了,吃饭去了~
 

<!-- 正文结束 -->

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/23778386/viewspace-1119520/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2010-04-23