Hadoop

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。

Hadoop实现了一个分布式文件系统分布式文件系统/1250388?fromModule=lemma_inlink( Distributed File System),其中一个组件是HDFS(Hadoop Distributed File System)。HDFS有高容错性容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。Hadoop的框架最核心的设计就是:HDFS、MapReduce和Yarn。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算,Yarn负责资源调度,具体架构如图所示(以三台服务器为例)。
在这里插入图片描述

1、分布式文件系统HDFS

什么是文件系统?

文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。

常见的文件系统:

FAT:常见于Windows32位系统中。

NTFS:常见于Windows64位系统中。
在这里插入图片描述
HDFS(分布式文件系统)是大数据主流的文件系统,具有高容错、分布式等特点,解决海量数据存储问题。

2、安装Hadoop3.3.0

1、设置ip

一共三台服务器,分别是192.168.132.100/101/102,同时修改hostname和hosts并实现ssh免密登录

hosts内容如下:

192.168.132.100 hadoop100
192.168.132.101 hadoop101
192.168.132.102 hadoop102

其中 hadoop100为node1,hadoop101为node2,hadoop102为node3,对应上述第二张图

2、关闭防火墙

systemctl stop firewalld

systemctl disable firewalld.service

vi /etc/selinux/config —> SELINUX=disabled (修改)

3、设置免密登录

manager节点执行ssh-keygen -t rsa 一路回车到结束,在/root/.ssh/下面会生成一个公钥文件id_rsa.pub

将公钥追加到authorized_keys
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

chmod 600 ~/.ssh/authorized_keys 修改权限
将~/.ssh从当前节点分发到其他各个节点。如:
scp -r ~/.ssh/ root@hadoop102:~/.ssh/

ssh-keygen -t rsa 
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
scp -r ~/.ssh/ root@hadoop102:~/.ssh/

注意:各个节点之间相互ssh一遍

4、时间同步

yum -y install ntp

ntp主机配置 vi /etc/ntp.conf
在这里插入图片描述
132.100节点指向aliyun,其他节点指向100节点

重新启动 ntp 服务:service ntpd restart

设置开机自启:systemctl enable ntpd.service

ntpdc -c loopinfo #查看与时间同步服务器的时间偏差

ntpq -p #查看当前同步的时间服务器

ntpstat #查看状态

定时同步crontab
crontab -e
10 * * * * /usr/sbin/ntpdate hadoop100

5、新建文件夹server、data、soft**(三台都要做)**

mkdir -p /export/server/

mkdir -p /export/data/

mkdir -p /export/soft/

6、下载安装包

下载网址:http://archive.apache.org/dist/hadoop/common/

7、配置环境变量

注意:如果centos7带了jdk,需要先卸载jdk

  • 执行 vim /etc/profile ,配置系统环境变量**(三台都要做)**
export JAVA_HOME=/usr/lib/jvm/java
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
export HADOOP_HOME=/export/server/hadoop-3.3.0
export CLASSPATH=$($HADOOP_HOME/bin/hadoop classpath):$CLASSPATH
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"

配置完 source /etc/profile加载一下

  • 配置hadoop环境变量
export JAVA_HOME=/usr/lib/jvm/java
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export HDFS_SOURCEMANAGER_USER=root
export HDFS_NAMENAODEMANAGER_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

  • 配置hadoop里的core-site.xml

    <!-- 默认文件系统的名称-->
    <!-- file://本地文件系统 hdfs://hadoop分布式文件系统 gfs://-->
    <!-- hdfs文件系统访问地址: http://hadoop100:8020-->
    <configuration>
            <property>
    	    <name>fs.defaultFS</name>
    	    <value>hdfs://hadoop100:8020</value>
            </property>
            <property>
                 <name>hadoop.tmp.dir</name>
                 <value>/export/data/hadoop-3.3.0</value>
            </property>
        <!-- 默认使用root用户-->
    	<property>
    	     <name>hadoop.http.staticuser.user</name>
    	     <value>root</value>
    	</property>
        <property>
        <name>hadoop.proxyuser.root.hosts</name>
        <value>*</value>
    	</property>
    	<property>
        	<name>hadoop.proxyuser.root.groups</name>
        	<value>*</value>
    	</property>
    </configuration>
    
  • 配置hadoop里的hdfs-site.xml

    <configuration>
        <property>
            <name>dfs.namenode.secondary.http-address</name>
            <value>node2:9868</value>
    	</property>
    </configuration>
    
  • 配置hadoop里的mapred-site.xml(最后一个property,根据自己的classpath来,查看命令hadoop classpath)

<configuration>
    <!-- MAPREDUCE程序默认运行方式。yarn集群模式 local本地模式-->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <!-- MR APP Master环境变量-->
    <property>
        <name>yarn.app.mapreduce.am.env</name>
        <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
    </property>
    <!-- MR MapTask环境变量-->
    <property>
        <name>mapreduce.map.env</name>
        <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
    </property>
    <!-- MR Reduce Task环境变量-->
    <property>
        <name>mapreduce.map.env</name>
        <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
    </property>
      <property>
         <name>mapreduce.application.classpath</name>
         <value>/export/server/hadoop-3.3.0/etc/hadoop:/export/server/hadoop-3.3.0/share/hadoop/common/lib/*:/export/server/hadoop-3.3.0/share/hadoop/common/*:/export/server/hadoop-3.3.0/share/hadoop/hdfs:/export/server/hadoop-3.3.0/share/hadoop/hdfs/lib/*:/export/server/hadoop-3.3.0/share/hadoop/hdfs/*:/export/server/hadoop-3.3.0/share/hadoop/mapreduce/*:/export/server/hadoop-3.3.0/share/hadoop/yarn:/export/server/hadoop-3.3.0/share/hadoop/yarn/lib/*:/export/server/hadoop-3.3.0/share/hadoop/yarn/*
         </value>
    </property>
</configuration>
  • 配置hadoop里的yarn-site.xml

    <configuration>
        <!-- yarn集群主角色RM运行机器 -->
        <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>node1</value>
        </property>
        <!-- NodeManager上运行的附属服务,需要配置mapreduce_shuffle,才可运行MR程序 -->
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
        <!-- 每个容器请求的最小内存资源(MB为单位) -->
        <property>
            <name>yarn.scheduler.minimum-allocation-mb</name>
            <value>128</value>
        </property>
        <!-- 每个容器请求的最大内存资源(MB为单位) -->
        <property>
            <name>yarn.scheduler.maximum-allocation-mb</name>
            <value>2048</value>
        </property>
        <!-- 容器虚拟内存与物理内存之间的比率 -->
        <property>
            <name>yarn.nodemanager.vmem-pmen-ratio</name>
            <value>4</value>
        </property>
          <property>
             <name>mapreduce.application.classpath</name>
             <value>/export/server/hadoop-3.3.0/etc/hadoop:/export/server/hadoop-3.3.0/share/hadoop/common/lib/*:/export/server/hadoop-3.3.0/share/hadoop/common/*:/export/server/hadoop-3.3.0/share/hadoop/hdfs:/export/server/hadoop-3.3.0/share/hadoop/hdfs/lib/*:/export/server/hadoop-3.3.0/share/hadoop/hdfs/*:/export/server/hadoop-3.3.0/share/hadoop/mapreduce/*:/export/server/hadoop-3.3.0/share/hadoop/yarn:/export/server/hadoop-3.3.0/share/hadoop/yarn/lib/*:/export/server/hadoop-3.3.0/share/hadoop/yarn/*
             </value>
        </property>
    </configuration>
    
  • 配置hadoop里的works

    # 配置工人,因为3个节点都是工人,所以写入其在hosts中的缩写即可
    hadoop100
    hadoop101
    hadoop102
    

8、将hadoop整体文件传送到另外两个节点

cd /export/server
chmod 777 /export/server/hadoop-3.3.0
scp -r hadoop-3.3.0 root@hadoop101:PWD$
scp -r hadoop-3.3.0 root@hadoop102:PWD$

9、启动hadoop集群,包括HDFS集群和YARN集群

start-all.sh
hadoop dfsadmin -safemode leave//关闭安全模式

10、查看每台上的进程是否正确
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
11、WebUI界面

HDFS网址:http://192.168.132.100:9870/
在这里插入图片描述
YARN网址:http://192.168.132.100:8088/

在这里插入图片描述

  • 7
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值