文章目录


前言

本文介绍了如何安装和配置Hadoop,一个用于分布式存储和处理大规模数据的开源框架。通过按照本文提供的步骤,您可以在自己的机器上搭建一个Hadoop伪集群,并通过浏览器访问Hadoop的管理页面。本文详细介绍了安装准备、安装JDK、安装Hadoop、修改配置文件、格式化文件系统以及启动Hadoop的步骤。


一、相关介绍

1. 配置文件位置

1.1 只读默认配置文件

hadoop的只读默认配置文件位于安装目录下share/doc/hadoop/hadoop-project-dist/hadoop-common目录。包括以下默认配置文件:

  • share/doc/hadoop/hadoop-project-dist/hadoop-common/core-default.xml
  • share/doc/hadoop/hadoop-project-dist/hadoop-common/hdfs-default.xml
  • share/doc/hadoop/hadoop-project-dist/hadoop-common/yarn-default.xml
  • share/doc/hadoop/hadoop-project-dist/hadoop-common/mapred-default.xml

1.2 可修改配置文件

hadoop的可修改配置文件位于安装目录下etc/hadoop目录。包括以下可修改配置文件:

  • etc/hadoop/core-site.xml
  • etc/hadoop/hdfs-site.xml
  • etc/hadoop/yarn-site.xml
  • etc/hadoop/mapred-site.xml

这些配置文件的配置会覆盖默认配置文件的配置。

1.3 相关环境变量配置文件

hadoop的相关环境变量配置文件位于安装目录下etc/hadoop目录。包括以下相关环境变量配置文件:

  • etc/hadoop/hadoop-env.sh
  • etc/hadoop/mapred-env.sh
  • etc/hadoop/yarn-env.sh

二、安装准备

1. 准备centos

准备三台centos,我准备的如下。

修改/etc/hosts文件,配置主机名映射为ip地址。
hadoop101、hadoop102、hadoop103节点都要执行。

echo >> /etc/hosts
echo '192.168.198.101 hadoop101' >> /etc/hosts
echo '192.168.198.102 hadoop102' >> /etc/hosts
echo '192.168.198.103 hadoop103' >> /etc/hosts

2. 配置集群免密登录

hadoop101节点执行。

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
ssh-copy-id 192.168.198.102
ssh-copy-id 192.168.198.103

hadoop102节点执行。

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
ssh-copy-id 192.168.198.101
ssh-copy-id 192.168.198.103

hadoop103节点执行。

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
ssh-copy-id 192.168.198.101
ssh-copy-id 192.168.198.102

3. 部署规划

4. 安装条件

  • jdk版本:1.8+

5. 安装jdk

hadoop101、hadoop102、hadoop103节点都要执行。

下载地址:https://www.oracle.com/java/technologies/downloads/#java8

下载后上传到/tmp目录下。

然后执行下面命令,用于创建目录、解压,并设置系统级环境变量。

mkdir -p /opt/module
tar -zxvf /tmp/jdk-8u391-linux-x64.tar.gz -C /opt/module/
echo >> /etc/profile
echo '#JAVA_HOME' >> /etc/profile
echo "export JAVA_HOME=/opt/module/jdk1.8.0_391" >> /etc/profile
echo 'export PATH=$PATH:$JAVA_HOME/bin' >> /etc/profile
source /etc/profile

三、安装hadoop

1. 下载并解压hadoop

hadoop101、hadoop102、hadoop103节点都要执行。

wget --no-check-certificate https://archive.apache.org/dist/hadoop/common/hadoop-3.0.0/hadoop-3.0.0.tar.gz -P /tmp
mkdir -p /opt/soft/hadoop
tar -zxvf /tmp/hadoop-3.0.0.tar.gz -C /opt/soft/hadoop

2. 设置环境变量

2.1 设置hadoop安装目录环境变量

设置hadoop系统级环境变量,并加载环境变量。

hadoop101、hadoop102、hadoop103节点都要执行。

echo >> /etc/profile
echo '#HADOOP_HOME' >> /etc/profile
echo "export HADOOP_HOME=/opt/soft/hadoop/hadoop-3.0.0" >> /etc/profile
echo 'export PATH=$PATH:$HADOOP_HOME/bin' >> /etc/profile
echo 'export PATH=$PATH:$HADOOP_HOME/sbin' >> /etc/profile
echo 'export HADOOP_LOG_DIR=$PATH:$HADOOP_HOME/logs' >> /etc/profile
source /etc/profile

2.2 设置hadoop的root用户环境变量

hadoop通常不建议以root用户身份来启动服务,因为这可能会导致安全漏洞。如果以root用户启动hadoop就会报错,设置hadoop的root用户环境变量后,就可以用root用户启动hadoop。

hadoop101、hadoop102、hadoop103节点都要执行。

echo >> /etc/profile
echo 'export HDFS_NAMENODE_USER=root' >> /etc/profile
echo 'export HDFS_DATANODE_USER=root' >> /etc/profile
echo 'export HDFS_SECONDARYNAMENODE_USER=root' >> /etc/profile
echo 'export YARN_RESOURCEMANAGER_USER=root' >> /etc/profile
echo 'export YARN_NODEMANAGER_USER=root' >> /etc/profile
source /etc/profile

3. 修改配置文件

hadoop101节点执行。

3.1 修改 etc/hadoop/hadoop-env.sh 文件

修改 etc/hadoop/hadoop-env.sh 文件,设置Java环境变量。

cd /opt/soft/hadoop/hadoop-3.0.0
sed -i "s|^# export JAVA_HOME=.*|export JAVA_HOME=/opt/module/jdk1.8.0_391|" "etc/hadoop/hadoop-env.sh"
sed -i "s|^export JAVA_HOME=.*|export JAVA_HOME=/opt/module/jdk1.8.0_391|" "etc/hadoop/hadoop-env.sh"

3.2 修改 etc/hadoop/core-site.xml 文件

修改 /opt/soft/hadoop/hadoop-3.0.0/etc/hadoop/core-site.xml 文件。内容如下所示。

<configuration>
    <!--NameNode URI-->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop101:8020</value>
    </property>
    <!--在SequenceFiles中使用的读写缓冲区的大小。-->
    <property>
        <name>io.file.buffer.size</name>
        <value>131072</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/soft/hadoop/hadoop-3.0.0/hadoop-tmp-data</value>
    </property>
    <property>
        <name>hadoop.proxyuser.root.hosts</name>
        <value>*</value>
    </property>
    <property>
        <name>hadoop.proxyuser.root.users</name>
        <value>*</value>
    </property>
</configuration>

3.3 修改 etc/hadoop/hdfs-site.xml 文件

修改 /opt/soft/hadoop/hadoop-3.0.0/etc/hadoop/hdfs-site.xml 文件。内容如下所示。

<configuration>
    <property>
        <name>dfs.namenode.http-address</name>
        <value>hadoop101:9870</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop102:9868</value>
    </property>
    <!--用于启用或禁用Hadoop文件系统(HDFS)的权限控制功能-->
    <property>
        <name>dfs.permissions.enabled</name>
        <value>false</value>
    </property>
    <!--设置 HDFS 中数据块的副本数-->
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <!--本地文件系统上的路径,NameNode 在其中永久存储命名空间和事务日志。如果这是以逗号分隔的目录列表,则名称表将复制到所有目录中,以实现冗余。-->
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/opt/hadoop/namenode</value>
    </property>
    <!--允许/排除的数据节点列表。如有必要,请使用这些文件来控制允许的数据节点列表。-->
    <property>
        <name>dfs.hosts</name>
        <!--<name>dfs.hosts.exclude</name>-->
        <value>hadoop101,hadoop102,hadoop103</value>
    </property>
    <!--HDFS 块大小为 256MB,适用于大型文件系统。-->
    <property>
        <name>dfs.blocksize</name>
        <value>268435456</value>
    </property>
    <!--更多的 NameNode 服务器线程来处理来自大量 DataNode 的 RPC。-->
    <property>
        <name>dfs.namenode.handler.count</name>
        <value>100</value>
    </property>
    <!--DataNode 的本地文件系统上应存储其块的路径列表,以逗号分隔。	如果这是以逗号分隔的目录列表,则数据将存储在所有命名目录中,通常存储在不同的设备上。-->
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/opt/soft/hadoop/hadoop-3.0.0/datanode-data</value>
    </property>
</configuration>

3.4 修改 etc/hadoop/mapred-site.xml 文件

修改 /opt/soft/hadoop/hadoop-3.0.0/etc/hadoop/mapred-site.xml 文件。内容如下所示。

<configuration>
    <!--执行框架设置为 Hadoop YARN。-->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <!--map的最大资源限制。-->
    <property>
        <name>mapreduce.map.memory.mb</name>
        <value>1536</value>
    </property>
    <!--map的子 jvm 的堆最大大小。-->
    <property>
        <name>mapreduce.map.java.opts</name>
        <value>-Xmx1024M</value>
    </property>
    <!--reduce的最大资源限制。-->
    <property>
        <name>mapreduce.reduce.memory.mb</name>
        <value>3072</value>
    </property>
    <!--reduce的子 jvm 的堆最大大小。-->
    <property>
        <name>mapreduce.reduce.java.opts</name>
        <value>-Xmx2560M</value>
    </property>
    <!--在对数据进行排序以提高效率时具有更高的内存限制。-->
    <property>
        <name>mapreduce.task.io.sort.mb</name>
        <value>512</value>
    </property>
    <!--对文件进行排序时,一次合并了更多流。-->
    <property>
        <name>mapreduce.task.io.sort.factor</name>
        <value>100</value>
    </property>
    <!--运行的并行副本数量越多,就会减少从大量映射中获取输出。-->
    <property>
        <name>mapreduce.reduce.shuffle.parallelcopies</name>
        <value>50</value>
    </property>
    <!--MapReduce 工作历史服务器 host:port-->
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>hadoop102:10020</value>
    </property>
    <!--MapReduce 工作历史服务器 Web UI host:port-->
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>hadoop102:19888</value>
    </property>
    <!--MapReduce作业写入历史文件的目录。-->
    <property>
        <name>mapreduce.jobhistory.intermediate-done-dir</name>
        <value>/opt/soft/hadoop/hadoop-3.0.0/mr-history/tmp</value>
    </property>
    <!--MR JobHistory Server 管理历史文件的目录。-->
    <property>
        <name>mapreduce.jobhistory.done-dir</name>
        <value>/opt/soft/hadoop/hadoop-3.0.0/mr-history/done</value>
    </property>
</configuration>

3.5 修改 etc/hadoop/yarn-site.xml 文件

修改 /opt/soft/hadoop/hadoop-3.0.0/etc/hadoop/yarn-site.xml 文件。内容如下所示。

<configuration>
    <!--启用 ACL?默认值为 false。-->
    <property>
        <name>yarn.acl.enable</name>
        <value>false</value>
    </property>
    <!--管理 ACL。ACL 用于在群集上设置管理员。ACL 用于逗号分隔用户空间逗号分隔组。默认为特殊值 *,表示任何人。空间的特殊价值意味着没有人可以访问。-->
<!--    <property>-->
<!--        <name>yarn.admin.acl</name>-->
<!--        <value>*</value>-->
<!--    </property>-->
    <!--用于启用或禁用日志聚合的配置-->
    <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>
    <!--设置日志聚集服务器地址-->
    <property>
        <name>yarn.log.server.url</name>
        <value>http://hadoop103:19888/jobhistory/logs</value>
    </property>
    <!--设置日志保留时间为7天,在删除聚合日志之前要保留聚合日志多长时间。-1 禁用。请注意,将其设置得太小,将向名称节点发送垃圾邮件。-->
    <property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>604800</value>
    </property>
    <!--ResourceManager host:port,用于客户端提交作业。-->
<!--    <property>-->
<!--        <name>yarn.resourcemanager.address</name>-->
<!--        <value>hadoop103:8088</value>-->
<!--    </property>-->
    <!--ResourceManager host:port,用于 ApplicationMasters 与 Scheduler 通信以获取资源。-->
<!--    <property>-->
<!--        <name>yarn.resourcemanager.scheduler.address</name>-->
<!--        <value></value>-->
<!--    </property>-->
    <!--ResourceManager host:port 用于 NodeManager。-->
<!--    <property>-->
<!--        <name>yarn.resourcemanager.resource-tracker.address</name>-->
<!--        <value></value>-->
<!--    </property>-->
    <!--ResourceManager host:port,用于管理命令。-->
<!--    <property>-->
<!--        <name>yarn.resourcemanager.admin.address</name>-->
<!--        <value></value>-->
<!--    </property>-->
    <!--ResourceManager web-ui host:port。-->
<!--    <property>-->
<!--        <name>yarn.resourcemanager.webapp.address</name>-->
<!--        <value></value>-->
<!--    </property>-->
    <!--ResourceManager 主机。-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop103</value>
    </property>
    <!--资源管理器调度程序类。-->
    <property>
        <name>yarn.resourcemanager.scheduler.class</name>
        <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
    </property>
    <!--在资源管理器中分配给每个容器请求的最小内存限制。-->
<!--    <property>-->
<!--        <name>yarn.scheduler.minimum-allocation-mb</name>-->
<!--        <value></value>-->
<!--    </property>-->
    <!--要分配给资源管理器中每个容器请求的最大内存限制。-->
<!--    <property>-->
<!--        <name>yarn.scheduler.maximum-allocation-mb</name>-->
<!--        <value></value>-->
<!--    </property>-->
    <!--允许/排除的 NodeManager 列表。-->
<!--    <property>-->
        <!--<name>yarn.resourcemanager.nodes.exclude-path</name>-->
<!--        <name>yarn.resourcemanager.nodes.include-path</name>-->
<!--        <value></value>-->
<!--    </property>-->
    <!--设置YARN NodeManager的辅助服务。用于在Map和Reduce任务之间传输数据。-->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <!--设置允许传递给YARN NodeManager的环境变量白名单。-->
    <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>

3.6 修改 etc/hadoop/workers 文件

修改 /opt/soft/hadoop/hadoop-3.0.0/etc/hadoop/workers 文件。内容如下所示。

hadoop101
hadoop102
hadoop103

3.7 同步配置

把上面设置的配置文件同步到hadoop102hadoop103节点。

scp -r /opt/soft/hadoop/hadoop-3.0.0/etc/hadoop hadoop102:/opt/soft/hadoop/hadoop-3.0.0/etc
scp -r /opt/soft/hadoop/hadoop-3.0.0/etc/hadoop hadoop103:/opt/soft/hadoop/hadoop-3.0.0/etc

4. 格式化文件系统

hadoop101节点执行。

hdfs namenode -format

5. 启动hadoop

hadoop101节点启动hdfs。

cd /opt/soft/hadoop/hadoop-3.0.0/sbin
./start-dfs.sh

hadoop103节点启动yarn。

cd /opt/soft/hadoop/hadoop-3.0.0/sbin
./start-yarn.sh

6. 浏览器访问

浏览器访问地址 http://192.168.198.101:9870 即可进入 NameNode页面。如下图所示。

hadoop集群部署教程-LMLPHP

浏览器访问地址 http://192.168.198.102:9868 即可进入 SecondaryNameNode页面。如下图所示。

hadoop集群部署教程-LMLPHP

浏览器访问地址 http://192.168.198.103:8088 即可进入 yarn 页面。如下图所示。

hadoop集群部署教程-LMLPHP


四、hadoop集群命令

1. 启停命令

1.1 启停 hdfs

cd /opt/soft/hadoop/hadoop-3.0.0/sbin
./start-dfs.sh
./stop-dfs.sh

1.2 启停 yarn

cd /opt/soft/hadoop/hadoop-3.0.0/sbin
./start-yarn.sh
./stop-yarn.sh

总结

通过本文的指导,您已经学会了如何安装和配置Hadoop,并搭建了一个Hadoop伪集群。Hadoop是一个强大的工具,可以帮助您存储和处理大规模的数据。您可以进一步探索Hadoop的功能和特性,以满足您的数据处理需求。

希望本教程对您有所帮助!如有任何疑问或问题,请随时在评论区留言。感谢阅读!

参考链接:

03-10 11:51