linux Fedora搭建hadoop平台总结

一、准备
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
     <configuration>
        <property>
                <name>fs.default.name</name>
                <value>hdfs://namenode:9000/</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/usr/hadoop-1.1.2/tmp/</value>(*注意目录)
        </property>
</configuration>
 d.配置hdfs-site.xml
  <configuration>
        <property>
                <name>dfs.replication</name>
                <value>2</value>(*表示数据备份个数)
        </property>
</configuration>
 e.配置mapred-site.xml
<configuration>
        <property>
                <name>mapred.job.tracker</name>
                <value>namenode:9001</value>
        </property>
</configuration>
 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的记录了。

转载于:https://my.oschina.net/rongganglee/blog/377286

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值