hadoop集群搭建

  一、Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统( Distributed File System),其中一个组件是HDFS(Hadoop Distributed File System)。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。Hadoop的框架最核心的设计就是:HDFSMapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算 [1]  。

  二、hadoop下载地址(这里使用的是hadoop3.1.3的版本):

  https://archive.apache.org/dist/hadoop/common/hadoop-3.1.3/hadoop-3.1.3.tar.gz

  三、集群搭建步骤

  1、准备3台机器,可以使用虚拟机,我这里使用的为VMware16以及centos7.6版本

  2、修改3台机器IP分别为:192.168.5.101/102/103(红色为修改部分)

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="d2df14d6-3636-4460-ba08-184fda131530"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.5.101/102/103"
NETMASK="255.255.255.0"
GATEWAY="192.168.5.2"

  3、修改hostname为hadoop101/102/103

vi /etc/hostname

  

   4、在hosts中加入地址和hadoop101/102/103的映射

  

   5、安装JDK

  参考:https://www.cnblogs.com/ll409546297/p/6993936.html

  6、hadoop环境搭建

  1)将hadoop-3.1.3.tar.gz复制到/opt目录下

  2)解压:

tar -zxvf hadoop-3.1.3.tar.gz

  3)配置环境

vi /etc/profile

  加入:

# set hadoop
export HADOOP_HOME=/opt/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin

  7、SSH 无密钥访问(一定要加上自己)

ssh-keygen -t rsa
ssh-copy-id hadoop101/102/103

  8、集群配置

  1)集群配置结果

    hadoop101nameNode,dataNode,nodeManager

    hadoop102dataNode,resourceManager,nodeManager

    hadoop103secondaryNameNode,dataNode,nodeManager

  2)修改配置:core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml

  默认文件地址:

  $HADOOP_HOME/share/doc/hadoop/hadoop-project-dist/hadoop-common/core-default.xml

  $HADOOP_HOME/share/doc/hadoop/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml

  $HADOOP_HOME/share/doc/hadoop/hadoop-yarn/hadoop-yarn-common/yarn-default.xml

  $HADOOP_HOME/share/doc/hadoop/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml

  修改目目标地址:$HADOOP_HOME/etc/hadoop

  a、core-site.xml

<configuration>
    <!-- nameNode地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop101:8020</value>
    </property>
    <!-- 数据存放地址 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/hadoop-3.1.3/data</value>
    </property>
    <!-- 页面可操作用户 -->
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>root</value>
    </property>
</configuration>

  b、hdfs-site.xml

<configuration>
    <!-- web访问地址 -->
    <property>
        <name>dfs.namenode.http-address</name>
        <value>hadoop101:9870</value>
    </property>
    <!-- 2nn web地址 -->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop103:9868</value>
    </property>
</configuration>

  c、yarn-site.xml

<configuration>
    <!-- 指定MR走shuffle -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <!-- 指定resourceManager -->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop102</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://hadoop101:19888/jobhistory/logs</value>
    </property>
    <!-- 日志保存天数(7天) -->
    <property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>604800</value>
    </property>
</configuration>

  d、mapred-site.xml

<configuration>
    <!-- 走yarn -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <!-- 历史服务器地址 -->
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>hadoop101:10020</value>
    </property>
    <!-- 历史WEB界面地址 -->
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>hadoop101:19888</value>
    </property>
</configuration>

  e、修改works

  

  f、同步以上文件到其他节点方式(rsync更快)

scp -r $dir/$file $user@$host:$targetDir/$targetFile

  or

rsync -av  $dir/$file $user@$host:$targetDir/$targetFile

  9、启动集群(出现错误删除data和logs)

  1)第一次启动:在hadoop101上面执行

hdfs namenode -format

  2)启动和停止:脚本在$HADOOP_HOME/sbin

  hadoop101:start-dfs.sh/stop-dfs.sh (HDFS)

  hadoop102:start-yarn.sh/stop-yarn.sh (YARN)

  hadoop101:mr-jobhistory-daemon.sh start/stop historyserver(HISTORY-SERVER)

  root启动:

  在start-dfs.sh/stop-dfs.sh中加入:

HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

  在start-yarn.sh/stop-yarn.sh中加入:

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

  3)如果出现启动JAVA_HOME错误

  

   添加:$HADOOP_HOME/etc/hadoop/hadoop-env.sh

export JAVA_HOME=/usr/local/jdk1.8.0_202

  4)启动后查看页面是否正常

  hadoop101:

  

   hadoop102:

  

   hadoop103:

  

  hdfs:http://192.168.5.101:9870/

  yarn:http://192.168.5.103:8088

  history:http://192.168.5.101:19888/

  

  

   

  10、测试

  1)创建word.txt文件加入数据

  

   2)建立和上传目录

# hadoop fs -mkdir /input
# hadoop fs -put /opt/word.txt /input

  

 

 

   3)执行测试

# hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output

  hdfs:

  

 

 

 

  yarn:

  

   history-log:

   

   四、总结:整个集群搭建步骤基本就如上面所示了,细节很多,需要用心体会

posted @ 2022-04-27 16:59  小不点丶  阅读(213)  评论(0编辑  收藏  举报