Linux学习笔记——Hadoop安装部署

5.10、大数据集群(Hadoop生态)安装部署

5.10.1、简介

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

2、主要解决:海量数据的存储和海量数据的分析计算问题。

  • Hadoop HDFS提供分布式海量数据存储能力
  • Hadoop YARN提供分布式集群资源管理能力
  • Hadoop MapReduce提供分布式海量数据计算能力

5.10.1.1、前置要求

  • 请确保完成了集群化环境前置准备章节的内容
  • 即:JDK、SSH免密、关闭防火墙、配置主机名映射等前置操作

若未完成,请点击集群化环境前置准备

5.10.1.2、Hadoop集群角色

Hadoop生态体系中总共会出现如下进程角色:

1、Hadoop HDFS的管理角色:Namenode进程(仅需一个即可(管理者一个就够))

2、Hadoop HDFS的工作角色:Datanode进程(需要多个(工人,越多越好,一个机器启动一个))

3、Hadoop YARN的管理角色:ResourceManager进程(仅需1个即可(管理者一个就够))

4、Hadoop HDFS的工作角色:NodeManager进程(需要多个(工人,越多越好,一个机器启动一个))

5、Hadoop历史记录服务器角色:HistoryServer进程(仅需1个即可(功能进程无需太多,1个足够))

6、Hadoop代理服务器角色:WebProxyServer进程(仅需1个即可(功能进程无需太多,1个足够))

7、ZooKeeper的进程:QuorumPeerMain进程(仅需1个即可(zookeeper的工作者,越多越好))

5.10.1.3、角色和节点分配

角色分配如下:

1、node1:Namenode、Datanode、ResourceManager、NodeManager、HistoryServer、WebProxyServer、QuorumPeerMain

2、node2:Datanode、NodeManager、QuorumPeerMain

3、node3:Datanode、NodeManager、QuorumPeerMain

Linux学习笔记——Hadoop安装部署_第1张图片

5.10.2、安装

5.10.2.1、调整虚拟机内存

如上图,可以看出node1承载了太多的压力。同时node2和node3也同时运行了不少程序。

为了确保集群的稳定,需要对虚拟机进行内存设置。

请在VMware中,对:

  • node1设置4GB或以上内存

    Linux学习笔记——Hadoop安装部署_第2张图片

  • node2和node3设置2GB或以上内存

大数据的软件本身就是集群化(一堆服务器)一起运行的。

现在我们在一台电脑中以多台虚拟机来模拟集群,确实会有很大的内存压力哦。

5.10.2.2、Zookeeper集群部署

ZooKeeper集群安装部署

5.10.2.3、Hadoop集群部署

1、【在node1操作】下载Hadoop安装包、解压、配置软链接

# 1. 下载
wget http://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz

# 2. 解压
# 请确保目录/export/server存在
tar -zxvf hadoop-3.3.0.tar.gz -C /export/server/

# 3. 构建软链接
ln -s /export/server/hadoop-3.3.0 /export/server/hadoop

2、【在node1操作】修改配置文件:hadoop-env.sh

Hadoop的配置文件要修改的地方很多,请细心

cd 进入到/export/server/hadoop/etc/hadoop文件夹中,配置文件都在这里

cd /export/server/hadoop/etc/hadoop

修改hadoop-env.sh文件

vim hadoop-env.sh

此文件是配置一些Hadoop用到的环境变量

这些是临时变量,在Hadoop运行时有用

如果要永久生效,需要写到/etc/profile中

# 在文件开头加入:

# 配置Java安装路径
export JAVA_HOME=/export/server/jdk
# 配置Hadoop安装路径
export HADOOP_HOME=/export/server/hadoop
# Hadoop hdfs配置文件路径
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
# Hadoop YARN配置文件路径
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
# Hadoop YARN 日志文件夹
export YARN_LOG_DIR=$HADOOP_HOME/logs/yarn
# Hadoop hdfs 日志文件夹
export HADOOP_LOG_DIR=$HADOOP_HOME/logs/hdfs

# Hadoop的使用启动用户配置
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
export YARN_PROXYSERVER_USER=root

3、【在node1操作】修改配置文件:core-site.xml

vim core-site.xml

如下,清空文件,填入如下内容






<configuration>
  <property>
    <name>fs.defaultFSname>
    <value>hdfs://node1:8020value>
    <description>description>
  property>

  <property>
    <name>io.file.buffer.sizename>
    <value>131072value>
    <description>description>
  property>
configuration>

为了能够上述内容全部粘贴至配置文件,请在文件处于可写入内容的状态下进行粘贴。

4、【在node1操作】配置:hdfs-site.xml文件







<configuration>
    <property>
        <name>dfs.datanode.data.dir.permname>
        <value>700value>
    property>

  <property>
    <name>dfs.namenode.name.dirname>
    <value>/data/nnvalue>
    <description>Path on the local filesystem where the NameNode stores the namespace and transactions logs persistently.description>
  property>

  <property>
    <name>dfs.namenode.hostsname>
    <value>node1,node2,node3value>
    <description>List of permitted DataNodes.description>
  property>

  <property>
    <name>dfs.blocksizename>
    <value>268435456value>
    <description>description>
  property>


  <property>
    <name>dfs.namenode.handler.countname>
    <value>100value>
    <description>description>
  property>

  <property>
    <name>dfs.datanode.data.dirname>
    <value>/data/dnvalue>
  property>
configuration>

5、【在node1操作】配置:mapred-env.sh文件

# 在文件的开头加入如下环境变量设置
export JAVA_HOME=/export/server/jdk
export HADOOP_JOB_HISTORYSERVER_HEAPSIZE=1000
export HADOOP_MAPRED_ROOT_LOGGER=INFO,RFA

6、【在node1操作】配置:mapred-site.xml文件







<configuration>
  <property>
    <name>mapreduce.framework.namename>
    <value>yarnvalue>
    <description>description>
  property>

  <property>
    <name>mapreduce.jobhistory.addressname>
    <value>node1:10020value>
    <description>description>
  property>


  <property>
    <name>mapreduce.jobhistory.webapp.addressname>
    <value>node1:19888value>
    <description>description>
  property>


  <property>
    <name>mapreduce.jobhistory.intermediate-done-dirname>
    <value>/data/mr-history/tmpvalue>
    <description>description>
  property>


  <property>
    <name>mapreduce.jobhistory.done-dirname>
    <value>/data/mr-history/donevalue>
    <description>description>
  property>
<property>
  <name>yarn.app.mapreduce.am.envname>
  <value>HADOOP_MAPRED_HOME=$HADOOP_HOMEvalue>
property>
<property>
  <name>mapreduce.map.envname>
  <value>HADOOP_MAPRED_HOME=$HADOOP_HOMEvalue>
property>
<property>
  <name>mapreduce.reduce.envname>
  <value>HADOOP_MAPRED_HOME=$HADOOP_HOMEvalue>
property>
configuration>

7、【在node1操作】配置:yarn-env.sh文件

# 在文件的开头加入如下环境变量设置
export JAVA_HOME=/export/server/jdk
export HADOOP_HOME=/export/server/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_LOG_DIR=$HADOOP_HOME/logs/yarn
export HADOOP_LOG_DIR=$HADOOP_HOME/logs/hdfs

8、【在node1操作】配置:yarn-site.xml文件



<configuration>


<property>
    <name>yarn.log.server.urlname>
    <value>http://node1:19888/jobhistory/logsvalue>
    <description>description>
property>

  <property>
    <name>yarn.web-proxy.addressname>
    <value>node1:8089value>
    <description>proxy server hostname and portdescription>
  property>


  <property>
    <name>yarn.log-aggregation-enablename>
    <value>truevalue>
    <description>Configuration to enable or disable log aggregationdescription>
  property>

  <property>
    <name>yarn.nodemanager.remote-app-log-dirname>
    <value>/tmp/logsvalue>
    <description>Configuration to enable or disable log aggregationdescription>
  property>



  <property>
    <name>yarn.resourcemanager.hostnamename>
    <value>node1value>
    <description>description>
  property>

  <property>
    <name>yarn.resourcemanager.scheduler.classname>
    <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairSchedulervalue>
    <description>description>
  property>

  <property>
    <name>yarn.nodemanager.local-dirsname>
    <value>/data/nm-localvalue>
    <description>Comma-separated list of paths on the local filesystem where intermediate data is written.description>
  property>


  <property>
    <name>yarn.nodemanager.log-dirsname>
    <value>/data/nm-logvalue>
    <description>Comma-separated list of paths on the local filesystem where logs are written.description>
  property>


  <property>
    <name>yarn.nodemanager.log.retain-secondsname>
    <value>10800value>
    <description>Default time (in seconds) to retain log files on the NodeManager Only applicable if log-aggregation is disabled.description>
  property>



  <property>
    <name>yarn.nodemanager.aux-servicesname>
    <value>mapreduce_shufflevalue>
    <description>Shuffle service that needs to be set for Map Reduce applications.description>
  property>
configuration>

9、【在node1操作】修改workers文件

# 全部内容如下
node1
node2
node3

10、【在node1操作】分发hadoop到其它机器

# 在node1执行
cd /export/server

# 将hadoop-3.3.0分发到node2、node3
scp -r hadoop-3.3.0 node2:`pwd`/
scp -r hadoop-3.3.0 node3:`pwd`/

11、【在node2、node3执行】

# 创建软链接
ln -s /export/server/hadoop-3.3.0 /export/server/hadoop

12、创建所需目录

  • 在node1执行:

    mkdir -p /data/nn
    mkdir -p /data/dn
    mkdir -p /data/nm-log
    mkdir -p /data/nm-local
    
  • 在node2执行:

    mkdir -p /data/dn
    mkdir -p /data/nm-log
    mkdir -p /data/nm-local
    
  • 在node3执行:

    mkdir -p /data/dn
    mkdir -p /data/nm-log
    mkdir -p /data/nm-local
    

13、配置环境变量

在node1、node2、node3修改/etc/profile

# 编辑/etc/profile
vim /etc/profile

# 在文件末尾添加如下内容
export HADOOP_HOME=/export/server/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

执行source /etc/profile生效

source /etc/profile

14、【在node1操作】格式化NameNode

hadoop namenode -format

hadoop这个命令来自于:$HADOOP_HOME/bin中的程序

由于配置了环境变量PATH,所以可以在任意位置执行hadoop命令哦

15、【在node1操作】启动hadoop的hdfs集群,在node1执行即可

start-dfs.sh

# 如需停止可以执行
stop-dfs.sh

start-dfs.sh这个命令来自于:$HADOOP_HOME/sbin中的程序

由于配置了环境变量PATH,所以可以在任意位置执行start-dfs.sh命令哦

Linux学习笔记——Hadoop安装部署_第3张图片

16、【在node1操作】启动hadoop的yarn集群,在node1执行即可

start-yarn.sh

# 如需停止可以执行
stop-yarn.sh

17、启动历史服务器

mapred --daemon start historyserver

# 如需停止将start更换为stop

18、启动web代理服务器

yarn-daemon.sh start proxyserver

# 如需停止将start更换为stop
yarn-daemon.sh stop proxyserver

5.10.2.4、验证Hadoop集群运行情况

1、在node1、node2、node3上通过jps验证进程是否都启动成功

2、验证HDFS,浏览器打开:http://node1:9870

创建文件test.txt,随意填入内容,并执行:

hadoop fs -put test.txt /test.txt

hadoop fs -cat /test.txt

Linux学习笔记——Hadoop安装部署_第4张图片

3、验证YARN,浏览器打开:http://node1:8088

执行:

# 创建文件words.txt,填入如下内容
itheima itcast hadoop
itheima hadoop hadoop
itheima itcast

# 将文件上传到HDFS中
hadoop fs -put words.txt /words.txt

# 执行如下命令验证YARN是否正常
hadoop jar /export/server/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.0.jar wordcount -Dmapred.job.queue.name=root.root /words.txt /output

你可能感兴趣的:(hadoop,linux,学习,hdfs)