精华内容
下载资源
问答
  • hadoop集群搭建
    千次阅读
    2022-05-05 17:26:35

    环境说明

    操作系统:CentOS 8 x86_64
    Hadoop版本:2.10.1
    节点数:3
    服务器规划:

    node1node2node3
    199.188.166.111199.188.166.112199.188.166.113
    NameNode(NN)Secondary NameNode
    ResourceManager(RM)
    DataNode(DN)DataNode(DN)DataNode(DN)
    NodeManager(NM)NodeManager(NM)NodeManager(NM)

    虚拟机安装

    使用VMware安装,傻瓜式的,这里就不再赘述了
    注:本次Hadoop集群搭建是使用VMware虚拟机进行的,首先创建一个虚拟机,因为只是用来搭建hadoop环境,创建虚机时就用hadoop用户,实际也是用hadoop用户来进行搭建(不建议使用root用户,虽然方便,但和不贴合实际项目)。

    基础环境准备

    对安装好的虚拟机进行基础环境的配置,主要是JDK的安装和防火墙的关闭

    JDK安装配置

    JDK版本:1.8.0_181
    安装路径:/app/java/jdk1.8.0_181 (从官网下载tar.gz包直接解压即可为方便管理,所有app均安装在了/app目录下)
    配置环境变量:为了方便,直接配置了全局,对所有用户生效

    vi /etc/profile
    # 添加以下内容
    export JAVA_HOME=/app/java/jdk1.8.0_181
    export PATH=$JAVA_HOME/bin:$PATH
    # 生效环境变量
    source /etc/profile
    

    配置完成后,查看是否已经生效,如图:
    在这里插入图片描述

    关闭防火墙

    为防止本机无法访问集群资源,需要关闭防火墙,命令为:systemctl stop firewalld.service
    关闭后可查看防火墙状态是否已经正确关闭
    在这里插入图片描述

    虚拟机克隆

    在创建好的虚拟机右键,管理—>克隆,根据提示,再创建两台虚拟机,根据自己的习惯重新命下名
    在这里插入图片描述

    虚拟机配置

    修改主机名

    为更贴近实际,我们修改下主机名,命令如下,将三台机器分别进行命名:

    # 第一台虚机
    hostnamectl set-hostname node1
    # 第二台虚机
    hostnamectl set-hostname node2
    # 第三台虚机
    hostnamectl set-hostname node3
    

    配置地址映射

    为方便后续管理及服务器之间的通信,需要进行IP地址映射配置,三台服务器同样操作

    vi /etc/hosts
    # 增加如下内容
    199.188.166.111 node1
    199.188.166.112 node2
    199.188.166.113 node3
    

    集群免密登录

    因为三台服务器组成了一个集群,如果不配置免密访问,那么在集群启动时会N多次提示要输入密码,操作如下(三台服务器均如此操作):
    生成密钥:

    ssh-keygen -t rsa
    

    在这里插入图片描述

    复制密钥到其他服务器:

    ssh-copy-id -i ~/.ssh/id_rsa.pub node1
    

    在这里插入图片描述

    Hadoop安装与配置

    先在node1节点进行安装配置,然后直接分发到其他服务器即可

    Hadoop安装

    Hadoop的安装其实就是解压并修改配置文件的过程

    1. 解压安装包:tar -zxvf hadoop-2.10.1.tar.gz
    2. 将解压后的hadoop目录下的bin加入到用户PATH环境变量中,主要是为了后续操作方便:export PATH=/app/hadoop-2.10.1/bin:$PATH

    Hadoop配置

    Hadoop需要修改的配置文件均在/app/hadoop-2.10.1/etc/hadoop目录下,根据集群规划进行相应修改操作,各文件的配置项有很多,此示例仅配置了常用的几项

    1. 修改hadoop_env.sh:配置Hadoop运行所需的环境变量,此集群主要是指定JAVA_HOME
    # The java implementation to use.
    export JAVA_HOME=/app/java/jdk1.8.0_181
    
    1. 修改core-site.xml:Hadoop核心全局配置文件,可在其他配置文件中引用
    <configuration>
            <property>
                    <name>fs.defaultFS</name>
                    <value>hdfs://node1:9000</value>
            </property>
    
            <property>
                    <name>io.file.buffer.size</name>
                    <value>131072</value>
            </property>
    
            <property>
                    <name>hadoop.tmp.dir</name>
                    <value>file:/app/hadoop-2.10.1/tmp</value>
            </property>
    </configuration>
    
    1. 修改hdfs-site.xml:HDFS配置文件,继承core-site.xml配置文件
    <configuration>
            <property>
                    <name>dfs.namenode.name.dir</name>
                    <value>file:/app/hadoop-2.10.1/dfs/name</value>
            </property>
    
            <property>
                    <name>dfs.datanode.data.dir</name>
                    <value>file:/app/hadoop-2.10.1/dfs/data</value>
            </property>
    
            <property>
                    <name>dfs.replication</name>
                    <value>3</value>
            </property>
            <property>
                    <name>dfs.http.address</name>
                    <value>node1:50070</value>
            </property>
            <property>
                    <name>dfs.namenode.secondary.http-address</name>
                    <value>node2:50071</value>
            </property>
    </configuration>
    
    1. 修改mapred-site.xml:MapReduce配置文件,继承core-site.xml配置文件
    <configuration>
            <property>
                    <name>mapreduce.framework.name</name>
                    <value>yarn</value>
            </property>
    </configuration>
    
    1. 修改yarn-site.xml:Yarn配置文件,继承core-site.xml配置文件
    <configuration>
    
    <!-- Site specific YARN configuration properties -->
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
        <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>node1</value>
        </property>
    </configuration>
    
    1. 修改slaves,在slaves文件里所列出的所有结点上启动一个tasktracker
    node1
    node2
    node3
    
    1. 修改masters,masters设置的是运行secondary namenode的结点,并且可以在masters里面设置多个结点来运行secondary namenode
    node2
    

    集群文件分发

    通过命令,将配置好的hadoop分发到其他服务器

    # 分发到服务器node2
    scp -r hadoop-2.10.1 node2:/app
    # 分发到服务器node3
    scp -r hadoop-2.10.1 node3:/app
    

    服务启动与验证

    Hadoop服务启动

    登录主节点node1,按照如下命令启动:

    cd /app/hadoop-2.10.1/sbin
    ./start-hdfs.sh
    ./start-yarn.sh
    

    Hadoop服务验证

    可通过jps命令查看服务是否存在
    主节点服务:
    在这里插入图片描述

    从节点服务:
    在这里插入图片描述

    登录web查看是否正常:
    http://199.188.166.111:50070/
    在这里插入图片描述

    http://199.188.166.111:8088/
    在这里插入图片描述

    收官

    至此,集群搭建完成!

    注:关于配置的其他说明,请参考其他文章~

    更多相关内容
  • 本文通过12个步骤实现Hadoop集群的完全分布式搭建 刚刚入门,如有错误请指出 文章目录1. 服务器准备2. 网络环境准备3. 服务器系统设置4. JDK环境安装5. Hadoop安装6. Hadoop文件配置:hadoop-env.sh(hadoop运行环境...
  • Linux 操作系统安装环境下Hadoop集群搭建详细简明教程
  • Hadoop集群搭建及Hive的安装与使用
  • 在VMware上部署hadoop集群,首先需要安装jdk。 掌握在完全分布的整合平台中快捷的进行JDK的安装 (1)完全分布模式中JDK的安装和验证; (2)在集群中所有主机上完成JDK的安装; 所有主机上JDK相关命令能够正常使用
  • Hadoop集群搭建总结

    2016-10-21 11:06:24
    重点描述hadoop2.0的大数据处理环境搭建过程
  • 基于haodoop 集群搭建hbase集群。(2台机器的情况。)
  • Hadoop 集群搭建

    千次阅读 2022-02-27 00:01:42
    hadoop100 2) 设置hostname 修改 /etc/hostname 文件修改 3) 设置hostname 与 ip 地址的映射 映射的配置文件保存在 /etc/hosts 中,网络中的每一台机器都是独立保存这份配置文件的。 4) yum 安装额外的rpm包:...

    一、模板虚拟机配置

    1) 设置ip地址
    设置ip是保证ip地址与主机名保持一致,如:192.168.10.100 -> hadoop100
    2) 设置hostname
    修改 /etc/hostname 文件修改
    3) 设置hostname 与 ip 地址的映射
    映射的配置文件保存在 /etc/hosts 中,网络中的每一台机器都是独立保存这份配置文件的。
    4) yum 安装额外的rpm包:yum install -y epel-release (-y表示不需要对逐个包yes) 如果安装的是 最小版的Linux 还需要额外 安装 net-tools 和 vim
    5) 关闭防火墙、关闭防火墙开机自动启动:(保证集群之间的稳定连接)
    systemctl stop firewalld
    systemctl disable firewalld.service在这里插入图片描述
    6)添加一个普通用户:atguigu,并修改/etc/sudoers配置文件, 使得sudo 后拥有和root同样的权限,并且不需要使用密码验证
    useradd atguigu
    vim /etc/sudoers
    在这里插入图片描述
    sudo 命令可以使得普通用户获得指定的权限,(限制用户只在某台主机上运行某些命令),可以看做是普通用户向超级管理员申请获取权限。

    7)在/opt (用于存放第三软件)目录下文件夹module 和 software,并更改所有主和组为atguigu
    在这里插入图片描述在这里插入图片描述
    8)卸载之前安装到的jdk:rpm -qa | grep -i java | xargs -n1 rmp -e --nodeps
    在这里插入图片描述
    grep -i 忽略大小写
    xargs 从 标准 输入 读入 参数. 参数 用 空格(可以 用 双引号 单引号 或 反斜杠 转意) 或者 回车 隔开. 然后 一次 或者 多次 执行 命令: 从标准输入重建并执行命令行

    rpm -e 卸载rpm包,–nodeps 忽略依赖检查
    在这里插入图片描述
    9)reboot 重启,模板虚拟机配置完毕

    二、虚拟机克隆

    1) 模板机关机后,从VMware中进行完整克隆
    在这里插入图片描述
    在这里插入图片描述
    2) 每个虚拟机配置ip地址和主机名称
    如:hadoop102 ip地址设置为192.168.10.102 hostname 设置为hadoop102

    3) 在hadoop 102中安装JDK1.8
    将jdk1.8 的linux tar.gz文件传入 之前创建的 software文件夹中
    tar -zxvf [解压文件] -C [解压到指定目录] 将jdk安装到module 文件夹
    配置环境变量,将JAVA_HOME添加到环境变量中:
    Linux环境变量的配置是通过/etc/profile.sh 文件进行配置的。
    profile.sh中会对profile.d中的sh文件循环执行
    在profile.d中添加新的sh文件,声明全局变量,修改PATH值
    sudo vim /etc/profile.d/my_var.sh
    在这里插入图片描述
    在这里插入图片描述
    重新运行profile: source /etc/profile

    4) 在hadoop102上,安装Hadoop
    步骤同上,解压、配置环境变量
    在配置环境变量中:
    在这里插入图片描述

    三、配置本地运行模式和ssh免密登录

    1. 将hadoop102上 已经解压过的 hadoop 和 jdk 传输至 hadoop103 和 hadoop 104上:( Secure Copy )
      scp — 安全复制(远程文件复制程序)
      -r 递归复制整个目录。
      scp -r 【本地目录】 【远程用户名@远程主机名:远程目录】

      反之 pull :
      scp -r 【远程用户名@远程主机名:远程目录】【本地目录】
      表示从远程主机拉取文件

      rsync — 远程同步工具(相比于安全复制,只传输差异部分的文件,速度更快,效率更好)
      rsync -av 【本地目录】 【远程用户名@远程主机名:远程目录】

      对于每个服务器都执行rsync 命令显然比较复杂。
      创建自己的xsyn.sh ,并将文件所在目录加入PATH即可。
      xsyn.sh 执行任务:将参数中的文件 同步到 所有虚拟机下的相同路径中

      /home/atguigu/bin 是默认加入到$PATH中的,所以在此目录下添加sh文件

    # !bin/bash
    
    
    if [$# -lt 1]
    	then 
    		echo 请输入参数
    		exit;
    	
    fi
    
    
    for host in hadoop102 hadoop103 hadoop104
    do
    	echo =================$host====================
    	for file in $@
    	do 
    
    		if [-e $file]
    			then
    				#获取文件的完整绝对路径:pwd
    				pdir=$(cd -P $(dirname $file);pwd)
    				# -P可以避免软连接目录,跳转到真实目录
    				
    				#获取文件名称 basename
    				fname=$(basename $file)
    				
    				# 在目标服务器下创建相同目录
    				ssh $host "mkdir -p $pdir"
    				# ssh命令 远程登录
    				# -p可以避免目录已经存在
    
    				# 将目标文件同步到对应目录下
    				rsync -av $pdir/$fname $host:$pdir			
    			else
    				echo $file 不存在
    		fi
    	done
    done 
    
    	接下来通过 xsync 将环境变量sh 分发到所有服务器上。
    	sudo xsync /etc/profile.d/my_var.sh
    	sudo 后相当于切换为root账户 所以/home/atguigu目录不存在$PATH中
    
    
    	linux中每次的ssh 登录都需要密码验证,接下来设置ssh免密登录:
    	ssh 加密协议 属于非对称加密通信,原理如下
    

    在这里插入图片描述
    只需要在服务器的.ssh目录下保存公钥,即可实现免密登录。
    在/home/atguigu/.ssh目录下执行ssh -keygen -t rsa 会在.ssh/id_rsa 下生成密钥和公钥
    在这里插入图片描述
    在这里插入图片描述
    将公钥发送给其余服务器:
    ssh-copy-id hadoop103
    ssh-copy-id hadoop104

    免密ssh远程连接设置成功。 接下来在hadoop103和104中同样设置
    

    四、Hadoop集群配置

    在配置Hadoop 之前,需要规划好各节点的分工,尽量不要把占用资源量比较大的角色分配到用一个资源上。
    在这里插入图片描述

    Hadoop 的自定义配置文件在 etc/hadoop/etc目录下的四个空的xml文件,将一下配置粘贴到Hadoop102中并下发到所有节点。

    1) core-site.xml

    <configuration>
    	<!-- 指定NameNode地址-->
    	<property>
    		<name>fs.defaultFS</name>
    		<value>hdfs://hadoop102:8020</value>
    	</property>
    	
    	<!--指定本地文件存储系统的地址-->
    	<property>
    		<name>hadoop.tmp.dir</name>
    		<value>/opt/module/hadoop-3.1.3/data</value>
    	</property>
    	
    	<!--配置HDFS网页登录的静态用户atguigu-->
    	<property>
    		<name>hadoop.http.staticuser.user</name>
    		<value>atguigu</value>
    	</property>
    </configuration>
    
    1. hdfs-site.xml
    <configuration>
    	<!-- nn web端访问地址-->
    	<property>
    		<name>dfs.namenode.http-address</name>
    		<value>hadoop102:9870</value>
    	</property>
    	<!-- snn web端访问地址-->
    	<property>
    		<name>dfs.namenode.secondary.http-address</name>
    		<value>hadoop104:9868</value>
    	</property>
    
    </configuration>
    
    
    1. mapred-site.xml
    <configuration>
    	<!-- 指定MR在yarn运行,默认是本地-->
    	<property>
    		<name>mapreduce.framwork.name</name>
    		<value>yarn</value>
    	</property>
    
    </configuration>
    
    1. yarn-site.xml
    <configuration>
    
    <!-- Site specific YARN configuration properties -->
    	<!-- 指定MR走Shuffle-->
    	<property>
    		<name>yarn.nodemanager.aux-services</name>
    		<value>mapreduce_shuffle</value>
    	</property>
    	<!-- ResourceManager地址-->
    	<property>
    		<name>yarn.resourcemanager.hostname</name>
    		<value>hadoop103</value>
    	</property>
    	<!-- 环境变量继承-->
    	<property>
    		<name>yarn.nodemanager.env-whitelist</name>
    		<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME
    		</value>
    	</property>
    
    </configuration>
    

    五、集群的启动

    1) 设置workers配置
    		在etc目录下设置workers参数:
    			hadoop102
    			hadoop103
    			hadoop104
    		(注意不要加空格 和 空行)
    
    
    2) 格式化NameNode 节点(第一次运行时):
    		在hadoop102下执行
    				hdfs namenode -forma
    		执行成功的标志:bin目录下出现data 和 logs目录
    
    		PS:不要多次格式NameNode节点,每次格式化节点都会产生新的Cluster_ID,导致DataNode节点与NameNode的集群ID不一致,集群不能找到以往数据。如果需要重新格式化NameNode的化,首先停止namenode和datanode进程,并且删除所有节点的data和log目录,然后进行格式化。或者直接修改DataNode的集群ID 使其与NameNode的集群ID一致。
    		解决办法:https://blog.51cto.com/zyp88/2053031
    
    2)启动Hadoop集群
    		在hadoop102上(NN) 启动hdfs 
    		start-dfs.sh
    		启动成功后在节点 jps,查看角色是否正确(jps 查看java虚拟机线程的工具)
    		通过浏览器访问192.168.10.102:9870 得到hdfs 的web界面
    
    		在hadoop103上(RM)启用yarn
    		start-yarn.sh
    		通过浏览器访问192.168.10.103:8088
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    六、历史服务器配置

    mapred.xml

    <configuration>
    	<!-- 指定MR在yarn运行,默认是本地-->
    	<property>
    		<name>mapreduce.framwork.name</name>
    		<value>yarn</value>
    	</property>
    	<!-- 指定历史服务器地址-->
    	<property>
    		<name>mapreduce.jobhistory.address</name>
    		<value>hadoop102:10020</value>
    	</property>
    	<!-- 指定历史服务器web地址-->
    	<property>
    		<name>mapreduce.jobhistory.webapp.address</name>
    		<value>hadoop102:19888</value>
    	</property>
    
    </configuration>
    

    重新启用yarn后:
    在hadoop102
    mapred --daemon start historyserver

    七、日志聚集功能的开启

    在这里插入图片描述
    1) 配置yarn-site.xml

    <configuration>
    
    <!-- Site specific YARN configuration properties -->
    	<!-- 指定MR走Shuffle-->
    	<property>
    		<name>yarn.nodemanager.aux-services</name>
    		<value>mapreduce_shuffle</value>
    	</property>
    	<!-- ResourceManager地址-->
    	<property>
    		<name>yarn.resourcemanager.hostname</name>
    		<value>hadoop103</value>
    	</property>
    	<!-- 环境变量继承-->
    	<property>
    		<name>yarn.nodemanager.env-whitelist</name>
    		<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME
    		</value>
    	</property>
    	<!-- 打开日志聚集-->
    	<property>
    		<name>yarn.log-aggregation-enable</name>
    		<value>true</value>
    	</property>
    	<!-- 设置日志服务器地址-->
    	<property>
    		<name>yarn.log.server.url</name>
    		<value>http://hadoop102:19888/jobhistory/logs</value>
    	</property>
    	<!-- 设置日志七天保留-->
    	<property>
    		<name>yarn.log-aggregation.retain-seconds</name>
    		<value>604800</value>
    	</property>
    	
    
    </configuration>
    
    1. 分发到所有节点
    2. 重启历史服务器、yarn
      mapred --daemon stop historyserver
      stop-yarn.sh

    八、Hadoop线程的启动

    两种方式启动hadoop 中的线程:
    1) 整体启动:start-dfs.sh
    2)部分启动:hdfs -daemo start datenode hdfs -daemo stop datenode

    脚本一:在项目中,逐个节点的逐个启动线程过于麻烦,可以将启动命令写入到shell脚本中执行

    if [ $# -lt 1 ]
    then 
    	echo "No Arugument: Please input start/stop"
    	exit;
    fi
    
    case $1 in 
    "start")
    	echo "==================Opening Hadoop================"
    	
    	echo "------------------—Opening HDFS-----------------"
    	ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"
    	echo "------------------—Opening YARN-----------------"
    	ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"
    	echo "----------------Opening HistoryServer-----------"
    	ssh hadoop103 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver"
    ;;
    "stop")
    	echo "==================Closing Hadoop================"
    	
    	echo "----------------Closing HistoryServer-----------"
    	ssh hadoop103 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop historyserver"
    	echo "------------------—Closing YARN-----------------"
    	ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"
    	echo "------------------—Closing HDFS-----------------"
    	ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
    ;;
    *)
    	echo "Wrong Arugument"
    ;;
    esac
    

    脚本二:查看所有服务器的jsp

    for host in hadoop102 hadoop103 hadoop104
    do
    	echo "=======$host======="
    	ssh $host "jps"
    done
    

    PS : 脚本写完后需要确保脚本的可执行权限,并分发到所有服务器中

    九、***Hadoop常用的端口号 与 配置文件

    在这里插入图片描述
    在这里插入图片描述

    十、集群时间同步 P37

    在这里插入图片描述

    展开全文
  • 超详细集群搭建教程(从虚拟机安装到集群搭建完成,集群搭建成功验证),每一个步骤都有,照做即可。 内有集群搭建所需安装包:hadoop2.2.0,zookeeper3.4.5
  • hadoop集群搭建步骤

    2019-01-10 22:29:38
    该文档提供了linux环境中搭建hadoop集群(大数据)的步骤,个人认为比较详细,供大家学习
  • 本文档深刻解析了hadoop集群搭建的过程,有自己编写的过程,有完整的搭建过程。
  • Hadoop集群搭建(超级超级详细)

    千次阅读 2022-04-24 20:34:10
    Hadoop集群搭建(超级超级详细)

    Hadoop集群搭建(超级超级详细)

    1、集群规划

    安装VMware,使用三台 Ubuntu18.04 虚拟机进行集群搭建,下面是每台虚拟机的规划:

    主机名IP用户HDFSYARN
    hadoopWyc待定wycNameNode、DataNodeNodeManager、ResourceManager
    hadoopWyc2待定wycDataNode、SecondaryNameNodeNodeManager
    hadoopWyc3待定wycDataNodeNodeManager

    2、网络配置

    我首先在VMware中新建一台8G内存(安装Ubuntu默认系统的内存就可以了),20G硬盘空间的Ubuntu虚拟机。新建完成后进行下面操作。
    在这里插入图片描述
    普通用户登录后请记住这个IP地址,后面需要用到!!!

    先登入root用户,后面都在root用户下操作。

    su root             #登入root用户
    

    还没设置root用户密码的参考 Ubuntu18.04设置root密码(初始密码)

    2.1 修改主机名

    vim /etc/hostname   #修改文件
    

    执行上面的命令打开“/etc/hostname”这个文件,将其中内容删除,并修改为“hadoopWyc”(你们可以根据你们需要修改想要的主机名),保存退出vim编辑器,重启Linux即可看到主机名发生变化。
    在这里插入图片描述

    2.2 查看虚拟机网络信息

    2.2.1 点击VMware的编辑里的虚拟网络编辑器

    在这里插入图片描述

    2.2.2 选择VMnet8网络,点击NAT设置

    在这里插入图片描述
    在这里插入图片描述

    记录上面图中子网掩码、网关,加上前面的IP地址三个属性,这些在后面的步骤有用,不同的电脑会有不同。

    2.2.3 获取Ubuntu虚拟机的网卡编号

    ifconfig
    

    在这里插入图片描述

    2.2.4 设置静态网络

    vim /etc/network/interfaces
    

    在原有的内容上添加

    auto ens33				    # 网卡编号,我这里是ens33
    iface ens33 inet static	    # 设置为静态IP
    address 192.168.153.136	    # 该机器的IP,就是我们登录后显示的那个IP 地址
    netmask 255.255.255.0	    # 子网掩码,刚才获取VMware的子网掩码
    gateway 192.168.153.2	    # 网关,也是刚才获取的网关
    dns-nameserver 192.168.153.2	# DNS,和网关一样即可
    

    在这里插入图片描述
    上面的内容根据各自的电脑进行设置,一定要和VMware中的子网IP、子网掩码、网关保持一致,不然会上不了网。保存退出vim编辑器,重启Ubuntu即可生效。

    3、安装 ssh 服务端

    apt-get install openssh-server
    

    安装虚拟机时有勾选安装ssh的会和下图一样,继续往下做就行了
    在这里插入图片描述
    安装后,使用下面命令登录本机:

    ssh localhost
    

    补充:ssh localhost = ssh <当前用户>@localhost -p 22 -i ~/.ssh/id_rsa

    SSH首次登录会有提示,输入yes即可,然后按照提示输入本机密码即可。
    在这里插入图片描述
    但是这样每次登录都要输入密码,现在设置SSH无密码登录。首先退出SSH,利用ssh-keygen生成密钥,并将密钥加入到授权中。

    exit	# 退出ssh localhost
    cd ~/.ssh/
    ssh-keygen -t rsa	# 会有提示,都按回车就行
    cat ./id_rsa.pub >> ./authorized_keys	# 加入授权
    

    在这里插入图片描述
    现在再使用"ssh localhost",就可以不用输入密码登录ssh
    在这里插入图片描述

    4、安装Java环境

    Hadoop3.1.3需要JDK版本在1.8及以上,点击右边链接可以下载符合版本的JDK:jdk-8u162-linux-x64.tar.gz(提取码:tfn1)。

    我们可以通过Xshell连接虚拟机,主机名就是刚才登录显示的那个IP地址,端口默认22,选择账户密码登录输入用户名和密码就可以登录了(如果上面没有安装开启.ssh服务,在这里会连接不上虚拟机)
    在这里插入图片描述
    点击上面绿色小图标,我们就打开了Xftp,可以直接把本地的文件传输到虚拟机
    在这里插入图片描述
    用普通用户登录Xshell的人会报错误本地文件传不到虚拟机上:
    请添加图片描述
    有两种解决方案:

    1. Xshall用root登录,再打开Xftp(这样Xftp也是root用户打开,拥有所有权限),可是Xshall用root登录虚拟机会连接不上,参考:Xshell用root用户连接Linux 可以解决
    2. 参考:Xftp 传文件到虚拟机一直显示状态错误,传不进去

    将文件放在随便一个目录中后,执行下面命令:

    cd /usr/lib
    mkdir jvm	# 创建目录来存放JDK文件
    

    然后再进入 jdk-8u162-linux-x64.tar.gz 所在的文件夹解压JDK到刚才创建的 jvm 文件夹

    tar -zxvf ./jdk-8u162-linux-x64.tar.gz -C /usr/lib/jvm #解压JDK到刚才创建的jvm文件夹
    

    将JDK文件解压之后,进入/usr/lib/jvm目录下会有个jdk1.8.0_162文件,下面我们开始设置环境变量

    vim ~/.bashrc
    

    在打开的文件首部添加下面内容

    export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162
    export JRE_HOME=${JAVA_HOME}/jre
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
    export PATH=${JAVA_HOME}/bin:$PATH
    

    保存退出vim编辑器,执行下面命令让.bashrc文件的配置生效:

    source ~/.bashrc
    

    接下来使用下面命令查看是否安装成功:

    java -version
    

    如果如下面一样有显示java的版本信息,则表示安装成功:
    在这里插入图片描述

    5、安装Hadoop3.1.3

    hadoop-3.1.3.tar.gz (提取码: x2vu)可以在这点击下载,将其下载并上传到相应的位置上,使用下面命令安装,也要和安装Java一样给文件夹权限:

    tar -zxvf hadoop-3.1.3.tar.gz -C /usr/local	# 解压到/usr/local中
    cd mv ./hadoop-3.1.3/ ./hadoop	# 将文件名改为hadoop
    sudo chown -R rmc0924 ./hadoop	# 修改权限,当前是什么用户登录,就给他赋予用户的权限
    

    解压后使用下面命令看是否安装成功,安装成功会显示Hadoop的版本信息。

    cd /usr/local/hadoop
    ./bin/hadoop version
    

    如图所示:
    在这里插入图片描述

    6、克隆虚拟机

    经过上面步骤,名称为hadoopWyc的Ubuntu已经配置完成,现在退出该虚拟机。将该虚拟机克隆出另外两台虚拟机,分别命名为hadoopWyc2和hadoopWyc3。
    在这里插入图片描述
    在后面的提示框中依次选择“虚拟机中的当前状态”、“创建完整克隆”、对克隆的虚拟机命名、选择位置,等待克隆完成。
    在这里插入图片描述
    在这里插入图片描述
    最后的虚拟机如下所示:
    在这里插入图片描述
    将hadoopWyc2和hadoopWyc3两台虚拟机按照2.1和2.2中步骤,修改主机名以及各自的静态IP,备用。最后我们可以把最初的那张表补全:

    主机名IP用户HDFSYARN
    hadoopWyc192.168.153.136wycNameNode、DataNodeNodeManager、ResourceManager
    hadoopWyc2192.168.153.137wycDataNode、SecondaryNameNodeNodeManager
    hadoopWyc3192.168.153.138wycDataNodeNodeManager

    7、三台虚拟机都加上主机IP映射

    打开hosts文件,新增三条IP与主机的映射关系:

    vim /etc/hosts
    

    192.168.153.136 hadoopWyc
    192.168.153.137 hadoopWyc2
    192.168.153.138 hadoopWyc3
    在这里插入图片描述

    8、集群搭建

    现在正式搭建Hadoop集群。首先我们还是需要打开VMware中的三台虚拟机,然后用Xshall连接好三台虚拟机就行了。

    三台机子之间互相ping,看是否能ping通。
    在这里插入图片描述

    8.1 SSH无密码登录节点

    必须要让hadoopWyc节点可以SSH无密码登录到各个hadoopWyc2和hadoopWyc3节点上。首先生成hadoopWyc节点公钥,如果之前已经生成,必须删除,重新生成一次。在hadoopWyc上进行下面操作:

    cd ~/.ssh
    rm ./id_rsa*	# 删除之前生成的公钥
    ssh-keygen -t rsa	# 遇到信息,一直回车就行
    

    在这里插入图片描述
    再让hadoopWyc节点能够无密码SSH登录本机,在hadoopWyc节点上执行下面命令:

    cat ./id_rsa.pub >> ./authorized_keys
    

    使用下面命令进行测试:

    ssh hadoopWyc
    

    接下来将hadoopWyc上的公钥传给各个hadoopWyc2&3节点:

    scp ~/.ssh/id_rsa.pub hadoopWyc2:/home/wyc
    scp ~/.ssh/id_rsa.pub hadoopWyc3:/home/wyc
    

    其中scp是secure copy的简写,在Linux中用于远程拷贝。执行scp时会要求输入hadoopWyc2&3用户的密码,输入完成后会显示传输完毕:
    在这里插入图片描述
    接着在hadoopWyc2节点上,将接收到的公钥加入授权:

    mkdir ~/.ssh	# 如果不存在该文件夹,先创建
    cat /home/wyc/id_rsa.pub >> ~/.ssh/authorized_keys
    rm /home/wyc/id_rsa.pub   # 加完就删除
    

    在hadoopWyc3节点中也执行以上的命令。执行完了之后,在hadoopWyc节点上就可以无密码登录hadoopWyc2&3节点,在hadoopWyc节点上执行下面命令:

    ssh hadoopWyc2
    

    在hadoopWyc登录hadoopWyc2,这个时候输入命令等于在虚拟机hadoopWyc2执行一样
    在这里插入图片描述
    输入exit即可退出

    8.2 配置集群环境

    配置集群模式时,需要修改“/usr/local/hadoop/etc/hadoop”目录下的配置文件,包括workers、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml。

    8.2.1 修改workers文件

    vim workers
    

    该文件内容可以指定某几个节点作为数据节点,默认为localhost,我们将其删除并修改为hadoopWyc2和hadoopWyc。当然也可以将hadoopWyc加进去,让hadoopWyc节点既做名称节点,也做数据节点,本文将hadoopWyc一起加进去作为数据节点。

    hadoopWyc
    hadoopWyc2 
    hadoopWyc3
    

    8.2.2 修改core-site.xml文件

    vim core-site.xml
    

    fs.defaultFS:指定namenode的hdfs协议的文件系统通信地址,可以指定一个主机+端口
    hadoop.tmp.dir:hadoop集群在工作时存储的一些临时文件存放的目录

    <configuration>
            <property>
                    <name>fs.defaultFS</name>
                    <value>hdfs://hadoopWyc:9000</value>
            </property>
            <property>
                    <name>hadoop.tmp.dir</name>
                    <value>file:/usr/local/hadoop/tmp</value>
            </property>
    </configuration>
    

    8.2.3 修改hdfs-site.xml文件

    vim hdfs-site.xml
    

    dfs.secondary.http.address:secondarynamenode运行节点的信息,应该和namenode存放在不同节点
    dfs.repliction:hdfs的副本数设置,默认为3
    dfs.namenode.name.dir:namenode数据的存放位置,元数据存放位置
    dfs.datanode.data.dir:datanode数据的存放位置,block块存放的位置

    <configuration>
            <property>
                    <name>dfs.namenode.secondary.http-address</name>
                    <value>hadoopWyc2:50090</value>
            </property>
            <property>
                    <name>dfs.replication</name>
                    <value>3</value>
            </property>
            <property>
                    <name>dfs.namenode.name.dir</name>
                    <value>file:/usr/local/hadoop/tmp/dfs/name</value>
            </property>
            <property>
                    <name>dfs.datanode.data.dir</name>
                    <value>file:/usr/local/hadoop/tmp/dfs/data</value>
            </property>
    </configuration>
    

    8.2.4 修改mapred-site.xml文件

    vim mapred-site.xml
    

    mapreduce.framework.name:指定mapreduce框架为yarn方式
    mapreduce.jobhistory.address:指定历史服务器的地址和端口
    mapreduce.jobhistory.webapp.address:查看历史服务器已经运行完的Mapreduce作业记录的web地址,需要启动该服务才行

    <configuration>
            <property>
                    <name>mapreduce.framework.name</name>
                    <value>yarn</value>
            </property>
            <property>
                    <name>mapreduce.jobhistory.address</name>
                    <value>hadoopWyc:10020</value>
            </property>
            <property>
                    <name>mapreduce.jobhistory.webapp.address</name>
                    <value>hadoopWyc:19888</value>
            </property>
            <property>
                    <name>yarn.app.mapreduce.am.env</name>
                    <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
            </property>
            <property>
                    <name>mapreduce.map.env</name>
                    <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
            </property>
            <property>
                    <name>mapreduce.reduce.env</name>
                    <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
            </property> 
    </configuration>
    

    8.2.5 修改yarn-site.xml文件

    vim yarn-site.xml
    
    <configuration>
            <property>
                    <name>yarn.resourcemanager.hostname</name>
                    <value>hadoopWyc</value>
            </property>
            <property>
                    <name>yarn.nodemanager.aux-services</name>
                    <value>mapreduce_shuffle</value>
            </property>
    </configuration>
    

    8.3 分发文件

    修改完上面五个文件后,将hadoopWyc节点上的hadoop文件复制到各个结点上。在hadoopWyc节点上执行下面命令:

    cd /usr/local
    sudo rm -r ./hadoop/tmp     # 删除 Hadoop 临时文件
    sudo rm -r ./hadoop/logs/*   # 删除日志文件
    tar -zcf ~/hadoop.master.tar.gz hadoop  # 先压缩再复制
    cd ~
    scp hadoop.master.tar.gz hadoopWyc2:/home/
    scp hadoop.master.tar.gz hadoopWyc3:/home/
    

    在这里插入图片描述
    在其他hadoopWyc2&3节点将接收的压缩文件解压出来,并授予权限,命令如下:

    sudo rm -r /usr/local/hadoop    # 删掉旧的(如果存在)
    sudo tar -zxf /home/hadoop.master.tar.gz -C /usr/local
    sudo chown -R wyc /usr/local/hadoop
    

    在这里插入图片描述

    8.4 Hadoop初始化

    HDFS初始化只能在主节点上进行

    cd /usr/local/hadoop
    ./bin/hdfs namenode -format
    

    在这里插入图片描述
    在初始化过程中,只要看到上面红框里面的信息,有个successfully formatted说明初始化成功。

    8.5 Hadoop集群启动

    在hadoopWyc节点上执行下面命令:

    cd /usr/local/hadoop
    ./sbin/start-dfs.sh
    ./sbin/start-yarn.sh
    ./sbin/mr-jobhistory-daemon.sh start historyserver
    #这样我们就可以在相应机器的19888端口上打开历史服务器的WEB UI界面。可以查看已经运行完的作业情况
    

    在这里插入图片描述
    通过jps可以查看各个节点所启动的进程,如果按照本文的设置,正确启动的话,在hadoopWyc节点上会看到以下进程:
    在这里插入图片描述
    hadoopWyc2节点的进程:
    在这里插入图片描述
    hadoopWyc3节点的进程:

    hadoop-3.1.0启动hadoop集群时还有可能会报如下错误:

    root@hadoopWyc3:/usr/local/hadoop# ./sbin/start-dfs.sh
    Starting namenodes on [hadoopWyc]
    ERROR: Attempting to operate on hdfs namenode as root
    ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
    Starting datanodes
    ERROR: Attempting to operate on hdfs datanode as root
    ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.
    Starting secondary namenodes [hadoopWyc2]
    ERROR: Attempting to operate on hdfs secondarynamenode as root
    ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.
    

    参考:解决 Hadoop 启动 ERROR: Attempting to operate on hdfs namenode as root 的方法 解决

    至此,Hadoop的完全分布式部署已经完成。

    展开全文
  • Hadoop在linux中搭建集群的思维导图,和具体操作流程。
  • Hadoop集群搭建(超级详细)

    万次阅读 多人点赞 2021-05-07 11:34:06
    安装VMware,使用三台Ubuntu18.04虚拟机进行集群搭建,下面是每台虚拟机的规划: 主机名 IP 用户 HDFS YARN hadoopMaster 待定 rmc0924 NameNode、DataNode NodeManager、ResourceManager hado

    感谢评论区大佬们指出文章中的一些错误,已经进行修改。如果还存在其他错误,希望大佬们指出!

    需要的安装包:jdk-8u162-linux-x64.tar.gz( 提取码:6k1i )、hadoop-3.1.3.tar.gz( 提取码:07p6 )

    1 集群规划

    安装VMware,使用三台Ubuntu18.04虚拟机进行集群搭建,下面是每台虚拟机的规划:

    主机名IP用户HDFSYARN
    hadoopMaster待定rmc0924NameNode、DataNodeNodeManager、ResourceManager
    hadoopSlave0待定rmc0924DataNode、SecondaryNameNodeNodeManager
    hadoopSlave1待定rmc0924DataNodeNodeManager

    上面表格备用,还需要确定每台虚拟机的IP地址

    2 网络配置

    首先在VMware中新建一台4G内存(后期会进行修改),20G硬盘空间的Ubuntu虚拟机。新建完成后进行下面操作。

    2.1 修改主机名

    sudo vim /etc/hostname
    

    其中的vim文本编辑器需要自己安装,具体的安装步骤也很简单,大家伙可以去看别人的博客安装一下。执行上面的命令打开“/etc/hostname”这个文件,将其中内容删除,并修改为“hadoopMaster”,保存退出vim编辑器,重启Linux即可看到主机名发生变化。下面是修改前的主机名:
    在这里插入图片描述
    下面是修改后的主机名:
    在这里插入图片描述

    2.2 设置虚拟机IP地址

    1. 查看VMware虚拟机的虚拟网络编辑器
      在这里插入图片描述
    2. 点击VMnet8网络,点击NAT设置

    在这里插入图片描述
    记录上面图中子网IP、子网掩码、网关三个属性,这些在后面的步骤有用,不同的电脑会有不同。

    1. 获取Ubuntu虚拟机的网卡编号
    ifconfig
    

    在这里插入图片描述

    1. 设置静态网络
    sudo vim /etc/network/interfaces
    

    在原有的内容上添加

    auto ens33				# 网卡编号,我这里是ens33
    iface ens33 inet static	# 设置为静态IP
    address 192.168.131.151	# 该机器的IP,根据我们刚才获取到的VMware的子网IP进行选取
    netmask 255.255.255.0	# 子网掩码,刚才获取VMware的子网掩码
    gateway 192.168.131.2	# 网关,也是刚才获取的网关
    dns-nameserver 192.168.131.2	# DNS,和网关一样即可
    

    上面的内容根据各自的电脑进行设置,一定要和VMware中的子网IP、子网掩码、网关保持一致,不然会上不了网。保存退出vim编辑器,重启Ubuntu即可生效。

    1. 主机IP映射
    sudo vim /etc/hosts
    

    打开hosts文件,新增三条IP与主机的映射关系:

    192.168.131.151	hadoopMaster
    192.168.131.152	hadoopSlave0
    192.168.131.153	hadoopSlave1
    

    修改结果如下图所示:
    在这里插入图片描述

    一般情况下,hosts文件中只有一个127.0.0.1,其对应的主机名为localhost,如果存在多余的127.0.0.1,应删除,同时127.0.0.1不能与hadoopMaster这样的主机名进行映射关系。修改后重启Ubuntu。

    2.3 关闭防火墙

    使用下面命令查看防火墙状态,inactive状态是防火墙关闭状态 active是开启状态。

    sudo ufw status
    

    使用下面命令关闭防火墙:

    sudo ufw disable
    

    3 安装SSH服务端

    sudo apt-get install openssh-server
    

    安装后,使用下面命令登录本机:

    ssh localhost
    

    SSH首次登录会有提示,输入yes即可,然后按照提示输入本机密码即可。但是这样每次登录都要输入密码,现在设置SSH无密码登录。首先退出SSH,利用ssh-keygen生成密钥,并将密钥加入到授权中。

    exit	# 退出ssh localhost
    cd ~/.ssh/
    ssh-keygen -t rsa	# 会有提示,都按回车就行
    cat ./id_rsa.pub >> ./authorized_keys	# 加入授权
    

    现在再使用"ssh localhost",就可以不用输入密码登录ssh
    在这里插入图片描述

    4 安装Java环境

    Hadoop3.1.3需要JDK版本在1.8及以上,jdk-8u162-linux-x64.tar.gz在文首给出,可以进行下载。将文件放在一个目录中后,打开一个终端,执行下面命令。

    cd /usr/lib
    sudo mkdir jvm	# 创建目录来存放JDK文件
    # 进入jdk-8u162-linux-x64.tar.gz所在的文件夹
    sudo tar -zxvf ./jdk-8u162-linux-x64.tar.gz -C /usr/lib/jvm
    

    上面将JDK文件解压之后,进入/usr/lib/jvm目录下会有个jdk1.8.0_162文件
    下面开始设置环境变量

    sudo vim ~/.bashrc
    

    在打开的文件首部添加下面内容

    export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162
    export JRE_HOME=${JAVA_HOME}/jre
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
    export PATH=${JAVA_HOME}/bin:$PATH
    

    保存退出vim编辑器,执行下面命令让.bashrc文件的配置生效:

    source ~/.bashrc
    

    接下来使用下面命令查看是否安装成功:

    java -version
    

    如果显示java的版本信息,则表示安装成功:
    在这里插入图片描述

    5 安装Hadoop3.1.3

    hadoop-3.1.3.tar.gz文件在文首已经给出,将其下载并放到相应的位置上,使用下面命令安装:

    sudo tar -zxf ./hadoop-3.1.3.tar.gz -C /usr/local	# 解压到/usr/local中
    sudo mv ./hadoop-3.1.3/ ./hadoop	# 将文件名改为hadoop
    sudo chown -R rmc0924 ./hadoop	# 修改权限,当前是什么用户登录,就给他赋予用户的权限
    

    解压后使用下面命令看是否安装成功,安装成功会显示Hadoop的版本信息。

    cd /usr/local/hadoop
    ./bin/hadoop verison
    

    在这里插入图片描述

    6 克隆虚拟机

    经过上面步骤,名称为hadoopMaster的Ubuntu已经配置完成,现在退出该虚拟机。将该虚拟机克隆出另外两台虚拟机,分别命名为hadoopSlave0和hadoopSlave1。
    在这里插入图片描述
    在后面的提示框中依次选择“虚拟机中的当前状态”、“创建完整克隆”、对克隆的虚拟机命名、选择位置,等待克隆完成。最后的虚拟机如下所示:
    在这里插入图片描述
    将hadoopSlave0和hadoopSlave1两台虚拟机按照2.1和2.2中步骤,修改主机名以及各自的静态IP,备用。最后我们可以把最初的那张表补全:

    主机名IP用户HDFSYARN
    hadoopMaster192.168.131.151rmc0924NameNode、DataNodeNodeManager、ResourceManager
    hadoopSlave0192.168.131.152rmc0924DataNode、SecondaryNameNodeNodeManager
    hadoopSlave1192.168.131.153rmc0924DataNodeNodeManager

    7 安装SecureCRT

    由于使用一台电脑来搭建集群,电脑的内存就8G,带不动三台带有图形化界面的虚拟机同时运行,所以使用SecureCRT进行远程连接。SecureCRT安装教程在这位大佬的博客中有详细的教程,大家伙自己过去看就好了,我就不再赘述。

    8 集群搭建

    好了,前面说了那么多都是铺垫,现在正式搭建Hadoop集群。首先我们还是需要打开VMware中的三台虚拟机,但是打开之前,我们要把它们的内存进行修改,由原先的4G改为1.5G就行了。硬件原因,不在这三台的图形化界面上进行操作,而是使用SecureCRT远程连接,只在终端上进行操作。将三台虚拟机的内存大小改为1.5G后,就可以将三台机子打开。仅仅打开就行,登录界面出现就够了,不需要登录进去。
    在这里插入图片描述
    这样开了三台,内存还都是1.5G的,我的内存就干到了85%,所以不用在图形化界面上进行操作。使用SecureCRT就可以直接登录三台机子。
    在这里插入图片描述
    三台机子之间互相ping,看是否能ping通。
    在这里插入图片描述

    1. SSH无密码登录节点

    必须要让hadoopMaster节点可以SSH无密码登录到各个hadoopSlave节点上。首先生成hadoopMaster节点公钥,如果之前已经生成,必须删除,重新生成一次。在hadoopMaster上进行下面操作:

    cd ~/.ssh
    rm ./id_rsa*	# 删除之前生成的公钥
    ssh-keygen -t rsa	# 遇到信息,一直回车就行
    

    再让hadoopMaster节点能够无密码SSH登录本机,在hadoopMaster节点上执行下面命令:

    cat ./id_rsa.pub >> ./authorized_keys
    

    使用下面命令进行测试:

    ssh hadoopMaster
    

    接下来将hadoopMaster上的公钥传给各个hadoopSlave节点:

    scp ~/.ssh/id_rsa.pub hadoopSlave0:/home/rmc0924
    

    其中scp是secure copy的简写,在Linux中用于远程拷贝。执行scp时会要求输入hadoopSlave1用户的密码,输入完成后会显示传输完毕:
    在这里插入图片描述
    接着在hadoopSlave0节点上,将接收到的公钥加入授权:

    mkdir ~/.ssh	# 如果不存在该文件夹,先创建
    cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
    rm ~/id_rsa.pub	# 加完就删除
    

    在hadoopSlave1节点中也执行上的命令。执行完了之后,在hadoopMaster节点上就可以无密码登录代各个hadoopSlave节点,在hadoopMaster节点上执行下面命令:

    ssh hadoopSlave0
    

    在这里插入图片描述
    输入exit即可退出。

    1. 配置集群环境

    配置集群模式时,需要修改“/usr/local/hadoop/etc/hadoop”目录下的配置文件,包括workers、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml。

    A. 修改workers文件

    vim workers
    

    该文件内容可以指定某几个节点作为数据节点,默认为localhost,我们将其删除并修改为hadoopSlave0和hadoopSlave1.当然也可以将hadoopMaster加进去,让hadoopMaster节点既做名称节点,也做数据节点,本文将hadoopMaster一起加进去作为数据节点。

    hadoopMaster 
    hadoopSlave0 
    hadoopSlave1
    

    B.修改core-site.xml文件

    vim core-site.xml
    

    fs.defaultFS:指定namenode的hdfs协议的文件系统通信地址,可以指定一个主机+端口
    hadoop.tmp.dir:hadoop集群在工作时存储的一些临时文件存放的目录

    	<configuration>
    	        <property>
    	                <name>fs.defaultFS</name>
    	                <value>hdfs://hadoopMaster:9000</value>
    	        </property>
    	        <property>
    	                <name>hadoop.tmp.dir</name>
    	                <value>file:/usr/local/hadoop/tmp</value>
    	        </property>
    	</configuration>
    

    C.修改hdfs-site.xml文件

    vim hdfs-site.xml
    

    dfs.namenode.name.dir:namenode数据的存放位置,元数据存放位置
    dfs.datanode.data.dir:datanode数据的存放位置,block块存放的位置
    dfs.repliction:hdfs的副本数设置,默认为3
    dfs.secondary.http.address:secondarynamenode运行节点的信息,应该和namenode存放在不同节点

    	<configuration>
    	        <property>
    	                <name>dfs.namenode.secondary.http-address</name>
    	                <value>hadoopSlave0:50090</value>
    	        </property>
    	        <property>
    	                <name>dfs.replication</name>
    	                <value>3</value>
    	        </property>
    	        <property>
    	                <name>dfs.namenode.name.dir</name>
    	                <value>file:/usr/local/hadoop/tmp/dfs/name</value>
    	        </property>
    	        <property>
    	                <name>dfs.datanode.data.dir</name>
    	                <value>file:/usr/local/hadoop/tmp/dfs/data</value>
    	        </property>
    	</configuration>
    

    D.修改mapred-site.xml文件

    vim mapred-site.xml
    

    mapreduce.framework.name:指定mapreduce框架为yarn方式
    mapreduce.jobhistory.address:指定历史服务器的地址和端口
    mapreduce.jobhistory.webapp.address:查看历史服务器已经运行完的Mapreduce作业记录的web地址,需要启动该服务才行

    	<configuration>
    	        <property>
    	                <name>mapreduce.framework.name</name>
    	                <value>yarn</value>
    	        </property>
    	        <property>
    	                <name>mapreduce.jobhistory.address</name>
    	                <value>hadoopMaster:10020</value>
    	        </property>
    	        <property>
    	                <name>mapreduce.jobhistory.webapp.address</name>
    	                <value>hadoopMaster:19888</value>
    	        </property>
    	        <property>
    	                <name>yarn.app.mapreduce.am.env</name>
    	                <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
    	        </property>
    	        <property>
    	                <name>mapreduce.map.env</name>
    	                <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
    	        </property>
    	        <property>
    	                <name>mapreduce.reduce.env</name>
    	                <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
    	        </property> 
    	</configuration>
    

    E.修改yarn-site.xml文件

    vim yarn-site.xml
    
    	<configuration>
    	        <property>
    	                <name>yarn.resourcemanager.hostname</name>
    	                <value>hadoopMaster</value>
    	        </property>
    	        <property>
    	                <name>yarn.nodemanager.aux-services</name>
    	                <value>mapreduce_shuffle</value>
    	        </property>
    	</configuration>
    
    1. 分发文件

    修改完上面五个文件后,将hadoopMaster节点上的hadoop文件复制到各个结点上。在hadoopMaster节点上执行下面命令:

    cd /usr/local
    sudo rm -r ./hadoop/tmp     # 删除 Hadoop 临时文件
    sudo rm -r ./hadoop/logs/*   # 删除日志文件
    tar -zcf ~/hadoop.master.tar.gz ./hadoop   # 先压缩再复制
    cd ~
    scp ./hadoop.master.tar.gz hadoopSlave0:/home/hadoop
    

    在这里插入图片描述
    在其他hadoopSlave节点将接收的压缩文件解压出来,并授予权限,命令如下:

    sudo rm -r /usr/local/hadoop    # 删掉旧的(如果存在)
    sudo tar -zxf ~/hadoop.master.tar.gz -C /usr/local
    sudo chown -R rmc0924 /usr/local/hadoop
    
    1. Hadoop初始化

    HDFS初始化只能在主节点上进行

    cd /usr/local/hadoop
    ./bin/hdfs namenode -format
    

    在这里插入图片描述
    在初始化过程中,只要看到上面红框里面的信息,有个successfully formatted说明初始化成功。

    1. Hadoop集群启动

    在hadoopMaster节点上执行下面命令:

    cd /usr/local/hadoop
    ./sbin/start-dfs.sh
    ./sbin/start-yarn.sh
    ./sbin/mr-jobhistory-daemon.sh start historyserver
    

    通过jps可以查看各个节点所启动的进程,如果按照本文的设置,正确启动的话,在hadoopMaster节点上会看到以下进程:
    hadoopMaster节点进程
    hadoopSlave0节点的进程:
    hadoopSlave0节点进程
    hadoopSlave1节点的进程:
    在这里插入图片描述
    另外还可以在hadoopMaster节点上使用下面命令查看数据节点是否正常启动。本文中使用三个节点作为数据节点,所以会有以下的信息:

    在这里插入图片描述
    在这里插入图片描述
    当然我们也可以在浏览器中查看:
    HDFS:http://192.168.131.151:9870/
    YARN:http://192.168.131.151:8088/cluster

    HDFS界面

    在这里插入图片描述
    点击DataNodes可以查看三个节点:
    在这里插入图片描述
    YARN界面

    在这里插入图片描述
    点击左侧导航栏Nodes可以查看结点
    在这里插入图片描述
    至此,Hadoop集群搭建完成,撒花!!!!!

    9 执行分布式实例

    在HDFS上创建一个文件夹/test/input

    cd /usr/local/hadoop
    ./bin/hdfs dfs -mkdir -p /test/input
    

    查看创建的文件夹

    ./bin/hdfs dfs -ls /
    

    在这里插入图片描述

    创建一个word.txt测试文件

    vim word.txt
    

    输入以下文本(我从《傲慢与偏见》里面抽出来两段话)

    	Be not alarmed, madam, on receiving this letter, by the apprehension of its containing any repetition of those
    sentiments or renewal of those offers which were last night so disgusting to you. I write without any intention of
    paining you, or humbling myself, by dwelling on wishes which, for the happiness of both, cannot be too soon
    forgotten; and the effort which the formation and the perusal of this letter must occasion, should have been spared,
    had not my character required it to be written and read. You must, therefore, pardon the freedom with which I
    demand your attention; your feelings, I know, will bestow it unwillingly, but I demand it of your justice.
    	My objections to the marriage were not merely those which I last night acknowledged to have the utmost required
    force of passion to put aside, in my own case; the want of connection could not be so great an evil to my friend as to
    me. But there were other causes of repugnance; causes which, though still existing, and existing to an equal degree
    in both instances, I had myself endeavored to forget, because they were not immediately before me. These causes
    must be stated, though briefly. The situation of your mother's family, though objectionable, was nothing in
    comparison to that total want of propriety so frequently, so almost uniformly betrayed by herself, by your three
    younger sisters, and occasionally even by your father. Pardon me. It pains me to offend you. But amidst your
    concern for the defects of your nearest relations, and your displeasure at this representation of them, let it give you
    consolation to consider that, to have conducted yourselves so as to avoid any share of the like censure, is praise no
    less generally bestowed on you and your eldersister, than it is honorable to the sense and disposition of both. I will
    only say farther that from what passed that evening, my opinion of all parties was confirmed, and every inducement
    heightened which could have led me before, to preserve my friend from what I esteemed a most unhappy
    connection. He left Netherfield for London, on the day following, as you, I am certain, remember, with the design of
    soon returning.
    

    将word.txt上传到HDFS的/test/input文件夹中

    ./bin/hdfs dfs -put ~/word.txt /test/input
    

    运行一个mapreduce的例子程序:wordcount

    ./bin/hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /test/input /test/output
    

    执行成功后如下所示,输出相关信息:
    在这里插入图片描述
    在YARN Web界面也可以查看:
    在这里插入图片描述
    查看运行结果:

    ./bin/hdfs dfs -cat /test/output/*
    

    在这里插入图片描述
    由于只是进行词频统计,我没有对测试数据进行其他处理,所以有些单词会带逗号,这些都是小事,重点是,Hadoop集群搭建起来了,还能跑,这就舒服了,嘻嘻嘻嘻嘻嘻。

    10 关闭集群

    接下来就是关闭集群,输入以下命令:

    cd /usr/local/hadoop
    ./sbin/stop-yarn.sh
    ./sbin/stop-dfs.sh
    ./sbin/mr-jobhistory-daemon.sh stop historyserver
    
    展开全文
  • hadoop集群搭建

    2018-12-04 19:24:30
    大数据hadoop单机集群搭建的详细步骤及图片文字说明;三台虚拟机的单机系统
  • hadoop集群搭建教程

    2018-03-07 10:37:48
    在虚拟机上面搭建hdfs 集群亲测可用 记得 修改ip地址就行
  • Hadoop集群搭建及测试

    千次阅读 2022-03-21 10:51:36
    Hadoop集群搭建以及测试,Hadoop分发脚本,群起/停脚本。
  • 该文件是:Hadoop集群搭建详细简明教程,简单明了,易于上手。
  • Hadoop集群搭建笔记

    2018-04-20 08:45:39
    非常详细的linux上的hadoop集群搭建文档,可供参考,希望大家能够从中获益
  • 大数据技术基础实验报告-Linux环境下hadoop集群搭建与基本配置
  • hadoop集群搭建文档

    2018-01-15 14:43:32
    hadoop集群搭建文档,欢迎您下载使用欢迎您下载使用欢迎您下载使用欢迎您下载使用欢迎您下载使用
  • 基于docker的hadoop集群搭建

    千次阅读 2022-03-06 18:08:26
    明确了HDFS(Hadoop Distribute File System 分布式存储)、mapReduce(分布式计算)、YARN(Yet Another Resource Negotiator资源管理)是hadoop的三大组成部分,要想使用hdfs,必须搭建hadoop集群,为此展开了近一...
  • hadoop集群搭建(超详细版)

    千次阅读 2022-04-03 13:00:06
    用adduser新建用户并设置密码 将新建的hadoop用户添加到hadoop用户组 前面hadoop指的是用户组名,后一个指的是用户名 赋予hadoop用户root权限 12.3 安装hadoop并配置环境变量 由于hadoop集群需要在每一个节点上进行...
  • Hadoop集群搭建(详细简单粗暴)

    千次阅读 2022-03-30 22:06:50
    hadoop集群搭建 hadoop jdk
  • 本人亲手操作搭建Hadoop集群成功,并通过Eclipse进行MapReduce程序的开发,步骤详细完整,在相关过程中配有完整代码和解释,全程无误,只需复制粘贴即可,小白新手按步骤一步一步来也能搭建Hadoop集群成功并进行...
  • 非常详细的hadoop集群搭建教程,包含SSH免密码登录,基本上按照教程上一步一步操作就能搭建成功,非常适合大数据初学者使用
  • Hadoop集群搭建教程---超简单

    千次阅读 2022-04-20 15:11:35
    1.1 Hadoop常用: 1.检查状态:hadoop fsck / 1.2 Linux常用: 1.排除端口查看netsh interface ipv4 show excludedportrange protocol=tcp 1.2 基础环境准备 1.2.1 创建基础的centos7镜像 拉取官方centos7镜像 ...
  • hadoop集群搭建出现的一些问题总结

    千次阅读 2022-03-25 16:15:32
    hadoop集群搭建出现的一些问题总结

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 90,359
精华内容 36,143
关键字:

hadoop集群搭建

友情链接: BCM5357C0.rar