zoukankan      html  css  js  c++  java
  • 搭建Hadoop2.0

    1. 安装ubuntu10.04

      为了和合作公司的产品匹配,选择了ubuntu10.04操作系统。安装方法如下:

      (1)安装vmware8.0.

      (2) 新建一个虚拟机,选择“I will install the operation system later”。在Setting中的CD/DVD(IDE)选择加载ISO,然后安装。直接安装会导致进入不了图形界面。

      (3)虚拟机中的安装过程很漫长,在79%的时候死机一次。后来发现拔掉网线安装比较快。在95%时,又停顿很长时间,不过也有网友提到过这个问题,耐心等待即可。

    2. root账户登录

      Ubuntu是很让人纠结的系统,为了避免误操作极大的限制了用户的权限,用起来很麻烦。如果是新手,希望采用直接root登录的方法,可以省去很多麻烦,但的确要小心误操作,一键Del下去文件就真没了。

      操作方法:运行sudo passwd root,设置root密码。重启,在其他用户中登录用root登录。假如不用root登录,在命令前加sudo也可以解决大部分问题。

    3.设置计算机名和IP

      建立三个虚拟机,ubuntu170、ubuntu171、ubuntu172。修改计算机名的操作方法:修改gedit /etc/hostname,重启后生效。设置IP为10.1.50.170/171/172、16,子网掩码255.255.255.0,网关10.1.50.254。设置后ping一下物理机,测试是否成功。设置方法:把vmware的网络连接模式改为桥接模式,然后输入命令sudo gedit /etc/network/interfaces进行编辑,加入内容:

      auto eth1 

      iface eth1 inet static

      address 10.1.50.170

      gateway 10.1.50.254

      netmask 255.255.255.0

    保存退出,用sudo /etc/init.d/networking restart命令来启用配置。

    注:网卡“eth1”是1还是2,可以在网络工具中查询到网卡的状态来决定。

    4. 安装VMware Tools

      为了解决虚拟机与物理机的文件共享和虚拟机之间的文件共享,安装VMwareTools是很有必要的,这个工具也很强大。

      操作方法:点击VM下的VMware Tools Installation,将虚拟光驱中的VMware Tools复制到/tmp中,用终端打开并进行解压,运行tar –zxvf VMwareTools-8.8.2-590212.tar.gz,然后运行./vmware-install.pl进行安装。在vm-setting-options设置共享文件夹,D:\My Virtual Machine\share。几个虚拟机可以使用同一个目录,实现文件共享。

    5. 配置 JAVA1.7.0_05

      Ubuntu自带的openjdk不行,还是要装sun公司的java。操作方法如下:

           (1)下载了jdk-7-linux-x64.tar.gz,放到共享文件夹中。将其解压到/usr/lib/jvm中,然后在运行sudo tar zxvf /mnt/hgfs/share/jdk-7-linux-x64.tar.gz -C /usr/lib/jvm ,把名字改为java-7-sun,sudo mv jdk1.7.0/ java-7-sun。

           (2)修改环境变量gedit ~/.bashrc。在文件中的末尾加入以下内容:

           export JAVA_HOME=/usr/lib/jvm/java-7-sun  
           export JRE_HOME=${JAVA_HOME}/jre  
           export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  
           export PATH=${JAVA_HOME}/bin:$PATH

    然后运行source ~/.bashrc,执行配置文件。

      (3)配置默认JDK版本

      sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-7-sun/bin/java 300  
      sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-7-sun/bin/javac 300  
      sudo update-alternatives --install /usr/bin/jar jar /usr/lib/jvm/java-7-sun/bin/jar 300

      sudo update-alternatives --config java  选择正确的编号。

      (4)查看java版本号

      输入java –version,系统显示以下内容则配置成功。

    java version "1.7.0_05"
    Java(TM) SE Runtime Environment (build 1.7.0_01-b08)
    Java HotSpot(TM) Client VM (build 21.1-b02, mixed mode)

    注:在配置过程中,开始使用的是32位系统的JAVA,导致好几天没有进展,后下载了64位的版本得到解决。还有一种方法,32位系统时,是因为缺少库ia32-libs,下载这个库即可。

    6.手动配置SSH

           为了解决节点之间的通信信任问题,各节点要开启SSH服务。苦逼的Ubuntu不自带SSH,在线安装SSH的方法很多,但实验室电脑不能上网,只能苦逼地自己查资料想办法,然后一个一个地试版本。具体操作方法:

      (1)下载以下三个文件并逐个安装:

     

    openssh-client_5.3p1-3ubuntu7_amd64.deb

    openssh-server_5.3p1-3ubuntu7_amd64.deb

    ssh_5.3p1-3ubuntu3_all.deb

     

    命令为sudo dpkg –i ‘flie’。启动服务sudo /etc/init.d/ssh start,查看服务是否正确启动ps -e|grep ssh。

      (2)在主节点的根目录下(即命令提示行的目录不用修改)建立.ssh目录,生成密钥对ssh-keygen –t rsa,进入.ssh目录执行cp id_rsa.pub authorized_keys。将文件authorized_keys复制给其他机器scp authorized_keys ubuntu171:/root/.ssh,scp authorized_keys ubuntu172:/root/.ssh。

      (3)进入所有机器的.ssh目录cd ~/.ssh,改变authorized_keys文件的许可权限,chmod 644 authorized_keys。(root用户登录不需要此步骤)

    7Clone虚拟机

           我在配置过程中好几个步骤都配置了三遍,后来分析配置好一个剩下的clone就行。操作方法:在目标机上点右键-Manage-clone,一路点下来就行。需要修改的地方有主机名和IP,前面已经介绍过了。

     小结:

      以上花了我近十天的时间,走过不少弯路。虽然没什么技术含量,但确实花费了心血很多。下一步进行Hadoop配置。

     

     
    分类: hadooplinux

    1.Hadoop2.0简述[1]

    与之前的稳定的hadoop-1.x相比,Apache Hadoop 2.x有较为显著的变化。这里给出在HDFS和MapReduce两方面的改进。

      HDFS:为了保证name服务器的规模水平,开发人员使用了多个独立的Namenodes和Namespaces。这些Namenode是联合起来的,它们之间不需要相互协调。Datanode可以为所有Namenode存放数据块,每个数据块要在平台上所有的Namenode上进行注册。Datenode定期向Namenode发送心跳信号和数据报告,接受和处理Namenodes的命令。

      YARN(新一代MapReduce):在hadoop-0.23中介绍的新架构,将JobTracker的两个主要的功能:资源管理和作业生命周期管理分成不同的部分。新的资源管理器负责管理面向应用的计算资源分配和每个应用的之间的调度及协调。

      每个新的应用既是一个传统意义上的MapReduce作业,也是这些作业的 DAG(Database Availability Group数据可用性组),资源管理者(ResourcesManager)和管理每台机器的数据管理者(NodeManager)构成了整个平台的计算布局。

      每一个应用的应用管理者实际上是一个架构的数据库,向资源管理者(ResourcesManager)申请资源,数据管理者(NodeManager)进行执行和监测任务。

    2. Hadoop2.0的目录结构[2]

      Hadoop2.0的目录结构很像Linux操作系统的目录结构,各个目录的作用如下:

      (1)   在新版本的hadoop中,由于使用hadoop的用户被分成了不同的用户组,就像Linux一样。因此执行文件和脚本被分成了两部分,分别存放在bin和sbin目录下。存放在sbin目录下的是只有超级用户(superuser)才有权限执行的脚本,比如start-dfs.sh, start-yarn.sh, stop-dfs.sh, stop-yarn.sh等,这些是对整个集群的操作,只有superuser才有权限。而存放在bin目录下的脚本所有的用户都有执行的权限,这里的脚本一般都是对集群中具体的文件或者block pool操作的命令,如上传文件,查看集群的使用情况等。

      (2)   etc目录下存放的就是在0.23.0版本以前conf目录下存放的东西,就是对common, hdfs, mapreduce(yarn)的配置信息。

      (3)   include和lib目录下,存放的是使用Hadoop的C语言接口开发用到的头文件和链接的库。

      (4)   libexec目录下存放的是hadoop的配置脚本,具体怎么用到的这些脚本,我也还没跟踪到。目前我就是在其中hadoop-config.sh文件中增加了JAVA_HOME环境变量。

      (5)   logs目录在download到的安装包里是没有的,如果你安装并运行了hadoop,就会生成logs 这个目录和里面的日志。

      (6)   share这个文件夹存放的是doc文档和最重要的Hadoop源代码编译生成的jar包文件,就是运行hadoop所用到的所有的jar包。

    3.学习hadoop的配置文件[3]

      (1)   dfs.hosts记录即将作为datanode加入集群的机器列表

      (2)   mapred.hosts 记录即将作为tasktracker加入集群的机器列表

      (3)   dfs.hosts.exclude mapred.hosts.exclude 分别包含待移除的机器列表

      (4)   master 记录运行辅助namenode的机器列表

      (5)   slave 记录运行datanode和tasktracker的机器列表

      (6)   hadoop-env.sh 记录脚本要用的环境变量,以运行hadoop

      (7)   core-site.xml hadoop core的配置项,例如hdfs和mapreduce常用的i/o设置等。

      (8)   hdfs-site.xml hadoop守护进程的配置项,包括namenode、辅助namenode和datanode等。

      (9)   mapred-site.xml mapreduce守护进程的配置项,包括jobtracker和tasktracker。

      (10) hadoop-metrics.properties 控制metrics在hadoop上如何发布的属性。

         (11) log4j.properties 系统日志文件、namenode审计日志、tasktracker子进程的任务日志的属性。

    4. hadoop详细配置[4,5]

       从Hadoop官网上下载hadoop-2.0.0-alpha.tar.gz,放到共享文件夹中,在/usr/lib中进行解压,运行tar -zxvf /mnt/hgfs/share/hadoop-2.0.0-alpha.tar.gz。

      (1)在gedit ~/.bashrc中编辑:

    export HADOOP_PREFIX="/usr/lib/hadoop-2.0.0-alpha"
    export PATH=$PATH:$HADOOP_PREFIX/bin
    export PATH=$PATH:$HADOOP_PREFIX/sbin

    export HADOOP_MAPRED_HOME=${HADOOP_PREFIX}

    export HADOOP_COMMON_HOME=${HADOOP_PREFIX}
    export HADOOP_HDFS_HOME=${HADOOP_PREFIX}
    export YARN_HOME=${HADOOP_PREFIX}

    仍然保存退出,再source ~/.bashrc,使之生效。

      (2)在etc/hadoop目录中编辑 core-site.xml

    <configuration>

    <property>

    <name>io.native.lib.available</name>

    <value>true</value>

    </property>

    <property>

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

    <value>hdfs://10.1.50.170:9000</value>

    <description>The name of the default file system.Either the literal string "local" or a host:port for NDFS.</description>

    <final>true</final>

    </property>

    </configuration>

        (3) 在etc/hadoop目录中编辑hdfs-site.xml

    <configuration>

    <property>

    <name>dfs.namenode.name.dir</name>

    <value>file:/usr/lib/hadoop-2.0.0-alpha/workspace/hadoop_space/hadoop23/dfs/name</value>

    <description>Determines where on the local filesystem the DFS name node should store the name table.If this is a comma-delimited list of directories,then name table is replicated in all of the directories,for redundancy.</description>

    <final>true</final>

    </property>

    <property>

    <name>dfs.datanode.data.dir</name>

    <value>file:/usr/lib/hadoop-2.0.0-alpha/workspace/hadoop_space/hadoop23/dfs/data</value>

    <description>Determines where on the local filesystem an DFS data node should store its blocks.If this is a comma-delimited list of directories,then data will be stored in all named directories,typically on different devices.Directories that do not exist are ignored.

    </description>

    <final>true</final>

    </property>

    <property>

    <name>dfs.replication</name>

    <value>1</value>

    </property>

    <property>

    <name>dfs.permission</name>

    <value>false</value>

    </property>

    </configuration>

       路径

    file:/home/hadoop/workspace/hadoop_space/hadoop23/dfs/name与

    file:/home/hadoop/workspace/hadoop_space/hadoop23/dfs/data

    是计算机中的一些文件夹,用于存放数据和编辑文件的路径必须用一个详细的URI描述。

      (4)在 /etc/hadoop 使用以下内容创建一个文件mapred-site.xml

    <configuration>

    <property>

    <name>mapreduce.framework.name</name>

    <value>yarn</value>

    </property>

    <property>

    <name>mapreduce.job.tracker</name>

    <value>hdfs://10.1.50.170:9001</value>

    <final>true</final>

    </property>

    <property>

    <name>mapreduce.map.memory.mb</name>

    <value>1536</value>

    </property>

    <property>

    <name>mapreduce.map.java.opts</name>

    <value>-Xmx1024M</value>

    </property>

    <property>

    <name>mapreduce.reduce.memory.mb</name>

    <value>3072</value>

    </property>

    <property>

    <name>mapreduce.reduce.java.opts</name>

    <value>-Xmx2560M</value>

    </property>

    <property>

    <name>mapreduce.task.io.sort.mb</name>

    <value>512</value>

    </property>

    <property>

    <name>mapreduce.task.io.sort.factor</name>

    <value>100</value>

    </property>

    <property>

    <name>mapreduce.reduce.shuffle.parallelcopies</name>

    <value>50</value>

    </property>

    <property>

    <name>mapred.system.dir</name>

    <value>file:/usr/lib/hadoop-2.0.0-alpha/workspace/hadoop_space/hadoop23/mapred/system</value>

    <final>true</final>

    </property>

    <property>

    <name>mapred.local.dir</name>

    <value>file:/usr/lib/hadoop-2.0.0-alpha/workspace/hadoop_space/hadoop23/mapred/local</value>

    <final>true</final>

    </property>

    </configuration>

        路径:

    file:/home/hadoop/workspace/hadoop_space/hadoop23/mapred/system与

    file:/home/hadoop/workspace/hadoop_space/hadoop23/mapred/local

     为计算机中用于存放数据的文件夹路径必须用一个详细的URI描述。

       (5)编辑yarn-site.xml

           <configuration>

    <property>

    <name>yarn.resourcemanager.address</name>

    <value>10.1.50.170:8080</value>

    </property>

    <property>

    <name>yarn.resourcemanager.scheduler.address</name>

    <value>10.1.50.170:8081</value>

    </property>

    <property>

    <name>yarn.resourcemanager.resource-tracker.address</name>

    <value>10.1.50.170:8082</value>

    </property>

    <property>

    <name>yarn.nodemanager.aux-services</name>

    <value>mapreduce.shuffle</value>

    </property>

    <property>

    <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>

    <value>org.apache.hadoop.mapred.ShuffleHandler</value>

    </property>

    </configuration>

      (6) 在 /etc/hadoop 目录中创建hadoop-env.sh 并添加:

    export HADOOP_FREFIX=/usr/lib/hadoop-2.0.0-alpha

    export HADOOP_COMMON_HOME=${HADOOP_FREFIX}

    export HADOOP_HDFS_HOME=${HADOOP_FREFIX}

    export PATH=$PATH:$HADOOP_FREFIX/bin

    export PATH=$PATH:$HADOOP_FREFIX/sbin

    export HADOOP_MAPRED_HOME=${HADOOP_FREFIX}

    export YARN_HOME=${HADOOP_FREFIX}

    export HADOOP_CONF_HOME=${HADOOP_FREFIX}/etc/hadoop

    export YARN_CONF_DIR=${HADOOP_FREFIX}/etc/hadoop

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

       另,需要yarn-env.sh中充填相同的内容,再配置到各节点。

      配置过程中遇到的问题:

      ▼在浏览器中localhost:8088中,只能看到主节点的信息,看不到datanode的信息。

    解决方法:在重新配置yarn.xml(以上为修改后内容)后已经可以看到两个节点,但启动后有一个datanode会自动关闭。

      ▼在纠结了很长时间kerbose的问题后,才找到运行不能的原因是这个提示:

      INFO mapreduce.Job: Job job_1340251923324_0001 failed with state FAILED due to: Application application_1340251923324_0001 failed 1 times due to AM Container for appattempt_1340251923324_0001_000001 exited with  exitCode: 1 due to:Failing this attempt.. Failing the application.

      按照一个国外友人的回贴[6]fs.deault.name -> hdfs://localhost:9100 in core-site.xml ,mapred.job.tracker - > http://localhost:9101 in mapred-site.xml,错误提示发生改变。再把hadoop-env.sh中的内容copy到yarn-env.sh中,平台就可以勉强运行了(还是有报警)

    5.初始化hadoop

      首先格式化 namenode,输入命令 hdfs namenode –format;

     

      然后开始守护进程 hadoop-daemon.sh start namenode 和 hadoop-daemon.sh start datanode或(可以同时启动:start-dfs.sh);然后,开始 Yarn 守护进程运行 yarn-daemon.sh start resourcemanager和 yarn-daemon.sh start nodemanager(或同时启动: start-yarn.sh)。

      最后,检查守护进程是否启动运行 jps,是否输出以下结果:

      在datanode上jps,有以下输出:

      浏览UI,打开 localhost:8088 可以查看资源管理页面。

      结束守护进程stop-dfs.sh和stop-yarn.sh(或者同时关闭stop-all.sh)。

     

    ■小结

           在配置文件上花费的时间严重超出了预期,也很没有成就感。只是更多地熟悉了hadoop的结构和相关的配置文件。也摸索了一点解决问题的方法,还是耐心看log、google和官网论坛。下一步针对hadoop试运行一下自带实例。

     

    参考文献:

    1. http://dongxicheng.org/mapreduce-nextgen/apache-hadoop-2-0-alpha
    2. http://blog.sina.com.cn/s/blog_59d2b1db0100ra6h.html
    3. http://www.cnblogs.com/tangtianfly/archive/2012/04/11/2441760.html
    4. http://hadoop.apache.org/common/docs/r2.0.0-alpha/
    5. http://blog.csdn.net/shenshouer/article/details/7613234
    6. http://www.linkedin.com/groups/Please-Help-Me-This-ERRORorgapachehadoophdfsservernamenodeNameNode-988957.S.115830635?qid=58283adf-47dc-43ba-879b-0612f3eb7cd7&trk=group_most_popular_guest-0-b-cmr&goback=.gmp_988957
    hadoop
     
    搭建Hadoop2.0(二)hadoop环境配置
    摘要: 1.Hadoop2.0简述[1]与之前的稳定的hadoop-1.x相比,Apache Hadoop 2.x有较为显著的变化。这里给出在HDFS和MapReduce两方面的改进。 HDFS:为了保证name服务器的规模水平,开发人员使用了多个独立的Namenodes和Namespaces。这些Namenode是联合起来的,它们之间不需要相互协调。Datanode可以为所有Namenode存放数据块,每个数据块要在平台上所有的Namenode上进行注册。Datenode定期向Namenode发送心跳信号和数据报告,接受和处理Namenodes的命令。 YARN(新一代MapReduce):在h..阅读全文
    posted @ 2012-07-16 23:36 aniuer 阅读(302) | 评论 (0) 编辑
     
    搭建Hadoop2.0(一)系统环境基本配置
    摘要: 1. 安装ubuntu10.04 为了和合作公司的产品匹配,选择了ubuntu10.04操作系统。安装方法如下: (1)安装vmware8.0. (2) 新建一个虚拟机,选择“I will install the operation system later”。在Setting中的CD/DVD(IDE)选择加载ISO,然后安装。直接安装会导致进入不了图形界面。 (3)虚拟机中的安装过程很漫长,在79%的时候死机一次。后来发现拔掉网线安装比较快。在95%时,又停顿很长时间,不过也有网友提到过这个问题,耐心等待即可。2. 用root账户登录 Ubuntu是很让人纠结的系统,为了避免误操作...阅读全文
    posted @ 2012-07-06 13:42 aniuer 阅读(91) | 评论 (2) 编辑

     

     
    分类: hadoop
  • 相关阅读:
    闭包(closure)与协程共用时要注意的事情
    mysql---视图
    职责链模式
    JavaScript DOM(一)
    9.7 迭代
    [BLE--Link Layer]设备蓝牙地址
    Loopback測试软件AX1用户手冊 V3.1
    操作系统
    OpenCV特征点检測------Surf(特征点篇)
    linux 命令 xxd
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2594653.html
Copyright © 2011-2022 走看看