zoukankan      html  css  js  c++  java
  • Hadoop分布式集群配置

    上篇为体验hadoop采用了伪分布模式配置,本篇为继续深究hadoop来大体把握具体实用中的分布式模式。本文实用VMware建了3个虚拟机运行ubuntu。分别为

    namenode whuqin1 192.168.64.143

    datanode whuqin2 192.168.64.144

    datanode whuqin3 192.168.64.145

    1.SSH(Secure Shell)

    Hadoop启动后,Namenode是通过SSH来启动和停止各节点上的各种守护进程的,这就需要在节点之间执行指令的时候是不需要输入密码的方式,故我们需要配置SSH使用无密码公钥认证的方式。

    1.a 每台机器都安装SSH 

    sudo apt-get install ssh

    1.b namenode产生密钥对

    ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

    在/home/whuqin1/.ssh/下生成id_dsa(私钥)、id_dsa.pub(公钥)。

    补:RSA是一种公钥加密算法,RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。DSA也是一种公钥加密算法,安全性和RSA相似。ssh-keygen t dsa或ssh-keygen -t rsa都是可以的。

    将公钥复制到authorized_keys,准备分发

    cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

    1.c 给datanode分发公钥

    scp ~/.ssh/authorized_keys whuqin@192.168.64.144:/home/whuqin/.ssh/
    scp ~/.ssh/authorized_keys whuqin@192.168.64.145:/home/whuqin/.ssh/

    补:SCP(secure Copy),linux文件传送命令,是ssh种的命令,用于在两台机子间传送或获取文件。如上,@后为目的机子ip及目的路径,@前为目的机子上的用户名。

    补:hadoop集群上的每台机子要有一个相同的用户名,用于运行hadoop,为以后hadoop的配置及运行提供方便。至于是不是必须的,本人还不确定。请指教。本人在学习中由于没有使用同一用户名,等最后启动hadoop时出现下情况。要输入whuqin用户在两台机子的密码...


    在datanode上更改authorized_keys权限(保证该文件只对所有者有读写权限)

    chmod 644 ~/.ssh/authorized_keys

    1.d 修改sshd服务,去除密码认证(更改/etc/ssh/sshd_config)

    PasswordAuthentication no
    AuthorizedKeysFile      .ssh/authorized_keys

    2.配置hadoop

    2.a 安装JDK,解压hadoop,配置环境变量(/etc/profile)。

    // /etc/profile配置
    JAVA_HOME=/home/whuqin/Downloads/jdk1.6.0_26
    export JRE_HOME=/home/whuqin/Downloads/jdk1.6.0_26/jre
    export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
    export HADOOP_INSTALL=/home/whuqin/Downloads/hadoop-0.20.2
    export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH:$HADOOP_INSTALL/bin
    //hadoop-env.sh添加java配置
    export JAVA_HOME=/home/whuqin/Downloads/jdk1.6.0_26

    2.b 修改hadoop的master/slaves

    master指定namenode,slaves指定datanodes

    //master
    192.168.64.143
    //slaves
    192.168.64.144
    192.168.64.145

    2.c 修改core-site,hdfs-site.xml,mapred-site.xml,给出典型配置如下:

    <!-- core-site.xml -->
    <configuration>
    	<property>
    		<name>fs.default.name</name>
    		<value>hdfs://192.168.64.143</value>
    		<final>true</final>
    	</property>
    	<property>
    		<name>hadoop.tmp.dir</name>
        	<value>/home/whuqin/hadoopdir</value>
    	</property>
    </configuration>
    
    <!-- hdfs-site.xml -->
    <configuration>
    <!-- 由于使用了hadoop.tmp.dir,一些属性使用了默认值 -->
    </configuration>
    
    <!-- mapred-site.xml -->
    <configuration>
    	<property>
    		<name>mapred.job.tracker</name>
    		<!-- jobtracker机子的ip和端口 -->
        	<value>jobtracker:8021</value>
    		<final>true</final>
    	</property>
    	<property>
    		<name>mapred.tasktracker.map.tasks.maximum</name>
        	<value>3</value>
    		<final>true</final>
    	</property>
    	<property>
    		<name>mapred.tasktracker.reduce.tasks.maximum</name>
        	<value>3</value>
    		<final>true</final>
    	</property>
    		<property>
    		<name>mapred.child.java.opts</name>
        	<value>-Xmx400m</value>
    		<final>true</final>
    	</property>
    </configuration>


    补充:

    core-site.xml部分属性解析:

    fs.default.name, NameNode的URI, hdfs://主机ip:port, 决定了名称节点的RPC服务器地址和端口,默认端口为8020

    hadoop.tmp.dir 用于辅助hdfs-site和mapred-site.xml中一些dir属性的默认设置

    hdfs-site.xml部分属性解析:

    dfs.name.dir,NameNode持久存储名字空间及事务日志的本地文件系统路径。当这个值是一个逗号分割的目录列表时,nametable数据将会被复制到所有目录中做冗余备份。默认值是${hadoop.tmp.dir}/dfs/name

    dfs.data.dir,DataNode存放块数据的本地文件系统路径,逗号分割的列表。 当这个值是逗号分割的目录列表时,数据将被存储在所有目录下,通常分布在不同设备上。默认${hadoop.tmp.dir}/dfs/name

    fs.checkpoint.dir,第二名称节点用来存储检查点的路径,逗号分隔。默认${hadoop.tmp.dir}/dfs/namesecondary

    mapred-site.xml部分属性解析:

    mapred.job.tracker,JobTracker的主机(或者IP)和端口

    mapred.system.dirMap/Reduce框架存储系统文件的HDFS路径,须从服务器和客户端上均可访问。默认${hadoop.tmp.dir}/mapred/system,但不是本地的

    mapred.local.dir,本地文件系统下逗号分割的路径列表,Map/Reduce临时数据存放的地方。多路径有助于利用磁盘i/o。默认${hadoop.tmp.dir}/mapred/local

    mapred.tasktracker.{map|reduce}.tasks.maximum 某一TaskTracker上可运行的最大Map/Reduce任务数,这些任务将同时各自运行。 默认为2(2个map和2个reduce),可依据硬件情况更改。

    在利用haoop.tmp.dir,一些属性的默认值代表的路径如下:

    3.部署hadoop

    保证datanode的jdk安装路径一致、有一个相同用户名的情况下,可以将namenode上的hadoop直接传送到datanode上!

    scp -r /home/whuqin/hadoop-0.20.2 whuqin@192.168.64.144:/home/whuqin/
    scp -r /home/whuqin/hadoop-0.20.2 whuqin@192.168.64.145:/home/whuqin/

    4.启动hadoop

    hadoop的启动都是在namenode上操作的。

    //格式化
    hadoop namenode -format
    //启动namenode/datanode/jobtracker/tasktracker/secondarynode
    start-all.sh
    

    当然也可以根据需要只启动部分进程

    start-mapred.sh/stop-mapred.sh、start-dfs.sh/stop-dfs.sh等。它们都会参考slaves文件,对slave上的datanode,tasktracker进程进行操作。

    补:namenode/datanode是从hdfs角度说的,jobtracker/tasktracker是从map/reduce角度说的。namenode和jobtracker可以不是同一台机子。

    5.测试

    hadoop fs -ls等命令使用下。
    其他相关参考:http://blog.csdn.net/whuqin/article/details/6623534http://www.cnblogs.com/wayne1017/archive/2007/03/20/678724.html《hadoop权威指南》
    望指正!

  • 相关阅读:
    <转>修正版 疯狂代码 写给WEB2.0的站长
    一组MSSQL千万数量级分页存储过程
    flash AS +xml 加载图片(使用MovieClipLoader实现LOADING)
    [转]优化SQL Server的内存占用之执行缓存
    日志记录组件[Log4net]详细介绍(转)
    IBatis.Net如何支持多个数据库 [转帖]
    c#导入导出EXCEL
    弄了个新blogs 欢迎捧场
    ActionSrcipt 资源
    一个鼠标拖出一个圆形的简单demo
  • 原文地址:https://www.cnblogs.com/whuqin/p/4982060.html
Copyright © 2011-2022 走看看