`

第一章:小朱笔记hadoop之环境配置以及集群部署-集群环境配置

 
阅读更多

第一章:小朱笔记hadoop之环境配置以及集群部署

第一节.集群环境配置

(1)hadoop部署注意项

(a)hadoop各节点的分布:namenode和jobtracker部署:namenode与jobtracker分离.tasktracker与datanode配对.
(b)Trash:  hadoop回收站功能默认是禁止的,删除文件,就是直接删除了,所以要记得配置好trash。当rm后,它会move到当前文件夹下的.Trash目录下,误删文件后,可以恢复文件。参考配置属性fs.trash.interval。
(c)map和reduce任务的JVM选项:mapred.child.java.opts配置map和reduce子进程的JVM属性,如果内存充裕,可以改为 -Xmx2400m.
(d)Tasktracker的map和reducer数量配置: 属性mapred.tasktracker.map.tasks.maximum配置这个tasktracker同时可以最多跑多少个map task,要根据tracker的内存和磁盘情况规划。还有属性mapred.tasktracker.reduce.tasks.maximum配置这个tasktracker同时可以最多跑多少个reduce task.同理也是要根据tracker的内存和磁盘情况规划。例如8核的机器,8个map和8个reducer。map中间结果开启压缩操作(尤其是snappy和LZO)的时候,cpu的负载会比较高,map和reducer的数量可以根据自己的业务情况灵活调节。
(e)缓冲区大小:io.file.buffer.size默认是4KB,作为hadoop缓冲区,用于hadoop读hdfs的文件和写hdfs的文件,还有map的输出都用到了这个缓冲区容量,对于现在的硬件很保守,可以设置为128k(131072),甚至是1M(太大了map和reduce任务可能会内存溢出)。

 

(2)hadoop配置文件说明

写道
dfs.hosts:记录即将作为datanode加入集群的机器列表
mapred.hosts :记录即将作为tasktracker加入集群的机器列表
dfs.hosts.exclude mapred.hosts.exclude: 分别包含待移除的机器列表
master:记录运行辅助namenode的机器列表
slave:记录运行datanode和tasktracker的机器列表
hadoop-env.sh:记录脚本要用的环境变量,以运行hadoop
core-site.xml:hadoop core的配置项,例如hdfs和mapreduce常用的i/o设置等
hdfs-site.xml: hadoop守护进程的配置项,包括namenode、辅助namenode和datanode等
mapred-site.xml: mapreduce守护进程的配置项,包括jobtracker和tasktracker
hadoop-metrics.properties: 控制metrics在hadoop上如何发布的属性
log4j.properties: 系统日志文件、namenode审计日志、tasktracker子进程的任务日志的属性

 

(3)hadoop集群配置步骤

   采用4台安装Linux环境的机器来构建一个小规模的分布式集群,hadoop采用官网hadoop-1.0.3

 

   第一步:4台机器建立统一的用户hadoop 注意:一定要建立相同的用户名,ssh需要无密码登录

 

   第二步:安装jdk

    下载jdk,安装并配置环境变量
    修改/etc/profile:

#jdk配置
JAVA_HOME=/opt/java
JRE_HOME=/opt/java/jre
CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$HOME/bin
export JAVA_HOME JRE_HOME CLASSPATH PATH

            保存,并执行source /etc/profile

 

   第三步:配置host

/etc/hosts 这个文件是用来配置主机将用的DNS服务器信息,是记载LAN内接续的各主机的对应[HostName和IP]用的。当用户在进行网络连接时,首先查找该文件,寻找对应主机名(或域名)对应的IP地址。

我们要测试两台机器之间知否连通,一般用"ping 机器的IP",如果想用"ping 机器的主机名"发现找不见该名称的机器,解决的办法就是修改"/etc/hosts"这个文件,通过把LAN内的各主机的IP地址和HostName的一一对应写入这个文件的时候,就可以解决问题。
修改/etc/hosts ,保证100、101、102、103 四台机器 hosts文件相同
192.168.1.100    master 
192.168.1.101    slaveA 
192.168.1.102    slaveB
192.168.1.103    slaveC

 

   第四步:SSH无密码验证配置

      Hadoop运行过程中需要管理远端Hadoop守护进程,在Hadoop启动以后,NameNode是通过SSH(Secure Shell)来启动和停止各个DataNode上的各种守护进程的。这就必须在节点之间执行指令的时候是不需要输入密码的形式,故我们需要配置SSH运用无密码公钥认证的形式,这样NameNode使用SSH无密码登录并启动DataName进程,同样原理,DataNode上也能使用SSH无密码登录到NameNode。如果只是通过master控制集群的话,就不必配置slave访问master的无密码登录了。
SSH无密码原理
  Master(NameNode | JobTracker)作为客户端,要实现无密码公钥认证,连接到服务器Salve(DataNode | Tasktracker)上时,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的Slave上。当Master通过SSH连接Salve时,Salve就会生成一个随机数并用Master的公钥对随机数进行加密,并发送给Master。Master收到加密数之后再用私钥解密,并将解密数回传给Slave,Slave确认解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。重要过程是将客户端Master复制到Slave上。
master机器:

写道
hadoop@master:ssh-keygen -t rsa
hadoop@master:ssh-add ~/.ssh/id_rsa
hadoop@master:cp ~/.ssh/id_rsa.pub authorized_keys
hadoop@master:cd .ssh
hadoop@master:~/.ssh# chmod 600 authorized_keys

 
slave机器:

写道
hadoop@slaveA:mkdir .ssh
hadoop@slaveB:mkdir .ssh
hadoop@slaveC:mkdir .ssh

 
master机器:

 

写道
hadoop@master:scp ~/.ssh/authorized_keys slaveA:~/.ssh/
hadoop@master:scp ~/.ssh/authorized_keys slaveB:~/.ssh/
hadoop@master:scp ~/.ssh/authorized_keys slaveC:~/.ssh/

 

   第五步:配置hadoop环境

(1)修改/etc/profile:
 

#hadoop配置
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin 

 
(2)配置hadoop-env.sh

 

 

# set java environment
export JAVA_HOME=/opt/java

 

(3)配置core-site.xml文件
 

       <property> 
                <name>fs.default.name</name> 
                <value>hdfs://master:9000</value> 
        <description> 
            NameNode的URI路径,格式:hdfs://主机名:端口/ 
        </description> 
        </property> 
        <property> 
                <name>fs.checkpoint.period</name> 
                <value>3600</value> 
        <description> 
            进行checkpoint的周期时间间隔,单位:秒 
        </description> 
        </property> 
        <property> 
                <name>fs.checkpoint.size</name> 
                <value>67108864</value> 
        <description> 
            日志文件达到这个上限值时,将进行一次强制checkpoint操作,单位:byte   
        </description> 
        </property> 
        <property> 
                <name>hadoop.tmp.dir</name> 
                <value>/opt/hadoop/var/tmp</value> 
        <description> 
            Hadoop的默认临时路径,这个最好配置,如果在新增节点或者其他情况下莫名其妙的DataNode启动不了,
        就删除此文件中的tmp目录即可。不过如果删除了NameNode机器的此目录,那么就需要重新执行NameNode格式化的命令。
        /hadoopRun/tmp这里给的路径不需要创建会自动生成。 
        </description> 
        </property> 
    <property>
      <name>fs.trash.interval</name>
      <value>1</value>
      <description>Number of minutes between trash checkpoints.回收站一定要配置的,不然后果很可怕。
      If zero, the trash feature is disabled.
      </description>
    </property>

 

(4)配置hdfs-site.xml文件

 

     <property>
      <name>dfs.replication</name>
      <value>3</value>
    </property>
    <property>
      <name>dfs.permissions</name>
      <value>false</value>
    </property>
    <property>
      <name>dfs.name.dir</name>
      <value>/opt/hadoop/var/hdfs/name</value>
    </property>
    <property>
      <name>dfs.data.dir</name>
      <value>/opt/hadoop/var/hdfs/data</value>
    </property>
    <property> 
       <name>dfs.hosts.exclude</name> 
       <value>/opt/hadoop/conf/excludes</value> 
       <description>Names a file that contains a list of hosts that are  
       not permitted to connect to the namenode.  The full pathname of the  
       file must be specified.  If the value is empty, no hosts are  
       excluded.</description>
    </property>

 

   (5)配置mapred-site.xml文件

        <property> 
        <name>mapred.job.tracker</name> 
                <value>master:9001</value> 
        </property> 
        <property> 
                <name>mapred.local.dir</name> 
                <value>/opt/hadoop/var/mapred</value> 
        </property>

 

  (6)修改conf/masters
   

写道
master

 
  (7)修改conf/slaves
  

slavesA
slavesB
slavesC

 

 

   第六步:分发hadoop到所有节点

     将配置好的hadoop拷贝到所有的datanode
 

写道
scp -r /opt/hadoop/ slavesA:/opt/
scp -r /opt/hadoop/ slavesB:/opt/
scp -r /opt/hadoop/ slavesC:/opt/

 

 

   第七步:格式化hdfs文件系统的namenode

   

写道
hadoop namenode -format

 

生产环境都是根据自己的数据类型、集群配置进行定制,这里只是一个简单的demo配置。
生产环境辅助配置以及一些注意事项:
1、配置分发脚本file-dispatcher.sh(简单的分发配置脚本,稍后我会分享供同学们下载)
a、将该脚本放置到hadoop/bin 目录下
b、建立hadoop/conf/configs文件,列入需要分发的配置文件名称。
运行脚本则会自动分发配置到slaves主机的hadoop/conf目录

 

 

 

 

 

 

分享到:
评论
2 楼 slipper-jay 2014-01-22  
ssh无密码登陆失败
Slave执行$chmod 700 ~/.ssh 登陆成功

参考来源:
可能遇到的问题:

1.进行ssh登录时,出现:”Agent admitted failure to sign using the key“ .

   执行: $ssh-add

   强行将私钥 加进来。

2.如果无任何错误提示,可以输密码登录,但就是不能无密码登录,在被连接的主机上(如A向B发起ssh连接,则在B上)执行以下几步:

  $chmod o-w ~/

   $chmod 700 ~/.ssh

   $chmod 600 ~/.ssh/authorized_keys

3.如果执行了第2步,还是不能无密码登录,再试试下面几个

  $ps -Af | grep agent

        检查ssh代理是否开启,如果有开启的话,kill掉该代理,然后执行下面,重新打开一个ssh代理,如果没有开启,直接执行下面:

       $ssh-agent

  还是不行的话,执行下面,重启一下ssh服务

       $sudo service sshd restart

4. 执行ssh-add时提示“Could not open a connection to your authenticationh agent”而失败

执行: ssh-agent bash
1 楼 slipper-jay 2014-01-15  
文思敏捷,才华横溢  老大!  

相关推荐

    云计算Hadoop:快速部署Hadoop集群

    资源名称:云计算Hadoop:快速部署Hadoop集群内容简介: 近来云计算越来越热门了,云计算已经被看作IT业的新趋势。云计算可以粗略地定义为使用自己环境之外的某一服务提供的可伸缩计算资源,并按使用量付费。可以...

    hadoop2x-eclipse-plugin-master

    5. **资源管理**:对于复杂的Hadoop集群环境,插件可以帮助开发者管理资源配置,如HDFS的文件操作,YARN的资源调度设置等。 6. **版本兼容性**:Hadoop2x-eclipse-plugin-master主要面向Hadoop 2.x版本,确保与这一...

    hadoop-common-2.6.0-bin-master

    总结起来,"hadoop-common-2.6.0-bin-master"是一个包含Hadoop Common所有二进制文件的主目录,对于在Windows 10环境下运行Hadoop,特别是winutils.exe和hadoop.dll的正确配置至关重要。理解这些组件的作用以及如何...

    hadoop-common-2.7.5-bin-master

    【标题】"hadoop-common-2.7.5-bin-master" 指的是Apache Hadoop项目中的一个组件——Hadoop Common的2.7.5版本的二进制发行版。这个版本是专为Eclipse开发环境设计的,包含了运行Hadoop在Windows系统上的必要文件。...

    Hadoop单机与集群部署笔记.docx

    - **配置集群环境:** - 编辑`/usr/local/hadoop/etc/hadoop`下的配置文件: - `slaves`:列出所有Slave节点的主机名。 - `core-site.xml`:配置HDFS相关的参数。 - `hdfs-site.xml`:设置`dfs.replication`等...

    hadoop-common-2.2.0-bin-master(包含windows端开发Hadoop2.2需要的winutils.exe)

    Hadoop是Apache软件基金会开发的一个开源分布式计算框架,它的核心组件包括HDFS(Hadoop Distributed ...同时,理解Hadoop的架构和原理,以及如何配置和管理Hadoop集群,也是成为一名合格的Hadoop开发人员的必备技能。

    flink-shaded-hadoop-2-uber-2.6.5-10.0.zip

    在这个案例中,Uber JAR包含了Flink自身所需的依赖以及Hadoop 2.6.5的相关库,使得Flink可以在不需要额外配置Hadoop环境的情况下直接运行。这样做不仅简化了部署流程,还避免了因依赖冲突可能导致的问题。 Flink与...

    hadoop-common-2.7.1-bin-master.zip

    总结来说,"hadoop-common-2.7.1-bin-master.zip"不仅包含了使Hadoop能在Windows环境下运行的必要组件,更是一个全面的工具集,涵盖了Hadoop运行所需的各种基础服务和功能。理解和掌握这些知识点,对于在实际项目中...

    hadoop-common-2.6.0-bin-master.zip

    在本文中,我们将深入探讨Hadoop Common 2.6.0版本,以及它在构建本地master环境中的重要性。 一、Hadoop Common的核心组件 1. 文件系统接口(FileSystem API):Hadoop Common提供了与各种不同类型的文件系统交互...

    hadoop-common-2.7.3-bin-master包含hadoop.dll、winutils.exe

    Hadoop 2.7.3是Hadoop的一个版本,其中包含了`hadoop-common-2.7.3-bin`这个模块,这个模块是Hadoop的基本组件集合,提供了在不同操作系统上运行Hadoop所需的各种工具和库。 标题中提到的`hadoop.dll`和`winutils....

    hadoop-common-2.7.1-bin-maste

    在"**hadoop-common-2.7.1-bin-maste**"压缩包中,主要包含以下文件和目录: - bin:存放可执行脚本,如hadoop命令,用于执行Hadoop相关的操作。 - sbin:存放系统级脚本,如start-dfs.sh、stop-dfs.sh,用于启动和...

    hadoop-common-2.7.1-bin-master-master.zip

    本篇将围绕"Hadoop-common-2.7.1-bin-master-master.zip"这一压缩包,详细阐述其内容、作用以及在实际操作中的应用场景。 Hadoop Common 2.7.1是Hadoop生态系统中的核心组件之一,主要提供了Hadoop系统运行所需的...

    hadoop-common-2.2.0-bin-master

    在“hadoop-common-2.2.0-bin-master”压缩包中,readme.txt文件通常包含了安装、配置和使用Hadoop Common的基本指南。对于初学者来说,这是一个宝贵的资源,可以帮助快速理解和启动Hadoop环境。 五、Hadoop Common...

    hadoop-3.3.1 windows + apache-hadoop-3.1.0-winutils-master.zip

    2. **配置环境变量**:打开系统环境变量设置,添加新的系统变量`HADOOP_HOME`,指向你的Hadoop安装目录(如`C:\Hadoop\hadoop-3.3.1`)。同时,将`PATH`变量中添加`%HADOOP_HOME%\bin`和`%HADOOP_HOME%\sbin`,以便...

    利用ansible 自动 安装Hadoop 集群

    在IT行业中,自动化部署是提升效率的关键之一,尤其是在大规模集群管理中。Ansible作为一个流行的开源自动化工具,被广泛用于配置管理、应用部署和任务执行。本篇将详细讲解如何利用Ansible自动安装Hadoop集群。 ...

    eclipse远程连接hadoop集群 hadoop-eclipse-plugin-2.6.0.jar

    windows下 eclipse操作hadoop集群 插件

    大数据处理框架:Hadoop:Hadoop集群部署与管理.docx

    大数据处理框架:Hadoop:Hadoop集群部署与管理.docx

    实验报告二:Hadoop集群部署前期准备-实验报告模板.docx

    主要内容包括但不限于添加Hadoop用户及其权限管理、配置网络环境、禁用可能影响集群稳定性的服务以及安装必要的软件(如JDK、MariaDB)。 #### 二、实验内容详解 ##### 1. 添加Hadoop用户并授权 - **创建Hadoop...

    HadoopHA高可用集群配置 core-site.xml

    ### Hadoop HA高可用集群配置核心解析:core...在实际部署Hadoop HA集群的过程中,根据具体的环境需求调整这些配置是非常必要的。正确配置这些参数不仅可以提升集群的性能,还可以有效避免因配置不当而导致的各种问题。

Global site tag (gtag.js) - Google Analytics