码迷,mamicode.com
首页 > 系统相关 > 详细

ubuntu14.04安装hadoop2.6.0(伪分布模式)

时间:2015-06-26 01:43:56      阅读:498      评论:0      收藏:0      [点我收藏+]

标签:

版本:虚拟机下安装的ubuntu14.04(x64),hadoop-2.6.0

下面是hadoop2.6.0的官方教程(英文):

http://hadoop.apache.org/docs/r2.6.0/hadoop-project-dist/hadoop-common/SingleCluster.html#Pseudo-Distributed_Operation

hadoop下载地址:

http://mirror.bit.edu.cn/apache/hadoop/common/ 选择hadoop-2.6.0.tar.gz这个二进制文件

安装之前首先考虑的是hadoop的版本问题,hadoop-1x和hadoop-2x其实完全是两个东西,生产环境下多采用hadoop1.2.1-这是一个稳定的版本。而hadoop-2x版本bug相对比较多。

其次hadoop2.6.0本地库文件是64位的,而hadoop2.4.0本地库是32位的。如果跟系统版本不匹配,运行hadoop例子时会出现:

WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable(这个错误也可能是其他原因导致的,我遇到的是其他原因,后面会说解决办法)

最后是hadoop的三种模式:单机、伪分布、全分布。全分布需要至少三个节点,因为我的笔记本电脑内存不大,所以最后只是搭建到伪分布模式。所以并没有创建hadoop用户组,也剩下了很多麻烦。以后搭建完全分布式再来补这个点,但是伪分布没有hadoop用户组,也能用。

另:碰到最多的麻烦就是权限问题了。

sudo chmod 777 {path}获取该路径下文件夹的最高权限

sudo chmod 777 {path}/* -R 获取该目录下所有文件最高权限

sudo nautilus 对文件夹随意操作,没有权限,偶尔使用!!

1.安装前准备

一、安装ssh
  安装命令sudo apt-get install openssh-server

  启动服务:sudo /etc/init.d/ssh start

  查看服务是否正确启动:ps -e | grep ssh

  设置免密码登录,生成私钥和公钥:ssh-keygen -t rsa -P ""此时会在/home/hadoop/.ssh下生成两个文件:id_rsa和id_rsa.pub,前者为私钥,后者为公钥。(.ssh文件是隐藏文件,可以设置显示隐藏文件让其显示出来)

  将公钥追加到authorized_keys中:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

  用ssh连接自己:ssh localhost。如果还是需要密码,则没有成功。

二、安装java jdk和设置环境变量
  
  安装openjdk命令:sudo apt-get install openjdk-7-jdk
  然而openjdk东西比较少,可以安装oraclejdk:(推荐安装Java-7-oracle)
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java7-installer

   最后通过:java -version查看是否安装成功,并显示java版本。

    查看JAVA_HOME位置:sudo update-alternatives --config java。我的结果是/usr/lib/jvm/java-7-oracle/bin/jre/java。配置环境变量只写到java-7-oracle。

    配置环境变量:

   命令:sudo gedit ~/.bashrc     (配置.bashrc文件,或者.profile文件)

   在文件末尾加入(第二行JAVA_HOME和第三行HADOOP_INSTALL安装路径改成自己的)

#HADOOP VARIABLES START

export JAVA_HOME=/usr/lib/jvm/java-7-oracle

export HADOOP_INSTALL=/usr/local/hadoop

export PATH=$PATH:$HADOOP_INSTALL/bin

export PATH=$PATH:$HADOOP_INSTALL/sbin

export HADOOP_MAPRED_HOME=$HADOOP_INSTALL

export HADOOP_COMMON_HOME=$HADOOP_INSTALL

export HADOOP_HDFS_HOME=$HADOOP_INSTALL

export YARN_HOME=$HADOOP_INSTALL

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native

export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib"

#HADOOP VARIABLES END

    使环境变量设置立即生效(重新注销或者重启都行):source ~/.bashrc

2.hadoop配置

    我的hadoop安装路径/usr/local/hadoop,下载的文件解压缩后的文件名改成了hadoop,hadoop配置文件放在{HADOOP安装路径}/etc/hadoop文件夹下:需要修改hadoop-env.sh,core-site.xml,hdfs-site.xml,mapred-site.xml,yarn-site.xml五个文件。

   1.hadoop-env.sh文件,在末尾添加(第一行JAVA_HOME和第二行HADOOP_PREFIX(hadoop安装路径)改成自己的)

export JAVA_HOME=/usr/lib/jvm/java-7-oracle
export HADOOP_PREFIX=/usr/local/hadoop
export HADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib:$HADOOP_PREFIX/lib/native"

    注意第三行的HADOOP_OPTS,如果没有这一项运行会有:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable的错误提示。如果你是32位的系统,运行hadoop2.6.0还需要重新编译本地库。本地库路径为:{hadoop安装路径}/lib/natives。

  查看本地库版本命令:file /usr/loacl/hadoop/lib/native/libhadoop.so.1.0.0

  (32位)libhadoop.so.1.0.0: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, not stripped

  (64位)libhadoop.so.1.0.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, not stripped

  查看系统位数:uname -a,如果有x86_64就是64位的,没有就是32位的。

  2.core-site.xml文件,在末尾<configuration></configuration>中间添加内容,最后:

<configuration>
    <property>  
        <name>hadoop.tmp.dir</name>  
        <value>/usr/local/hadoop/tmp</value>  
        <description>Abase for other temporary directories.
</description>  
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

    其中前一部分的hadoop.tmp.dir参数官方教程里没有,如果没有配置临时文件会默认生成在:根目录/tmp/hadoop-hadoop中,但是重启系统后内容会重新删掉,会有意想不到的问题出现!!注意修改路径,并在该路径下新建tmp文件夹。

  3.mapred-site.xml是没有的,有一个mapred-site.xml.template文件将其改名为mapred-site.xml就好。同样在末尾<configuration></configuration>中间添加内容,最后:

<configuration>
 <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property> 
</configuration>

  4.yarn-site.xml文件,在末尾<configuration><!-- Site specific YARN configuration properties --></configuration>添加内容,最后:

yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>

  5.hdfs-site.xml文件,在末尾<configuration></configuration>中间添加内容,最后:

<configuration>
<property>  
        <name>dfs.replication</name>  
        <value>1</value>  
    </property>  
    <property>  
        <name>dfs.namenode.name.dir</name>  
        <value>file:/usr/local/hadoop/dfs/name</value>  
    </property>  
    <property>  
        <name>dfs.datanode.data.dir</name>  
        <value>file:/usr/local/hadoop/dfs/data</value>  
    </property>  
</configuration>

  后面两个dfs.name.dir,dfs.datanode.data.dir参数官网教程没有(注意修改路径),并不必需新建dfs文件夹,会自动生成的。

3.hadoop运行

  • 格式化hdfs:/usr/local/hadoopbin/hdfs namenode -format.
/usr/local/hadoop$ bin/hdfs namenode -format.

当出现:INFO common.Storage: Storage directory /home/hadoop/tmp/dfs/name has been successfully formatted.表示成功。只需要格式化一次。

  • hadoop启动,执行:/usr/local/hadoop$ sbin/start-all.sh
/usr/local/hadoop$ sbin/start-all.sh
输入命令检测:jps。如果成功启动的话会有:jps,NameNode,DataNode,SecondaryNameNode,ResourceManager,NodeManager六个进程。并且查看NameNode-http://localhost:50070/,ResourceManager-http://localhost:8088/这两个网址是否能够打开
  • 创建MapReduce作业所需的HDFS目录:/usr/local/hadoop$ bin/hdfs dfs -mkdir /user;/usr/local/hadoop$ bin/hdfs dfs -mkdir /user/<usrname>(机器名)
/usr/local/hadoop$ bin/hdfs dfs -mkdir /user
/usr/local/hadoop$ bin/hdfs dfs -mkdir /user/<usrname>(机器名)
事实上HDFS目录中内容通过文件夹是看不到的,之后可以用eclipse通过hadoop插件很方便的查看和操作。
  • 运行一下例子:

(1)复制一些文件到HDFS目录/usr/<usrname>下:/usr/local/hadoop$ bin/hdfs dfs -put etc/hadoop input

/usr/local/hadoop$ bin/hdfs dfs -put etc/hadoop input

(2)运行:/usr/local/hadoop$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar grep input output ‘dfs[a-z.]+

/usr/local/hadoop$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar grep input output ‘dfs[a-z.]+ 

(3)输出结果从HDFS到本地文件output中(事先在HADOOP目录下新建output文件夹):/usr/local/hadoop$ bin/hdfs dfs -get output output

(4)从本地output文件夹查看结果:/usr/local/hadoop$ cat output/*

/usr/local/hadoop$ cat output/* 

或者直接在HDFS目录下直接查看:/usr/local/hadoop$ bin/hdfs dfs -cat output/*

/usr/local/hadoop$ bin/hdfs dfs -cat output/*
  • 关闭hadoop:/usr/local/hadoop$ bin/stop-all.sh
/usr/local/hadoop$ bin/stop-all.sh  

至此搭建完成。OVER!

ubuntu14.04安装hadoop2.6.0(伪分布模式)

标签:

原文地址:http://www.cnblogs.com/zhangduo/p/4592749.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!