zoukankan      html  css  js  c++  java
  • hadoop和hdfs环境搭建

    参考链接:http://blog.csdn.net/zolalad/article/details/11470449

    环境:ubuntu14.04 hadoop1.0.1

    下面以3台机器为例,讲解安装过程

    1) 准备3台机器,一台作为nameNode,命名为master,两台作为dataNode,命名为slave01, slave02。强调命名是为了方便管理,其实命名无所谓。如果已命名为其它名称,可通过编辑/etc/hostname进行更改。

    2) 为所有主从节点配置静态ip,因为主从节点间需要相互访问,如果ip地址动态变化可能造成无法访问的错误。当然,如果在同一局域网中也可以通过主机名以及主机名和ip地址的动态映射服务相互访问。但还是建议设置静态ip

    3) 在3台机器上都设置hadoop用户,并且给这一用户管理员权限,我出于学习目的直接使用了root用户。添加用户命令:adduser hadoop,之后按提示输入和确认密码。增加管理员权限可修改/etc/sudoers 文件,找到下面一行:root ALL=(ALL) ALL,在该行下增加一行:hadoop ALL=(ALL) ALL。也可以将hadoop用户加入具有管理员权限的组中。另外,还可以修改/etc/passwd 文件,找到如下行:hadoop:x:1001:1001:hadoop:/home/hadoop:/bin/bash把用户ID修改为 0,则修改后该行变为:hadoop:x:0:1001:hadoop:/home/hadoop:/bin/bash。这样做,hadoop用户就完全变为root用户了,虽简单,但不建议这么改。

    4) 安装SSH并配置免密码SSH访问机制(重要)Ubuntu系统可通过sudo apt-get install ssh进行安装,其它系统请自行查阅相关资料。配置ssh无密码直接访问:首先查看hadoop用户的home目录中是否包含名称为.ssh的文件夹,可用命令ls -a,如果没有,则可以自己建一个,可用命令mkdir .ssh,之后执行命令ssh-keygen -t rsa,接下来一般一路回车即可(当然你也可以仔细看一下每一步都是干什么的),接下进入.ssh目录,执行命令:cat id_rsa.pub >> authorized_keys,注意,在所有节点执行以上操作,并将所有节点的authorized_keys文件合并成一个,并且在所有节点间共享这一文件(至于所有节点的.ssh目录下),至此,所有节点之间都可以通过ssh无密码访问了,ssh远程登陆可用命令ssh ip -l username,设置完后可通过该命令进行测试。之所以要设置ssh无密码访问机制,是因为hadoop使用ssh协议,无密码访问更加方便(话说我还不是特别清楚hadoop支不支持有密码访问)。

    5) Jdk安装。可使用官方jdk,也可以使用openjdkopenjdk建议使用版本7,官方jdk建议使用版本6以上。我使用的是官方jdk,版本1.7.0_51,可通过命令java -version查看jdk版本。以我的版本为例,首先下载jdk-7u51-linux-x64.tar.gz,解压到你自己选择的安装路径,我选的是/usr/java,之后配置一下环境变量,可修改/etc/profile文件,该修改对整个系统生效,也可以修改/home/username/.bashrc,该修改仅对相应用户生效,修改完后,可执行source /etc/profile使修改生效。如我在/etc/profile文件中增加如下几行:

    export  JAVA_HOME=/usr/java/jdk1.7.0_51

    export  JRE_HOME=$JAVA_HOME/jre

    export  PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

    6) 在主节点上解压安装Hadoop。到Hadoop官网下载hadoop-1.0.1.tar.gz(本人使用的是此版本!),我所选择的安装目录是用户的home目录,所以将其直接解压到root用户的home目录下。

    7) 配置hadoop环境变量。同样是配置/etc/profile文件,以我为例添加以下内容:

    export  HADOOP_HOME=/root/hadoop-1.0.1

    export  PATH=$PATH:$HADOOP_HOME/bin

    export   HADOOP_CLASSPATH=$HADOOP_HOME/lib/commons-lang-2.4.jar:$HADOOP_HOME/lib/commons-logging-api-1.0.4.jar:$HADOOP_HOME/lib/commons-configuration-1.6.jar:$HADOOP_HOME/hadoop-core-1.0.1.jar:$HADOOP_HOME/contrib/streaming/hadoop-streaming-1.0.1.jar

    export   CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$HADOOP_CLASSPATH。同 样需要使用source命令使配置生效。

    8) 在主节点上修改hadoop配置文件。 Hadoop的配置文件存放在hadoop安装目录下的conf目录中,主要有以下几个配置文件要修改:

    conf/hadoop-env.shHadoop环境变量设置

    conf/core-site.xml:主要完成NameNodeIP和端口设置

    conf/hdfs-site.xml:主要完成HDFS的数据块副本等参数设置

    conf/mapred-site.xml:主要完成JobTracker IP和端口设置

    conf/masters:完成master节点IP设置

    配置hadoop-env.sh文件

    添加 # set java environment

    export JAVA_HOME=/usr/java/jdk1.7.0_51

    配置core-site.xml

    <?xml version="1.0"?>

    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

    <!-- Put site-specific property overrides in this file. -->

    <configuration>

       <property>

         <name>fs.default.name</name>

         <value>hdfs://Master:9000/</value>//Master为主节点主机名

       </property>

       <property> 

          <name>hadoop.tmp.dir</name> 

          <value>/tmp</value> 

       </property>

    </configuration>

    说明:hadoop分布式文件系统的两个重要的目录结构,一个是namenode上名字 空间的存放地方,一个是datanode数据块的存放地方,还有一些其他的文件存 放地方,这些存放地方都是基于hadoop.tmp.dir目录的,比如namenode的名字 空间存放地方就是 ${hadoop.tmp.dir}/dfs/name, datanode数据块的存放地方就是  ${hadoop.tmp.dir}/dfs/data,所以设置好hadoop.tmp.dir目录后,其他的重要目录 都是在这个目录下面,这是一个根目录。在此设置的是 /tmp,当然这个目录必须 是存在的。

    配置hdfs-site.xml

    <?xml version="1.0"?>

    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

    <!-- Put site-specific property overrides in this file. -->

    <configuration>

      <property>

         <name>dfs.replication</name>

         <value>3</value>

      </property>

    </configuration> 

    配置mapred-site.xml

    <?xml version="1.0"?>

    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

    <!-- Put site-specific property overrides in this file. -->

    <configuration>

      <property>

         <name>mapred.job.tracker</name>

         <value>Master:9001</value>

      </property>

    </configuration>

    配置masters文件和slaves文件

    将主机名填进去就行了

    9) 之后,就可以将配置好好的主节点拷贝到其他各节点上。可使用命令scp。如我的是scp -r /root/hadoop-1.0.1/ root@ip:/root。即将主节点root目录下的hadoop目录拷贝到其他节点的root目录下。完成之后,需要修改各节点的/etc/hosts文件,以完成主机名到ip地址的映射。

    10) 格式化NameNode。执行Hadoopbin文件夹中的格式化命令:hadoop namenode -format,如果格式化成功,会返回一堆有关NameNode的启动信息,其中会有一句“…. has been successfully formatted.

    11) 启动HDFSMapReduce。执行命令start-all.sh。用JPS命令检查一下是否正常启动:jsp显示以下各进程信息则说明HDFSMapReduce都已正常启动:

    4706 JobTracker

    4582 SecondaryNameNode

    4278 NameNode

    4413 DataNode

    4853 TaskTracker

    4889 Jps 

    12)进行测试,使用hadoop自带的测试用例wordcount程序,执行命令:hadoop jar hadoop-1.0.1-examples.jar wordcount input output。其中input文件夹是位于hadoop文件系统/user/root/目录下,可查看该目录下的文件,使用命令:hadoop fs -ls /user/root/input,其中ls可以换成其他linux命令。将待计数的文本文件至于该目录下,使用命令:hadoop fs -put file /user/root/input。输出结果将置于output目录下。如没有input目录可以建一个。

  • 相关阅读:
    JS 获取网页内容高度 和 网页可视高度 支持IE6789 Firefox Chrome
    JS 回车快捷键登陆页面 兼容火狐和IE
    如何设置span宽度
    实现三行布局页面自适应不同分辨率下的屏幕高度
    电脑个别网站打不开 POSTMAN可以请求通
    克隆DataTable
    Microsoft Visual SourceSafe 6.0 关联VS
    asp.net 网站设置访问超时时长
    sql server management studio(ssms)连接多个数据库注意事项
    ASP.NET Core 开发中间件(StaticFiles)使用
  • 原文地址:https://www.cnblogs.com/caoyingjie/p/3793509.html
Copyright © 2011-2022 走看看