引言

一直用的Ubuntu 32位系统(准备下次用Fedora,Ubuntu越来越不适合学习了),今天准备学习一下Hadoop,结果下载Apache官网上发布的最新的封装好的2.5.1版,配置完了根本启动不起来,查看错误日志发现是native库的版本和系统不一致,使用file命令可以发现封装版的native库文件全是64位的:

原来官网发布的版本开始用64位环境编译了(貌似之前是32位环境编译)。没办法,只好自己下载源码编译了。

毫无意外的,编译时各种错误简直停不下来,强忍着一个个耐心解决了,配置的时候又由于自2.3开始带来的框架的质变,很多配置都不一样,网上教程真是看花了眼。。。不过最后还是强行配置好,终于跑起来了。系统地记下来,避免后来者绕弯路。

主要参考了2篇文章(其实就是2篇文章的整合):

Centos6.5源码编译安装Hadoop2.5.1

Hadoop(2.5.1)伪分布式环境CentOS(6.5 64位)配置

环境

<a target=_blank href="http://www.ubuntu.com/download/desktop">Ubuntu 14.04 (32 bit)</a>
[建议使用64位系统,最好是其他Linux发行版]
<a target=_blank href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">JDK 7u71</a>
[一定要使用JDK7,不要用最新的JDK8,否则编译会出错,系统自带的OpenJDK也别用,注意配置环境变量,使默认Java环境为JDK7,一定要用“java -version”命令确认一下!]
<a target=_blank href="http://ant.apache.org/bindownload.cgi">Ant 1.9.4</a>
[Ubuntu官方源的Ant是1.9.3版,也能用,不想手动配置环境就“apt-get install ant”也行]
<a target=_blank href="http://maven.apache.org/download.cgi">Maven 3.2.3</a>
[使用官方最新的3.2.3版就行,不要用2,不要apt-get安装,Ubuntu官方源的当前版本可能太旧,可能导致编译失败]
<a target=_blank href="http://findbugs.sourceforge.net/index.html">FindBugs 3.0.0</a>
[就用最新的3.0.0版,<span style="font-family: Arial, Helvetica, sans-serif;">Ubuntu</span>官方源的当前版是2.0版,太旧,会导致编译失败]
<a target=_blank href="http://download.csdn.net/download/ruijiliang/6991999">Protobuf 2.5</a>
[这个要注意:官方最新的是2.6版,但是hadoop 2.5.1就要求Protobuf是2.5版,所以务必使用链接提供的2.5版,否则编译会失败]
<a target=_blank href="http://www.apache.org/dyn/closer.cgi/hadoop/common">Hadoop 2.5.1 src</a>
[32位系统的就老老实实源码编译吧,别下到那个编译完成的版本了]
注:以上工具版本最好保持一致,使用其他版本可能导致编译失败,当然可以随便尝试,能编译成功就行,上述工具正确安装配置后一般能保证编译成功。

编译环境

先把编译环境配置起来。依次安装并配置JDK 7u71, Ant 1.9.4, Maven 3.2.3, Findbugs 3.0.0 和 Protobuf 2.5就行了:

JDK 7u71:

tar -zxvf  jdk-7u71-linux-i586.tar.gz
sudo cp -r jdk1.7.0_71 /usr/lib/jvm/ #配置环境变量:
export JAVA_HOME=/usr/lib/jvm//jdk1.7.0_71
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre//bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$CLASSPATH
#注意:
#1、JAVA路径要在原本的PATH之前,否则java命令默认会软连接到自带的OpenJDK上。最好“java -version”确认一下。
#2、/etc/profile , .profile 或者.bashrc(.zshrc) 中配置都行,但必须source之后才能生效。.bashrc 或.zshrc的话source一次就行了,/etc/profile 或 .profile则需要每次启动终端时都source一次才能生效,直到下次开机。不同配置文件的加载机制不同,不多说。
#3、下面工具的配置同理。

Ant 1.9.4:

tar zxvf apache-ant-1.9.4-bin.tar.gz  </span>

sudo cp -r apache-ant-1.9.4 /usr/share/
<span style="font-family: 'Microsoft YaHei';">#配置环境变量:export ANT_HOME=/usr/share/apache-ant-1.9.4 export PATH=$PATH:$ANT_HOME/bin</span>

Maven 3.2.3:

tar -zxvf apache-maven-3.2.3-bin.tar.gz
sudo cp -r apache-maven-3.2.3 /usr/share/

#配置环境变量:


<span style="font-family: 'Microsoft YaHei';"> export M2_HOME=/usr/share/apache-maven-3.2.3  </span>
export MAVEN_OPTS="-Xms256m -Xmx512m"
export PATH=$PATH:$M2_HOME/bin

FindBugs 3.0.0:

tar zxvf findbugs-3.0.0.tar.gz
udo cp -r findbugs-3.0.0 /usr/share/

#配置环境变量:
export FINDBUGS_HOME=/usr/share/findbugs-3.0.0
export PATH=$PATH:$FINDBUGS_HOME/bin

Protobuf 2.5.0:

tar zxvf protobuf-2.5.0.tar.gz
cd protobuf-2.5.0
./configure --prefix=/usr/share
make
sudo make install

我把工具都安装在/usr/share目录下,Ubuntu系统默认会搜寻该目录下的库文件,无需其他配置就行了。但是如果工具被安装在了/usr/local目录下,Ubuntu是不会自动搜索该目录的库文件的,此时需要配置开发库环境变量:

export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/lib

编译

tar zxvf hadoop-2.5.1-src.tar.gz
cd hadoop-2.5.1-src
mvn package -Pdist,native,docs -DskipTests -Dtar
#等待编译完成就行了,完成后得到的编译版Hadoop位于hadoop-2.5.1-src/hadoop-dist/target中,其中的hadoop-2.5.1目录即为编译版。

自编译虽然麻烦,但是成功编译得到的版本比直接下载的打包编译版在本机上表现更稳定,error和warning基本没有了。另外下面这篇文章提供了编译过程中可能产生的常见问题和解决办法:http://blog.csdn.net/amaowolf/article/details/8125351

配置

万事俱备,开始正式搭建。

Hadoop三种运行模式:

1. 单机模式(standalone):单机模式是Hadoop的默认模。当配置文件为空时,Hadoop完全运行在本地。因为不需要与其他节点交互,单机模式就不使用HDFS,也不加载任何Hadoop的守护进程。该模式主要用于开发调试MapReduce程序的应用逻辑。

2. 伪分布模式(Pseudo-Distributed Mode):Hadoop守护进程运行在本地机器上,模拟一个小规模的的集群。该模式在单机模式之上增加了代码调试功能,允许你检查内存使用情况,HDFS输入输出,以及其他的守护进程交互。

3. 全分布模式(Fully Distributed Mode):Hadoop守护进程运行在一个集群上。

自己学习还是搭伪分布式比较好(单机模式其实不需要什么配置)。也不单独添加Hadoop用户了,切换麻烦,就用自己常用帐户就行了。

步骤:

1、安装ssh

由于Hadoop用ssh通信,先安装ssh

[html] view
plain
copy

 
  1. ~$ sudo apt-get install openssh-server

ssh安装完成以后,先启动服务:

[html] view
plain
copy

 
  1. ~$ sudo /etc/init.d/ssh start

启动后,可以通过如下命令查看服务是否正确启动:

[html] view
plain
copy

 
  1. ~$ ps -e | grep ssh

作为一个安全通信协议,使用时需要密码,因此我们要设置成免密码登录,生成私钥和公钥:

[html] view
plain
copy

 
  1. ~$ ssh-keygen -t rsa -P ""

因为我已有私钥,所以会提示是否覆盖当前私钥。第一次操作时会提示输入密码,按Enter直接过,这时会在~/home/{username}/.ssh下生成两个文件:id_rsa和id_rsa.pub,前者为私钥,后者为公钥,现在我们将公钥追加到authorized_keys中(authorized_keys用于保存所有允许以当前用户身份登录到ssh客户端用户的公钥内容):

[html] view
plain
copy

 
  1. ~$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

现在可以登入ssh确认以后登录时不用输入密码:

[html] view
plain
copy

 
  1. ~$ ssh localhost

登出:

[html] view
plain
copy

 
  1. ~$ exit

第二次登录:

[html] view
plain
copy

 
  1. ~$ ssh localhost

登出:

[html] view
plain
copy

 
  1. ~$ exit

这样以后登录就不用输入密码了。

2、安装hadoop 2.5.1

将刚才编译得到的hadoop-2.5.1复制到/opt目录下(大型软件和平台我一般放在这个目录),为方便配置,设置权限为777:

[html] view plaincopy

 
  1. ~$ sudo cp -r hadoop-2.5.1-src/hadoop-dist/target/hadoop-2.5.1 /opt/
  2. ~$ sudo chmod -R 777 /opt/hadoop-2.5.1

3、配置hadoop环境变量

在/etc/profile 或 .profile 或 .bashrc中配置hadoop环境变量,注意配置完成后一定要source一下。

[html] view
plain
copy

 
  1. export HADOOP_HOME=/opt/hadoop-2.5.1
  2. export CLASSPATH=.:$HADOOP_HOME/lib:$CLASSPATH
  3. export PATH=$PATH:$HADOOP_HOME/bin


4.设置hadoop-env.sh(Java 安装路径)

打开/opt/hadoop-2.5.1/etc/hadoop目录下的hadoop-env.sh文件,添加以下信息:

  1. export JAVA_HOME=${JAVA_HOME}          #当然如果没有配置JAVA_HOME也可以设置成具体的JDK路径
  2. export HADOOP_HOME=/opt/hadoop-2.5.1   #以下2行纯粹为了保险,实际上是重复设置了一次步骤3
  3. export PATH-$PATH:$HADOOP_HOME/bin

并且,让环境变量配置生效source

[html] view
plain
copy

 
  1. ~$ source /opt/hadoop-2.5.1/etc/hadoop/hadoop-env.sh

不设置的话,可能出现启动hadoop时提示“JAVA_HOME is not set and could not be found”错误。

至此,hadoop的单机模式已经安装成功。

5、伪分布式环境搭建

5.1.设定*-site.xml
这里需要设定4个文件:core-site.xml,hdfs-site.xml,mapred-site.xml和yarn-site.xml.都在/opt/hadoop-2.5.1/etc/hadoop/目录下
core-site.xml:  Hadoop Core的配置项,例如HDFS和MapReduce常用的I/O设置等。
hdfs-site.xml:  Hadoop 守护进程的配置项,包括namenode,辅助namenode和datanode等。
mapred-site.xml: MapReduce 守护进程的配置项,包括jobtracker和tasktracker。

yarn-site.xml: Yarn 框架用于执行MapReduce 处理程序

首先在hadoop目录下新建几个文件夹

[html] view
plain
copy

 
  1. ~$ mkdir tmp
  2. ~$ mkdir -p hdfs/name
  3. ~$ mkdir -p hdfs/data

接下来编辑那4个文件(IP地址处我填了我的局域网IP:192.168.1.135,根据需要填写自己主机的IP或者直接用localhost):

core-site.xml:

[html] view
plain
copy

 
  1. <configuration>
  2. <property>
  3. <name>fs.default.name</name>
  4. <value>hdfs://192.168.1.135:9000</value>
  5. </property>
  6. <property>
  7. <name>hadoop.tmp.dir</name>
  8. <value>/opt/hadoop-2.5.1/tmp</value>
  9. </property>
  10. </configuration>

hdfs-site.xml:

[html] view
plain
copy

 
  1. <configuration>
  2. <property>
  3. <name>dfs.replication</name>
  4. <value>1</value>
  5. </property>
  6. <property>
  7. <name>dfs.name.dir</name>
  8. <value>/uopt/hadoop-2.5.1/hdfs/name</value>
  9. </property>
  10. <property>
  11. <name>dfs.data.dir</name>
  12. <value>/opt/hadoop-2.5.1/hdfs/data</value>
  13. </property>
  14. </configuration>

上述路径都需要自己手动用mkdir创建(开头就已经创建了),具体位置也可以自己选择,其中dfs.replication的值建议配置为与分布式
cluster 中实际的 DataNode 主机数一致,在这里由于是伪分布式环境所以设置其为1。

mapred-site.xml(这个文件默认不存在,但是存在其模板文件mapred-site.xml.template,copy一份就行了):

[html] view
plain
copy

 
  1. <configuration>
  2. <property>
  3. <name>mapreduce.framework.name</name>
  4. <value>Yarn</value>
  5. </property>
  6. </configuration>

请注意这里安装的2.5.1版本,2.*版本较1.*版本改动很大,主要是用Hadoop MapReduceV2(Yarn) 框架代替了一代的架构,其中JobTracker 和 TaskTracker 不见了,取而代之的是 ResourceManager, ApplicationMaster
与 NodeManager 三个部分,而具体的配置文件位置与内容也都有了相应变化。所以我们在mapred-site.xml中设置了处理map-reduce的框架Yarn,接下来就需要在yarn-site.xml中配置ResourceManager, ApplicationMaster 与 NodeManager。

yarn-site.xml:

<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>Yarn.nodemanager.aux-services</name>
<value>mapreduce.shuffle</value>
</property>
<property>
<description>The address of the applications manager interface in the RM.</description>
<name>Yarn.resourcemanager.address</name>
<value>192.168.1.135:18040</value>
</property>
<property>
<description>The address of the scheduler interface.</description>
<name>Yarn.resourcemanager.scheduler.address</name>
<value>192.168.1.135:18030</value>
</property>
<property>
<description>The address of the RM web application.</description>
<name>Yarn.resourcemanager.webapp.address</name>
<value>192.168.1.135:18088</value>
</property>
<property>
<description>The address of the resource tracker interface.</description>
<name>Yarn.resourcemanager.resource-tracker.address</name>
<value>192.168.1.135:8025</value>
</property>
</configuration>

5.2.格式化HDFS

通过以上步骤,我们已经设定好Hadoop单机测试到环境,接着就是启动Hadoop到相关服务,格式化namenode,secondarynamenode,tasktracker:

[html] view
plain
copy

 
  1. ~$ /opt/hadoop-2.5.1/bin/hadoop namenode -format


如上图表示格式化成功。

5.3.启动Hadoop

接着执行start-all.sh来启动所有服务,包括namenode,datanode,start-all.sh脚本用来装载守护进程。

[html] view
plain
copy

 
  1. /opt/hadoop-2.5.1/sbin$ ./start-all.sh   #2.5.1版推荐使用start-dfs.sh和start-yarn.sh来启动

用Java的jps命令列出所有守护进程来验证安装成功

[html] view
plain
copy

 
  1. /opt/hadoop-2.5.1/bin$ jps

出现如下列表,表明成功

5.4.检查运行状态
所有的设置已完成,Hadoop也启动了,现在可以通过下面的操作来查看服务是否正常,在Hadoop中用于监控集群健康状态的Web界面(填写自己的IP):
http://192.168.1.135:50070              #dfs运行状态

http://192.168.1.135:8088                #resource manager运行状态

(完)

Ubuntu 14.04 (32位)上搭建Hadoop 2.5.1单机和伪分布式环境的更多相关文章

  1. Go在Ubuntu 14.04 64位上的安装过程

    1. 从 https://golang.org/dl/  或  https://studygolang.com/dl 下载最新的发布版本go1.10即go1.10.linux-amd64.tar.gz ...

  2. Ubuntu 14.04 64位上安装wps office软件(转http://m.blog.csdn.net/blog/yhc13429826359/24179933)

    废话少说,只给出方法供各位参考!wps for Linux版本已经有两三年没有大的动作,当然其他平台,比如windows,Android,ios上的wps效果还是很赞的说. 下面是我成功安装的步骤: ...

  3. Ubuntu 14.04 64位上安装wps office软件

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/tao_627/article/details/24179933 废话少说,仅仅给出方法供各位參考! ...

  4. ubuntu 14.04 32位库

    如果是ubuntu 14.04,则请先执行: 方法1: sudo gedit /etc/apt/sources.list 然后在最后添加上: deb http://archive.ubuntu.com ...

  5. Ubuntu 14.04 32位 JDK+ADT Bundle+NDK安装

    1. 安装JDK tar或GUI解压jdk-8u25-linux-i586.tar.gz 编辑/etc/environment文件 CLASSPATH="/home/zhouwei/jdk1 ...

  6. Ubuntu 12.04(32位)下PHP环境的搭建(LAMP)

    Ubuntu 12.04 32位 下默认安装为5.3.10  不是以下图文中的5.4 1.首先打开命令行,切换到root身份,获得最新的软件包 su root sudo apt-get install ...

  7. ubuntu 14.04 64位安装iNodeClient

    ubuntu 14.04 64位安装iNodeClieng(华三校园客服端) http://pan.baidu.com/s/12dpxk ubuntu 14.04 64bit Install H3C ...

  8. ubuntu 14.04 64位安装bigbluebutton

    BigBlueButton 是一个使用 ActionScript 开发的在线视频会议系统或者是远程教育系统,主要功能包括在线PPT演示.视频交流和语音交流,还可以进行文字交流.举手发言等功能,特别适合 ...

  9. Ubuntu 14.04(64位)+GTX970+CUDA8.0+Tensorflow配置 (双显卡NVIDIA+Intel集成显卡) ------本内容是长时间的积累,有时间再详细整理

    (后面内容是本人初次玩GPU时,遇到很多坑的问题总结及尝试解决办法.由于买独立的GPU安装会涉及到设备的兼容问题,这里建议还是购买GPU一体机(比如https://item.jd.com/396477 ...

随机推荐

  1. bootstrap表格内容垂直居中

    td{ vertical-align: middle !important;}

  2. HackerRank "Kitty and Katty"

    It's more of a brain-teaser than a Game Theory problem.. #!/bin/python3 T = int(input().strip()) for ...

  3. UML精粹4 - 对象图,包图,部署图,用例

    对象图object diagram 对象图是某个时间点上的对象在系统中的快照,也经常被称为实例图.一般在展示组合对象结构时比较有用.例如 组合结构的类图 一个时刻的对象图 包图package diag ...

  4. iOS 手写输入法奔溃,替换隐藏键盘方法

    {   UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:se ...

  5. dom4j生成xml

    package com.yunfengtech.solution.business; import java.io.FileOutputStream; import org.dom4j.Documen ...

  6. InnoDB: Error number 24 means ‘Too many open files’.--转载

    一.问题的描述 备份程序 执行前滚的时候报错.(-apply-log) InnoDB: Errornumber 24 means 'Too many open files'. InnoDB: Some ...

  7. Ubuntu中启用关闭Network-manager网络设置问题!

    Ubuntu中启用关闭Network-manager网络设置问题! [Server版本] 在UbuntuServer版本中,因为只存有命令行模式,所以要想进行网络参数设置,只能通过修改/etc/net ...

  8. Android:去掉默认的标题bar

    要使用自己定义的bar,只需要在layout文件中添加:<include layout="@layout/actionbar" />;当然你需要新建一个actionba ...

  9. 七、context command

    context command是用来新建自己的工具,可以调用OPENGL,获取鼠标操作函数,在view窗口画自己想画的东西.(我是这麽理解的,可以以后再确定一下) 下面是一个context comma ...

  10. C语言初始化——栈的初始化

    栈是一种具有后进先出性质的数据组织方式,也就是说后存放的先取出,先存放的后取出.栈底是第一个进栈的数据所处的位置,栈顶是最后一个进栈的数据所处的位置. 1.满栈与空栈 根据SP指针指向的位置,栈可以分 ...