zoukankan      html  css  js  c++  java
  • 2.Hadoop集群搭建之Hadoop(包含HDFS和Yarn)安装

    前期准备

    • 下载JDK 6.0以上版本
    • 下载Hadoop 2.4.1

    1. 安装JDK

    因为Hadoop是Java开发的,所以需要安装JDK,建议JDK 6.0以上。

    • 解压JDK

    tar -zxvf JDK压缩包名 -C 解压缩路径
    例:tar -zxvf jdk-7u55-linux-i586.tar.gz -C /home/hadoop/app
    
    
    • 配置环境变量

    sudo vim /etc/profile
    #根据上一步解压的路径,追加以下语句
    export JAVA_HOME=/home/hadoop/app/jdk1.7.0_65 ###JDK目录
    export PATH=$PATH:$JAVA_HOME/bin
    	
    #使配置生效
    source /etc/profile
    

    2. 安装Hadoop

    • 解压Hadoop安装包

    同JDK解压方式

    • 修改六个配置文件

    注:hadoop2.x的配置文件全部在$HADOOP_HOME/etc/hadoop目录下

    1. 修改Hadoop环境变量配置文件hadoop-env.sh
    vim hadoop-env.sh
    #修改原文件中JAVA_HOME=${JAVA_HOME}为
    export JAVA_HOME=/home/hadoop/app/jdk1.7.0_65
    
    2. 修改核心(公共)配置文件core-site.xml
    <configuration>
    		<!-- 指定HDFS的nameservice为master-->
    			<property>
    				<name>fs.defaultFS</name>
    				<value>hdfs://master:9000</value>
    			</property>
    					
    					
    		<!-- 指定缓存大小 -->
    			<property>
           			<name>io.file.buffer.size</name>
           			<value>131072</value>
       			</property>
       					 
       					 
    		<!-- 指定hadoop临时目录 -->
    			<property>
    				<name>hadoop.tmp.dir</name>
    				<value>/home/hadoop/app/hadoop-2.4.1/data</value>
    			</property>
    		<!-- hdfs-site.xml中的dfs.ha.automatic-failover.enabled为true时,此项必须配置,否则启动zkfc时会报错 -->
    			<property>
                    <name>ha.zookeeper.quorum</name>
                    <value>192.168.1.201:2181,192.168.1.202:2181,192.168.1.203:2181</value>
                </property>
    </configuration>
    
    3. 修改HDFS相关配置文件hdfs-site.xml
    <configuration>
    
        <!-- 指定HDFS副本的数量,一般为3份 -->
    		<property>
    			<name>dfs.replication</name>
    			<value>3</value>
            </property>
    
        <!--指定HDFS的nameservice为master,需要和core-site.xml中的保持一致 -->
    		<property>
    			<name>dfs.nameservices</name>
    			<value>master</value>
    		</property>
    		
    	<!-- master下面有两个NameNode,分别是nn1,nn2 -->
    		<property>
    		    <name>dfs.ha.namenodes.master</name>
    		    <value>nn1,nn2</value>
    		</property>
    		
    	<!-- nn1的RPC通信地址 -->
    		<property>
    			<name>dfs.namenode.rpc-address.master.nn1</name>
    			<value>192.168.1.201:9000</value>
    		</property>
    
    	<!-- nn1的http通信地址 -->
    		<property>
    			<name>dfs.namenode.http-address.master.nn1</name>
    			<value>192.168.1.201:50070</value>
    		</property>
    
        <!-- nn2的RPC通信地址 -->
    		<property>
    		    <name>dfs.namenode.rpc-address.master.nn2</name>
    		    <value>192.168.1.202:9000</value>
    		</property>
    		
    	<!-- nn2的http通信地址 -->
    		<property>
    			<name>dfs.namenode.http-address.master.nn2</name>
    			<value>192.168.1.202:50070</value>
    		</property>
    	
    	<!-- 指定NameNode的元数据在JournalNode上的存放位置。/ns1表示这个目录是给ns1这个nameservices用的-->
    		<property>
    			<name>dfs.namenode.shared.edits.dir</name>
    			<value>qjournal://192.168.1.201:8485;192.168.1.202:8485;192.168.1.203:8485/ns1</value>
    		</property>
    	
    	<!-- 指定JournalNode在本地磁盘存放数据的位置 -->
    		<property>
    			<name>dfs.journalnode.edits.dir</name>
    			<value>/home/hadoop/app/hadoop-2.4.1/journal</value>
    		</property>
    	
    	<!-- 开启NameNode失败自动切换 配置是否启动故障恢复,配置此项为true的时候,core-site.xml必须配置ha.zookeeper.quorum,否则会报错-->
    		<property>
    			<name>dfs.ha.automatic-failover.enabled</name>
    			<value>true</value>
    		</property>
    	
        <!-- 配置失败自动切换实现方式 -->
    		<property>
    			<name>dfs.client.failover.proxy.provider.ns1</name>
    			<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    		</property>
    		
    	<!-- 配置隔离机制方法,多个机制用换行分割,即每个机制占用一行-->
    		<property>
    			<name>dfs.ha.fencing.methods</name>
    				<value>
    					sshfence
    					shell(/bin/true)
    				</value>
    		</property>
    		
    	<!-- 使用sshfence隔离机制(解决脑裂)时需要ssh免登陆 -->
    		<property>
    			<name>dfs.ha.fencing.ssh.private-key-files</name>
    			<value>/home/hadoop/.ssh/id_rsa</value>
    		</property>
    		
    	<!-- 配置sshfence隔离机制超时时间 -->
    		<property>
    			<name>dfs.ha.fencing.ssh.connect-timeout</name>
    			<value>30000</value>
    		</property>
    </configuration>
    
    4. 修改mapreduce相关配置文件mapred-site.xml(将原mapred-site.xml.template使用mv命令重命名为mapred-site.xml
    <!-- 指定mapreduce运行在yarn上 -->
    	<property>
    		<name>mapreduce.framework.name</name>
    		<value>yarn</value>
        </property>
    
    5. 修改Yarn相关配置文件yarn-site.xml
    <configuration>
    	<!-- 指定ResourceManager地址 -->
    		<property>
    		    <name>yarn.resourcemanager.hostname</name>
    		    <value>master</value>
    		</property>
    		
    	<!-- 指定nodemanager启动时加载server的方式为shuffle server -->
    		<property>
    	        <name>yarn.nodemanager.aux-services</name>
    			<value>mapreduce_shuffle</value>
    		</property>
    </configuration>
    
    6. 修改slaves文件

    将文件内容修改为

    slave1
    slave2
    
    • 为方便以后执行Hadoop命令,将Hadoop添加到环境变量中

    sudo vim /etc/proflie
    #根据自己的安装路径,在文件中追加
    #Hadoop启动项均存放HADOOP_HOME/sbin目录下
    	export JAVA_HOME=/home/hadoop/app/jdk-7u_65-i585
    	export HADOOP_HOME=/home/hadoop/app/hadoop-2.4.1
    	export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    	
    

    要使配置文件生效使用命令source /etc/profile

    • 格式化NameNode,直接使用命令hdfs namenode -format

    • 启动Hadoop

    首先,用命令start-dfs.sh启动HDFS,然后start-yarn.sh启动Yarn。

    在启动过程中,Hadoop会根据配置文件去启动对应机器上的相关进程,这就需要进行远程登录,所以在以上过程中会数次要求输入用户登录密码,为免去这一麻烦可使用下一步骤配置ssh免密登录。

    • 配置SSH免密登录

    假设要从主机A登录到主机B上:(以下步骤前提条件默认已经开启ssh服务sudo service sshd restart

    1. 修改主机A、B的hosts文件,将彼此IP和主机名的映射关系追加到各自的/etc/hosts文件中。
    2. 在主机A上生成密钥对
      使用命令ssh-keygen -t rsa生成密钥对,生成过程中都使用默认选项,即遇到选项回车即可,无需进行操作。(默认生成的密钥对存放在主目录下的.ssh文件夹中,为隐藏文件夹,使用命令ll -a即可显示。)
    3. .ssh文件夹中,后缀名为.pub的文件为生成的公钥。使用远程拷贝命令将公钥文件拷贝到主机B上。
    scp 拷贝文件名 主机名:目标路径
         
    ##示例
    
    scp id_rsa.pub slave1:/home/hadoop
         
    
    1. 在主机B上,将主机A的公钥追加到~/.ssh/authorized_keys文件中(可使用命令cat ../id_rsa.pub >> ./authorized_keys)。

      若主机B上没有此文件,则可自行创建(使用命令touch authorized_keys),然后必须将该文件的权限修改为600(可使用命令chmod 600 authorized_keys),否则系统无法识别。

    2. 验证:在主机A上,使用命令ssh 主机B的主机名,若没有提示输入密码登录成功则SSH无密登陆配置成功。

    • 将配置好的Hadoop拷贝到其他节点

     scp -r hadoop-2.4.1 slave1:/home/hadoop/app
     scp -r hadoop-2.4.1 slave2:/home/hadoop/app
     
    
  • 相关阅读:
    cnblog项目--20190309
    django js引入失效问题
    Python老男孩 day16 函数(六) 匿名函数
    Python老男孩 day16 函数(五) 函数的作用域
    Python老男孩 day15 函数(四) 递归
    Python老男孩 day15 函数(三) 前向引用之'函数即变量'
    Python老男孩 day15 函数(二) 局部变量与全局变量
    Python老男孩 day14 函数(一)
    Python老男孩 day14 字符串格式化
    Python老男孩 day14 集合
  • 原文地址:https://www.cnblogs.com/liminghuang/p/9074319.html
Copyright © 2011-2022 走看看