Hadoop知识点(20202-5-6)

  • 1.概述
  • 1.1软连接
  • 2.hdfs安装
  • 2.1SSH免密登录
  • 2.2Hadoop完全分布式安装
  • 2.3节点管理


1.概述

广义:以Apache hadoop软件为主的生态圈,也包含hive,sqoop,hbase,kafka,spark,flink
狭义:以Apache hadoop软件
Hadoop包括三个部分:

hdfs:用于存储
mapreduce:用于计算
yarn:用于资源和任务的调度
---------------------
大数据平台中,计算和存储是相辅相成的,但是存储却是第一位的。

安装方式说明:

Local Mode(Standalone) 本地单机模式
Pseudo-Distributed Mode 伪分布式模式
Fully-Distributed Mode 分布式模式 集群安装

1.1软连接

相当于win中的快捷方式
电脑中多个磁盘可能需要相同的文件,但是该文件很大,不可能多个磁盘中都存放该文件,所有将该文件放置到一个固定的地方,然后在其他需要的地方建立软连接,这样,每个需要的地方都可以使用该文件。

ln -s [源文件或目录] [目标文件或目录]
如:
ln -s /usr/local/ /data  #将local下的软件在data下建立软连接,这样,local下可以使用,data下也可以使用

2.hdfs安装

前提条件:

安装jdk
进行集群免密设置

2.1SSH免密登录

hostname  #查看主机名
配合秘钥   #这里是所有的主机都要进行执行
ssh-keygen -t rsa  #一直按回车

ssh-copy-id root@data001   #输入:yes 密码:XXX
ssh-copy-id root@data002
ssh-copy-id root@data003

2.2Hadoop完全分布式安装

tar -zvxf hadoop-2.7.6.tar.gz -C /usr/local
cd /usr/local/
mv hadoop-2.7.6 hadoop   #修改文件名

cd /usr/local/hadoop
./bin/hadoop version    #查看hadoop版本信息

cd         #一定要回到根目录下
vi /etc/profile  #修改系统环境变量配合===这个环境配置需要所以节点都要进行配置,后面hadoop的复制可以先安装第一台主机以后再进行复制
------------------------------------------------------
#hadoop environment
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
------------------------------------------------------
source /etc/profile    #重新加载环境
hadoop version 

cd /usr/local/hadoop
mkdir tmp logs hdfs hdfs/data hdfs/name
tmp       #用于存储临时生成文件
hdfs      #存储集群数据
hdfs/data #存储真正的数据
hdfs/name #存储文件系统元数据
=================================================================
cd /usr/local/hadoop/etc/hadoop/
core-site.xml  #修改这几个文件
hdfs-site.xml
mapred-site.xml
yarn-site.xml
-------**主节点data001-**-----------------------
echo $JAVA_HOME

cd /usr/local/hadoop/etc/hadoop/   #这里可以查看绝对路径
vi hadoop-env.sh
---------------------------------------
export JAVA_HOME=/usr/java/jdk1.8.0_221   #这个是修改。而不是添加  
export HADOOP_LOG_DIR=$HADOOP_HOME/logs   #下面还有一个就是logs文件位置的修改
---------------------------------------
update-alternatives --display java         #让hadoop识别JDK

cd /usr/local/hadoop/etc/hadoop/
**vi core-site.xml**          #这个是绝对路径  vi /usr/local/hadoop/etc/hadoop/core-site.xml
-------------------------------------
<configuration>
<!--设置访问hdfs的默认名,9000是默认端口 NameNode节点的URI 包括协议,主机名,端口号-->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://data001:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/hadoop/tmp</value>
    </property>
</configuration>
-----------------------
**vi hdfs-site.xml**           #fs.defaultFS保存了NameNode的位置,HDFS和MapReduce组件都需要它
------------------------------------------
<configuration>
 <!-- secondarynamenode的http服务器地址和端口 -->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>data001:9001</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/usr/local/hadoop/hdfs/name</value>
    </property>
<!--指定namenode的web ui监控端口-->
    <property>
        <name>dfs.http-address</name>
        <value>data001:50070</value>
    </property>
<!--指定secondary的web ui监控端口-->
    <property>
        <name>dfs.secondary.http-address</name>
        <value>data001:50090</value>
    </property>

    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/usr/local/hadoop/hdfs/data</value>
    </property>
<!--默认块复制,其实就是副本数量-->
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>

    <property>
    <name>dfs.webhdfs.enabled</name>
    <value>true</value>
    </property>
<!--关闭权限效验-->
    <property>
        <name>dfs.permissions.enabled</name>
        <value>false</value>
        <description>If "true", enable permission checking in HDFS. If "false", permission checking is turned off, but all other behavior is unchanged. Switching from one parameter value to the other does not change the mode, owner or group of files or directories.</description>
    </property>
</configuration>
------------------------------------------------------------------
mv mapred-site.xml.template mapred-site.xml
**vi mapred-site.xml**
------------------------------------------------------
<configuration>

    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
        <description>The runtime framework for executing MapReduce jobs.Can be one of local, classic or yarn.</description>
    </property>
    <property>
        <name>mapreduce.jobhisotry.address</name>
        <value>data001:10020</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>data001:19888</value>
    </property>
</configuration>
------------------------------------------------------------------------
**vim yarn-site.xml**
------------------------------------------------------------
<configuration>
        <property>
               <name>yarn.nodemanager.aux-services</name>
               <value>mapreduce_shuffle</value>
        </property>
        <property>
               <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
               <value>org.apache.hadoop.mapred.ShuffleHandler</value>
        </property>
        <property>
               <name>yarn.resourcemanager.address</name>
               <value>data001:18032</value>
       </property>
       <property>
               <name>yarn.resourcemanager.scheduler.address</name>
               <value>data001:18030</value>
       </property>
       <property>
               <name>yarn.resourcemanager.resource-tracker.address</name>
               <value>data001:18031</value>
       </property>
       <property>
               <name>yarn.resourcemanager.admin.address</name>
               <value>data001:18033</value>
       </property>
       <property>
               <name>yarn.resourcemanager.webapp.address</name>
               <value>data001:18088</value>
       </property>

</configuration>
------------------------------------------------------------
vi slaves
data001
data002
data003
---------------**子节点**---------------
分发安装包
scp -r /usr/local/hadoop root@data002:/usr/local/
scp -r /usr/local/hadoop root@data003:/usr/local/
---**在主节点data001上面执行**-----------
$HADOOP_HOME/bin/hdfs namenode -format   #格式化文件系统
---------所有节点启动--------------
cd /usr/local/hadoop
./sbin/start-all.sh   #在主节点进行启动hdfs

jps #查看进程
—主节点----
19827 SecondaryNameNode
19669 DataNode
19544 NameNode
19978 ResourceManager
20091 NodeManager
----其他子节点----
19320 DataNode
19421 NodeManager

2.3节点管理

/usr/local/hadoop/sbin/stop-all.sh  关闭节点
/usr/local/hadoop/sbin/start-all.sh  打开节点