文档章节

linux Fedora搭建hadoop平台总结

李荣刚
 李荣刚
发布于 2015/02/10 14:32
字数 1704
阅读 33
收藏 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
     <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的记录了。

本文转载自:http://blog.sina.com.cn/s/blog_a909cc230101digu.html

李荣刚
粉丝 3
博文 18
码字总数 1040
作品 0
海淀
程序员
私信 提问
Nutch+hadoop环境搭建

以前搭建环境或是配置软件从来都没有留Tips的习惯,但实践证明这是错误的——做过不等于记得怎么做,遇到过的错误也不等于今后就不是错误了。Nutch跟Hadoop的搭建困扰了我很久,但回头看看又...

MoksMo
2014/11/26
0
0
与 Red Hat 联手,Fedora 要支持 ARM 笔记本

Red Hat 正讨论与 Fedora 合作,要将 Fedora 带到 ARM 笔记本上。 Linux 拥趸一直希望基于 ARM 的笔记本能够更加完整并友好地运行 Ubuntu 等桌面版本,此前就有开发者开发了一个名为 aarch6...

h4cd
04/10
0
0
Ubuntu与 Fedora之对比

大家好。今天我将重点介绍两个流行的Linux发行版之间的一些特性和差异; Ubuntu 18.04和Fedora 28。它们都有自己的包管理; Ubuntu使用DEB,而Fedora使用RPM,但它们都具有相同的桌面环境(GNO...

Linux就该这么学
2018/09/25
0
0
hadoop(01)、windows平台下hadoop环境搭建

hadoop是运行在linux系统下的一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序,充分利用集群的威力进行高速运算和存储。今天我们要...

MaxBill
2017/11/13
0
0
Fedora 11 Beta 发布

Fedora是一个操作系统和平台,基于Linux.它允许任何人自由地使用、修改和重发布,无论现在还是将来.它由一个庞大的社 群开发,这个社群的成员 以自己的不懈努力,提供并维护自由、开放源码的软件...

红薯
2009/04/01
75
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 请务必让我分担他们的痛苦!

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @clouddyy :分享石元丈晴的单曲《Why》: 《Why》- 石元丈晴 手机党少年们想听歌,请使劲儿戳(这里) @一代码哥 :当他妈狗屁的程序员,天天...

小小编辑
17分钟前
44
2
php 遇到 No input file specified的解决方法

(一)IIS Noinput file specified 方法一:改PHP.ini中的doc_root行,打开ini文件注释掉此行,然后重启IIS 方法二: 请修改php.ini 找到 ; cgi.force_redirect = 1 去掉前面分号,把后面的1...

chenhongjiang
今天
7
0
MySQL 基础

一、常用命令 在命令行中,配置好环境变量后,通过cmd可以直接进入mysql命令行模式,同时列举几种常用命令 # 进入mysql数据库,密码可以先不写,打完-p后再输入,防止被别人看到mysql -u账...

华山猛男
今天
6
0
简单的博客系统(四)Django请求HTML页面视图信息--基于函数的视图

1. 编写用于查询数据的功能函数 应用目录 下的 views.py 文件通常用于保存响应各种请求的函数或类 from django.shortcuts import renderfrom .models import BlogArticles# Create your ...

ZeroBit
今天
5
0
用脚本将本地照片库批量导入到Day One中

因为目前iCloud 空间已经不足,其中95%都是照片,之前入手了DayOne,且空间没有限制,订阅费一年也不少,再加上DayOne作为一款日记App 也比较有名,功能方面最大的就是地理视图与照片视图,尤...

在山的那边
昨天
23
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部