搭建Hadoop分布式集群

news/2024/5/20 4:29:18 标签: hadoop, hdfs, mapreduce

搭建Hadoop分布式集群

【系统配置说明】

1)系统环境:CentOS-7-x86-Minimal
2)集群部署:一主三从(master/slave1/slave2/slave3)
3)Java环境:jdk-7u79-linux-x86
4)Hadoop :hadoop-2.6.2.tar.gz

【配置Linux系统环境】

(1)网络环境配置

    1) 首先配置四台虚拟机的网络环境,设置为静态IP,IP地址分别如下:
    – master:192.168.216.101
    – slave1 :192.168.216.102
    – slave2 :192.168.216.103
    – slave3 :192.168.216.104

    2) 配置网络地址的命令如下:

    sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33

    3) 需要改动的地方如下(以master为例,其余节点配置过程类似):

		BOOTPROTO=static
		DEVICE=ens33
		ONBOOT=yes
		IPADDR=192.168.216.101
		NETMASK=255.255.255.0
		GATEWAY=192.168.216.2
		DNS1=114.114.114.114
		DNS2=8.8.8.8

    4) 重启网络服务
    sudo systemctl restart network
    ifconfig

(2)修改主机名称

    sudo vi /etc/hostname

    将主机名称修改为master(从节点保持一致), reboot之后可见主机名称改变

(3)关闭防火墙并禁止开机自启动

    sudo systemcl stop firewalld
    sudo systemcl disablefirewalld

(4)配置hosts列表

    下边以主机为例,从节点相同

		127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
		::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
		
		192.168.216.101 master
		192.168.216.102 slave1
		192.168.216.103 slave2
		192.168.216.104 slave3                     

    验证是否修改成功
    ping slave1

(5)安装JDK

    1)下载 jdk-7u79-linux-x64.tar.gz
    2)通过xtfp将jdk文件传送到master的/usr/src目录下
    3)安装JDK,步骤如下:
     su
     cd /usr
     mkdir java
     mv ./src/jdk-7u79-linux-x64.tar.gz ./java
     tar -zxvf jdk-7u79-linux-x64.tar.gz
     cd jdk1.7.0_79
     pwd #复制此处显示路径
     vi /etc/profile
     添加环境变量如下
     export JAVA_HOME=/usr/java/jdk1.7.0_79
     export PATH=$PATH:$JAVA_HOME/bin
     保存退出
     source /etc/profile

(6)免密钥登录配置(Master节点)

     在此步骤之前切换到普通用户身份下
     su master
     ssh-keygen -t rsa #在终端生成密钥
     cd /home/master/.ssh #生成的密钥在此目录下,id_rsa为私钥,id_rsa.pub为公钥
     cat id_rsa.pub >> authorized_keys #复制公钥到authorized_keys文件
     chmod 600 authorized_keys #修改密钥文件的权限
     scp authorized_keys master@slave1:/home/master/.ssh/ #将公钥分发给其他三个从节点
     ssh master@slave1 #验证免密钥登录

【Hadoop的配置部署】

【注】:本部分的安装部署是在普通用户的身份下进行的,请先切换;
    Hadoop集群搭建时,每个节点上的配置都相同,所以只要在master节点上操作配置,配置完成之后复制到slave节点上
    就好了。

(1)解压Hadoop安装文件

   cd /home/master/local/src
   tar -zxvf hadoop-2.6.2.tar.gz
   cd hadoop-2.6.2

hadoopenvsh_88">(2)配置环境变量 hadoop-env.sh

    vi ./etc/hadoop/hadoop-env.sh #打开环境配置文件
    找到以下代码
    export JAVA_HOME=${JAVA_HOME}
    将其替换为以下代码
    export JAVA_HOME=/usr/jave/jdk1.7.0_79
    保存退出,Hadoop的环境变量hadoop-env.sh配置成功,此时Hadoop具备了运行时的环境。

(3)配置环境变量 yarn-env.sh

    vi ./etc/hadoop/yarn-env.sh
    找到以下代码
    # export JAVA_HOME=/home/y/libexec/jdk1.6.0/
    去掉注释,修改为以下代码
    export JAVA_HOME=/home/java/jdk1.7.0_79
    保存退出,Hadoop的YARN环境变量配置成功。此时,Hadoopd YARN模块具备了运行时的环境。

(4)配置核心组件 core-site.xml

    这个xml文件是Hadoop集群的核心配置,是关于集群中分布式文件系统的入口地址和分布式文件系统中数据落地到服务器本地磁盘位置的配置。
    vi core-site.xml
    在<configuration></configuration>中插入以下代码

		<!--HDFS文件系统的入口地址信息-->
        <property>
                <name>fs.default.name</name>
                <value>hdfs://master:9000</value>
        </property>

        <property>
                <name>hadoop.tmp.dir</name>
                <value>/home/master/var/hadoop/tmp</value>
        </property>

    至此,hadoop集群的核心配置完成(slave节点的要设置对应的路径)。

hdfssitexml_120">(5)配置文件系统 hdfs-site.xml

    vi hdfs-site.xml
    在<configuration></configuration>中插入以下代码

			<property>
				<name>dfs.name.dir</name>
				<value>/home/master/var/hadoop/dfs/name</value>
			</property>
		
			<property>
				<name>dfs.data.dir</name>
				<value>/home/master/var/hadoop/dfs/data</value>
			</property>
		
			<property>
				<!--配置数据块的副因子(即副本数)为2-->
				<name>dfs.replication</name>
				<value>2</value>
			</property>

			<property>
				<name>dfs.permissions</name>
				<value>false</value>
			</property>

    至此,Hadoop集群的HDFS分布式文件系统数据块副本数配置完成。

(6)配置YARN资源系统 yarn-site.xml

    vi yarn-site.xml
    在<configuration></configuration>中插入以下代码

			<property>
				<name>yarn.resourcemanager.hostname</name>
				<value>master</value>
			</property>
		
			<property>
				<name>yarn.nodemanager.aux-services</name>
				<value>mapreduce_shuffle</value>
			</property>
		
			<property>
				<name>yarn.resourcemanager.address</name>
				<value>${yarn.resourcemanager.hostname}:8032</value>
			</property>
		
			<property>
				<name>yarn.resourcemanager.scheduler.address</name>
				<value>${yarn.resourcemanager.hostname}:8030</value>
			</property>
		
			<property>
				<name>yarn.resourcemanager.resource-tracker.address</name>
				<value>${yarn.resourcemanager.hostname}:8031</value>
			</property>
		
			<property>
				<name>yarn.resourcemanager.admin.address</name>
				<value>${yarn.resourcemanager.hostname}:8033</value>
			</property>
		
			<property>
				<name>yarn.resourcemanager.webapp.address</name>
				<value>${yarn.resourcemanager.hostname}:8088</value>
			</property>
		
			<property>
				<name>yarn.resourcemanager.webapp.https.address</name>
				<value>${yarn.resourcemanager.hostname}:8090</value>
			</property>
			
			<property>
				<name>yarn.scheduler.maximum-allocation-mb</name>
				<value>2048</value>
			</property>
		
			<property>
				<name>yarn.nodemanager.vmem-pmem-ratio</name>
				<value>2.1</value>
			</property>
		
			<property>
				<name>yarn.nodemanager.resource.memory-mb</name>
				<value>2048</value>
			</property>
		
			<property>
				<name>yarn.nodemanager.vmem-check-enabled</name>
				<value>false</value>
			</property>

(7)配置计算框架 mapred-site.xml

    cp mapred-site.xml.template mapred-site.xml
    vi mapred-site.xml
    在<configuration></configuration>中插入以下代码

		<property>
			<name>mapred.job.tracker</name>
			<value>master:49001</value>
		</property>
			
		<!--MapReduce计算框架的资源交给YARN来管理-->
		<property>
			<name>mapreduce.framework.name</name>
			<value>yarn</value>
		</property>
			
		<property>
			<name>mapred.local.dir</name>
			<value>/home/master/var/hadoop/var</value>
		</property>

    1)在master节点配置slaves
      vi ./slaves
      用下面的内容替换salves文件中的内容
      slave1
      slave2
      slave3
    2)复制到从节点

(8)配置 Hadoop 启动的系统环境变量

    主从节点均执行以下操作
    vi ~/.bash_profile
    添加以下内容
    export HADOOP_HOME=/home/master/local/hadoop-2.6.2
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    source ~/.bash_profile

(9)创建数据目录

    主从节点均执行以下操作
    cd ~
    mkdir var
    cd var
    mkdir hadoop
    cd hadoop
    mkdir tmp dfs var
    cd dfs
    mkdir name data

(10)启动Hadoop集群

    Hadoop集群包含两个基本模块:分布式文件系统HDFS和分布式并行计算框架MapReduce。启动集群时,首先要做的就是在master节点上格式化分布式文件系统HDFS。
    1)格式化文件系统
      hdfs namenode -format
    2)启动 Hadoop
      start-all.sh
    3)查看进程是否启动
      jps
      master 节点显示Jps,ResourceManager,SecondaryNameNode,NameNode表示主节点进程启动成功。
      slave节点显示Jps,DataNode,NodeManager表示从节点启动成功。
    4)Web UI查看集群启动是否成功
      浏览器地址栏输入 http://192.168.216.101:50070
在这里插入图片描述

      浏览器地址栏输入 http://192.168.216.101:8088
在这里插入图片描述
    5)运行PI实例检查集群安装是否成功
      cd ~/local/hadoop-2.6.2/share/hadoop/mapreduce/
      hadoop jar hadoop-mapreduce-examples-2.6.2.jar pi 10 10
      结果如下所示即为安装成功
     Job Finished in 79.37 seconds
     Estimated value of Pi is 3.20000000000000000000

至此,Hadoop集群安装启动成功。


http://www.niftyadmin.cn/n/972142.html

相关文章

[设计模式]简单工厂模式(Simple Factory)

Codeusing System;using System.Collections.Generic;using System.Text;namespace Learning.DesignPattern{ //简单工厂模式(Simple Factory) //产品接口ICar public interface ICar { void Drive(); } //具体的产品类实现ICar接口 public class …

[完全娱乐]“知音体标题”大公开

《卖火柴的小女孩》改为《残忍啊&#xff0c;美丽姑娘竟然被火柴烧死的惊天血案》 《红楼梦》改为《包办婚姻&#xff0c;一场家破人亡的人间惨剧》 《泰坦尼克号》改为《冰冷的大西洋&#xff01;带走我的爱人&#xff01;一个富婆与穷画家的旷世畸恋》 《牛郎织女》改为《苦命…

HDFS入门

HDFS入门 1.分布式文件系统HDFS 认识HDFS 当单台服务器的存储容量和计算性能已经无法处理超大文时&#xff0c;分布式文件系统应运而生。为了存储超大文件&#xff0c;可以将文件切分成很多小“块”&#xff0c;将这些块均匀的存储在多台服务器上&#xff0c;然后&#xff0c;…

mysql ---- Host '' is not allowed to connect to this MySQL server

mysql>use mysql mysql>update user set host % where user root; 此时如果提示报错&#xff0c;不用管&#xff0c;继续往下走 select host, user from user; mysql>flush privileges; -- * 这一句是刷新刚才的内容 *一定要刷新&#xff0c;因为操作的是系统授权表…

001--PHP常用函数总结-编/解码篇

编/解码篇 base64_encode ( string $data ) : string 使用 MIME base64 对数据进行编码设计此种编码是为了使二进制数据可以通过非纯 8-bit 的传输层传输&#xff0c;例如电子邮件的主体。 <?php $str This is an encoded string; echo base64_encode($str); ?>VGhpc…

架构设计学习点滴

在O/R Modeling中&#xff0c;在DAL层面&#xff0c;可以把对数据库的操作和数据实体在设计的时候就分开来处理。而数据实体也可以在实现数据实体接口层的基础上面来实现。一个数据实体的类的属性对应了数据库的每一列&#xff0c;而每一个对象实例也就对应了数据表的每一行。但…

ajax传递对象到MVC控制器

1、view层中ajax写法&#xff1a; function Add2() {var model new Object();model.UserName $(#UserName).val();model.Age 20;model.ID 1;//提交$.ajax({contentType: "application/json", //必须有,表示提交的数据类型 type: "post",url: ViewBa…

Laravel Echo| 广播消息实时通知

【开发环境】 PHP:7.4 Laravel:5.8 redis:6.2.2 配置过程 1、修改.env文件 BROADCAST_DRIVERredis CACHE_DRIVERredis QUEUE_CONNECTIONredis 2、安装predis/predis composer require predis/predis 3、取消config/app.php下BroadcastServiceProvider的注释 App\Providers\Br…