0x00 说明

此处已经省略基本配置步骤参考Hadoop1.0.3环境搭建流程,省略主要步骤有:

  • 建立一般用户
  • 关闭防火墙和SELinux
  • 网络配置

0x01 配置master免密钥登录slave

  1. 生成密钥

    $ su hadoop
    $ ssh-keygen -t rsa 
  2. id_rsa.pub追加到授权key中(要将所有slave节点的公钥都追加到该文件中,此处仅列举一条命令

    $ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
  3. authorized_keys复制到所有slave节点

    $ scp ~/.ssh/authorized_keys hadoop@192.168.1.11:~/.ssh/
    $ scp ~/.ssh/authorized_keys hadoop@192.168.1.12:~/.ssh/   
  4. 测试,master免密钥登陆所有slave节点

    $ ssh slave1
    $ ssh slave2

0x02 hadoop2.5.2安装

  1. 解压

    $ tar -zvxf hadoop-2.5.2.tar.gz  -C /home/hadoop/hadoop
    $ chown -R hadoop:hadoop /home/hadoop
  2. 配置环境变量(在尾部追加

    # vim  /etc/profile
    # set hadoop environment
    export HADOOP_HOME=/home/hadoop/hadoop
    export HADOOP_COMMON_HOME=$HADOOP_HOME
    export HADOOP_HDFS_HOME=$HADOOP_HOME
    export HADOOP_MAPRED_HOME=$HADOOP_HOME
    export HADOOP_YARN_HOME=$HADOOP_HOME
    export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
    export CLASSPATH=.:$JAVA_HOME/lib:$HADOOP_HOME/lib:$CLASSPATH
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

    使环境变量立即生效注意在哪个用户下执行该命令,环境变量在那个用户下生效

    # su hadoop
    $ source /etc/profile

0x03 配置hadoop文件

  1. core-site.xml

    注意:hadoop_tmp文件夹一定要配置在存储空间比较大的位置,否则会报错

    可能出现的问题:

    (1)Unhealthy Nodes 问题

    http://blog.csdn.net/korder/article/details/46866271

    (2)local-dirs turned bad

    (3)Hadoop运行任务时一直卡在: INFO mapreduce.Job: Running job

    http://www.bkjia.com/yjs/1030530.html

    <configuration>
     <property>
            <name>fs.defaultFS</name>
            <value>hdfs://master:9000</value>
     </property>
     <property>
            <name>hadoop.tmp.dir</name>
            <value>file:/home/hadoop/hadoop/hadoop_tmp</value>
            <!--需要自己创建hadoop_tmp文件夹-->
     </property>
     <property>
            <name>io.file.buffer.size</name>
            <value>131072</value>
     </property>
    </configuration>
  2. hdfs-site.xml

    <configuration>
       <property>
               <name>dfs.replication</name>
                <value>2</value>
       </property>
       <property>
                <name>dfs.namenode.secondary.http-address</name>
               <value>master:9001</value>
       </property>
       <property>
              <name>dfs.namenode.name.dir</name>
              <value>file:/home/hadoop/hadoop/dfs/name</value>
              <description>namenode上存储hdfs元数据</description>
       </property>
       <property>
               <name>dfs.datanode.data.dir</name>
               <value>file:/ home/hadoop/hadoop/dfs/data</value>
               <description>datanode上数据块物理存储位置</description>
       </property>
       <property>
               <name>dfs.webhdfs.enabled</name>
                <value>true</value>
       </property>
    </configuration> 

    注:访问namenode的 webhdfs 使用50070端口,访问datanode的webhdfs使用50075端口。要想不区分端口,直接使用namenode的IP和端口进行所有webhdfs操作,就需要在所有datanode上都设置hdfs-site.xml中dfs.webhdfs.enabled为true。

  3. mapred-site.xml

    <configuration>
       <property>
             <name>mapreduce.framework.name</name>
             <value>yarn</value>
      </property>
      <property>
             <name>mapreduce.jobhistory.address</name>
             <value>master:10020</value>
      </property>
      <property>
             <name>mapreduce.jobhistory.webapp.address</name>
             <value>master:19888</value>
      </property>
    </configuration> 

    jobhistory是Hadoop自带一个历史服务器,记录Mapreduce历史作业。默认情况下,jobhistory没有启动,可用以下命令启动:

    $ sbin/mr-jobhistory-daemon.sh start historyserver

  4. yarn-site.xml

    <configuration>
       <property>
              <name>yarn.nodemanager.aux-services</name>
              <value>mapreduce_shuffle</value>
       </property>
       <property>
               <name>yarn.resourcemanager.address</name>
               <value>master:8032</value>
       </property>
       <property>
              <name>yarn.resourcemanager.scheduler.address</name>
              <value>master:8030</value>
       </property>
       <property>
              <name>yarn.resourcemanager.resource-tracker.address</name>
              <value>master:8031</value>
       </property>
       <property>
               <name>yarn.resourcemanager.admin.address</name>
               <value>master:8033</value>
       </property>
       <property>
               <name>yarn.resourcemanager.webapp.address</name>
               <value>master:8088</value>
       </property>
    </configuration>
  5. 修改slaves文件,添加datanode节点hostname到slaves文件中

    slave1
    slave2
  6. hadoop-env.sh

    vim /home/hadoop/hadoop/etc/hadoop/hadoop-env.sh
    export JAVA_HOME=${JAVA_HOME}
    |
    export JAVA_HOME=/usr/java
  7. 最后,将整个/home/hadoop/hadoop文件夹及其子文件夹使用scp复制到Slave相同目录中:

    $ scp -r /home/hadoop/hadoop hadoop@slave1:/home/hadoop/
    $ scp -r /home/hadoop/hadoop hadoop@slave2:/home/hadoop/

0x04 运行hadoop

  1. 格式化(*确保配置文件中各文件夹已经创建

    $ hdfs namenode –format
  2. 启动hadoop

    $ start-dfs.sh
    $ start-yarn.sh
    //可以用一条命令来代替:
    $ start-all.sh
  3. jps查看进程

    (1)master主节点进程:



    (2)slave数据节点进程:

  4. 通过浏览器查看集群运行状态

    概览:http://172.16.1.156:50070/

    集群:http://172.16.1.156:8088/

    JobHistory:http://172.16.1.156:19888

    jobhistory是Hadoop自带一个历史服务器,记录Mapreduce历史作业。默认情况下,jobhistory没有启动,可用以下命令启动:

    $ sbin/mr-jobhistory-daemon.sh start historyserver

0x05 测试hadoop(运行wordcount

  1. 建立文件

    $ vi wordcount.txt
    hello you
    hello me
    hello everyone
  2. 在HDFS上建立目录

    $ hadoop fs -mkdir /data/wordcount
    $ hadoop fs –mkdir /output/  

    目录/data/wordcount用来存放Hadoop自带WordCount例子的数据文件,运行这个MapReduce任务结果输出到/output/wordcount目录中。

  3. 上传文件

    $ hadoop fs -put wordcount.txt/data/wordcount/
  4. 执行wordcount程序

    $ hadoop jar /home/hadoop/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.1.jar wordcount /data/wordcount /output/wordcount/
  5. 查看结果

    # hadoop fs -text /output/wordcount/part-r-00000
    everyone  1
    hello  3
    me    1
    you   1 

0x06 搭建中遇到的问题

  1. 在配置环境变量过程可能遇到输入命令ls命令不能识别问题:ls -bash: ls: command not found

    原因:在设置环境变量时,编辑profile文件没有写正确,将export PATH=$JAVA_HOME/bin:$PATH中冒号误写成分号 ,导致在命令行下ls等命令不能够识别。解决方案:export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
  2. 在主机上启动hadoop集群,然后使用jps查看主从机上进程状态,能够看到主机上的resourcemanager和各个从机上的nodemanager,但是过一段时间后,从机上的nodemanager就没有了,主机上的resourcemanager还在。

    原因是防火墙处于开启状态:

    注:nodemanager启动后要通过心跳机制定期与RM通信,否则RM会认为NM死掉,会停止NM服务。
  3. SSH连接慢的问题

    sshd服务中设置了UseDNS yes,当配置的DNS服务器出现无法访问的问题,可能会造成连接该服务器需要等待10到30秒的时间。由于使用UseDNS,sshd服务器会反向解析连接客户端的ip,即使是在局域网中也会。

    当平时连接都是很快,突然变的异常的慢,可能是sshd服务的服务器上配置的DNS失效,例如DNS配置的是外网的,而此时外面故障断开。终极解决方案是不要使用UseDNS,在配置文件/etc/sshd_config(有些linux发行版在/etc/ssh/sshd_config)中找到UseDNS 设置其值为 no,如果前面有#号,需要去掉,重启sshd服务器即可。

    vim /etc/ssh/sshd_config
    UseDNS no
  4. 重新格式化HDFS文件系统后报错

    FATAL org.apache.hadoop.hdfs.server.namenode.NameNode: Exception in namenode join java.io.IOException: There appears to be a gap in the edit log. We expected txid 176531929, but got txid 176533587.

    原因:是因为namenode和datenode数据不一致引起的

    解决办法:删除master slave节点dataname文件夹下的内容,即可解决。缺点是数据不可恢复。

    另一种解决办法:http://blog.csdn.net/amber_amber/article/details/46896719

    参考链接:

    https://yq.aliyun.com/articles/36274

    https://taoistwar.gitbooks.io/spark-operationand-maintenance-management/content/spark_relate_software/hadoop_2x_install.html
  5. WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable

    I assume you're running Hadoop on 64bit CentOS. The reason you saw that warning is the native Hadoop library $HADOOP_HOME/lib/native/libhadoop.so.1.0.0 was actually compiled on 32 bit.

    Anyway, it's just a warning, and won't impact Hadoop's functionalities.

    http://stackoverflow.com/questions/19943766/hadoop-unable-to-load-native-hadoop-library-for-your-platform-warning

    (1)修改hadoop-env.sh

    export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=/usr/local/hadoop/lib/native"
    //这一句好像也可以不加
    export HADOOP_COMMON_LIB_NATIVE_DIR="/usr/local/hadoop/lib/native/"

    (2)简便的解决方法是:

    下载64位的库,解压到hadoop-2.7.0/lib/native/,不在有警告

    下载地址:http://dl.bintray.com/sequenceiq/sequenceiq-bin/

  6. hadoop提交jar包卡住不会往下执行的解决方案,卡在此处:

    INFO mapreduce.Job: Running job: job_1474517485267_0001

    这里我们在集群的yarn-site.xml中添加配置

    <property>
    <name>yarn.nodemanager.resource.memory-mb</name>
    <value>4096</value>
    </property>
    <property>
    <name>yarn.scheduler.minimum-allocation-mb</name>
    <value>2048</value>
    </property>
    <property>
    <name>yarn.nodemanager.vmem-pmem-ratio</name>
    <value>2.1</value>
    </property>

    重新启动集群,运行jar包即可

    但是,并没有解决我的问题,我的问题是Unhealthy Nodes,最后才发现!!可能不添加上述配置原来配置也是对的。

    http://www.voidcn.com/blog/gamer_gyt/article/p-6209546.html

    2017年1月22日, 星期日

hadoop2.5.2安装部署的更多相关文章

  1. 【原创 Hadoop&Spark 动手实践 1】Hadoop2.7.3 安装部署实践

    目录: 第一部分:操作系统准备工作: 1. 安装部署CentOS7.3 1611 2. CentOS7软件安装(net-tools, wget, vim等) 3. 更新CentOS7的Yum源,更新软 ...

  2. hadoop2 Ubuntu 下安装部署

    搭建Hadoop环境( 我以hadoop 2.7.3 为例, 系统为 64bit Ubuntu14.04 ) hadoop 2.7.3 官网下载 , 选择自己要安装的版本.注意每个版本对应两个下载选项 ...

  3. Hadoop2.5.2 安装部署

    0x00 平台环境 OS: CentOS-6.5-x86_64 JDK: jdk-8u111-linux-x64 Hadoop: hadoop-2.5.2 0x01 操作系统基本设置 1.1 网络配置 ...

  4. hadoop入门(3)——hadoop2.0理论基础:安装部署方法

    一.hadoop2.0安装部署流程         1.自动安装部署:Ambari.Minos(小米).Cloudera Manager(收费)         2.使用RPM包安装部署:Apache ...

  5. CentOS下SparkR安装部署:hadoop2.7.3+spark2.0.0+scale2.11.8+hive2.1.0

    注:之前本人写了一篇SparkR的安装部署文章:SparkR安装部署及数据分析实例,当时SparkR项目还没正式入主Spark,需要自己下载SparkR安装包,但现在spark已经支持R接口,so更新 ...

  6. spark2.10安装部署(集成hadoop2.7+)

    这里默认你的hadoop是已经安装好的,master是node1,slaver是node2-3,hdfs启动在node1,yarn启动在node2,如果没安装好hadoop可以看我前面的文章 因为这里 ...

  7. Hadoop2.2集群安装配置-Spark集群安装部署

    配置安装Hadoop2.2.0 部署spark 1.0的流程 一.环境描写叙述 本实验在一台Windows7-64下安装Vmware.在Vmware里安装两虚拟机分别例如以下 主机名spark1(19 ...

  8. Hadoop2.7.3+Hbase-1.2.6+spark2.1.2完全分布式安装部署

    https://www.cnblogs.com/lzxlfly/p/7221890.html 总的下载地址:      http://mirror.bit.edu.cn/apache/ hadoop下 ...

  9. Apache Hadoop2.x 边安装边入门

    完整PDF版本:<Apache Hadoop2.x边安装边入门> 目录 第一部分:Linux环境安装 第一步.配置Vmware NAT网络 一. Vmware网络模式介绍 二. NAT模式 ...

随机推荐

  1. iOS给model排序

    今天有朋友问我怎么给Model排序,我顺便写了一个例子, 以下是代码,很简洁可以直接用. Person *per = [[Person alloc] init]; per.name = @" ...

  2. ajax--2017年1月15日

    听说点六下就能复制了? ajax: 一般处理程序(数据接口):ashx 跨语言传递数据:xml: 结构不清晰 代码量比较大 查找起来比较费事 非面向对象结构 json: 结构清晰 代码量相对较小 面向 ...

  3. Android线程之异步消息处理机制(二)——Message、Handler、MessageQueue和Looper

    异步消息处理机制解析 Android中的异步消息处理主要有四个部分组成,Message.Handler.MessageQueue和Looper. 1.Message Message是在线程之间传递的消 ...

  4. EF LINQ根据某个字段去除重复行

    1.ydc.GameScore.OrderByDescending(o => o.Score).GroupBy(ic => ic.UserPhone).Select(g => g.F ...

  5. iOS开发网络数据之AFNetworking使用 分类: ios技术 2015-04-03 16:35 105人阅读 评论(0) 收藏

    http网络库是集XML解析,Json解析,网络图片下载,plist解析,数据流请求操作,上传,下载,缓存等网络众多功能于一身的强大的类库.最新版本支持session,xctool单元测试.网络获取数 ...

  6. jade的特点

    jade特点 1超强的可读性 2灵活易用的缩进 3块扩展 4代码默认进过编码处理,以增强安全性 5编译及运行时的上下文错误报告 6命令行编译支持 7html5模式(使用 !!!5文档类型) 8可选的内 ...

  7. 安装arm-linux-gcc交叉编译器

    1.开发平台 虚拟机:VMware 12 操作系统:Ubuntu 14.04 2.准备交叉编译工具包(arm-linux-gcc-4.5.1) 编译uboot和linux kernel都需要gnu交叉 ...

  8. MySQL常用命令(参考资料,部分改动)

    一.连接MYSQL 格式: mysql -h主机地址 -u用户名 -p用户密码 . 连接到本机上的MYSQL. 首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root ...

  9. 解析xml的问题未解决

    工作上需要解析xml,目前的逻辑是:解析xml到对象中,然后对象再插入数据库.但这存在内存溢出的风险. 今天做的另外一件事是将循环用到工作上,暂时还没有测试,是否能保证程序的重启.有待观察 ##### ...

  10. oracle存储过程学习---包的概念

    转自:http://www.iteye.com/topic/1111793 一.包的概念   类似于一个容器,能打包相应的Pl/SQL变量.常量.函数.过程.复合数据类型等元素到这个容器内.用来限制  ...