当前位置 : 主页 > 操作系统 > centos >

centos6.8下hadoop3.1.1完全分布式安装指南(推荐)

来源:互联网 收集:自由互联 发布时间:2023-07-28
CentOS 6.8下Hadoop 3.1.1完全分布式安装指南简介 本指南将带领您在CentOS 6.8操作系统下完成一个完全分布式的Hadoop 3.1.1集群安装。Hadoop是一种开源的分布式计算平台,可在一个集群中处理大
CentOS 6.8下Hadoop 3.1.1完全分布式安装指南 简介

本指南将带领您在CentOS 6.8操作系统下完成一个完全分布式的Hadoop 3.1.1集群安装。Hadoop是一种开源的分布式计算平台,可在一个集群中处理大量数据。本指南将提供全面的步骤和示例,帮助您部署适合您的Hadoop集群。

步骤 Step 1:系统环境准备

为了安装和运行Hadoop,我们需要安装并配置一些必需的软件和系统环境变量。

# 安装Java环境
yum install java-1.8.0-openjdk-devel -y

# 安装必要的依赖项
yum install rsync -y
yum install wget -y 

# 设置JAVA_HOME环境变量
echo "export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk" >> ~/.bashrc
source ~/.bashrc
Step 2:下载并解压Hadoop
# 进入指定目录,例如/opt
cd /opt

# 下载Hadoop 3.1.1
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.1.1/hadoop-3.1.1.tar.gz

# 解压安装包
tar xzf hadoop-3.1.1.tar.gz
Step 3:配置Hadoop

接下来,我们需要在所有节点上配置Hadoop,以便它们在一个集群中正常运行。下面列出了Hadoop的主要配置文件:

  • $HADOOP_HOME/etc/hadoop/hadoop-env.sh – Hadoop环境变量设置。
  • $HADOOP_HOME/etc/hadoop/core-site.xml – 在Hadoop中定义的常规配置项,如默认文件系统,以及通信端口号。
  • $HADOOP_HOME/etc/hadoop/hdfs-site.xml – Hadoop分布式文件系统(HDFS)的配置项。
  • $HADOOP_HOME/etc/hadoop/mapred-site.xml – MapReduce配置项,如执行器内存大小,排序设置等。
  • $HADOOP_HOME/etc/hadoop/yarn-site.xml – YARN配置项,如NodeManager和ResourceManager的端口号等.

以下是在所有节点上的所有配置文件的示例:

3.1. hadoop-env.sh
# 配置JAVA_HOME
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk

# 配置Hadoop日志目录
export HADOOP_LOG_DIR=${HADOOP_HOME}/logs

# 配置YARN_LOG_DIR日志目录
export YARN_LOG_DIR=${HADOOP_HOME}/logs
3.2. core-site.xml
<configuration>
   <property>
      <name>fs.default.name</name>
      <value>hdfs://localhost:8020</value>
   </property>
   <property>
      <name>io.file.buffer.size</name>
      <value>131072</value>
   </property>
</configuration>
3.3. hdfs-site.xml
<configuration>
   <property>
      <name>dfs.replication</name>
      <value>3</value>
   </property>
   <property>
      <name>dfs.namenode.name.dir</name>
      <value>file:/usr/local/hadoop/dfs/name</value>
   </property>
   <property>
      <name>dfs.datanode.data.dir</name>
      <value>file:/usr/local/hadoop/dfs/data</value>
   </property>
   <property>
      <name>dfs.namenode.secondary.http-address</name>
      <value>localhost:9001</value>
   </property>
</configuration>
3.4. mapred-site.xml
<configuration>
   <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
   </property>
   <property>
      <name>mapred.reduce.tasks</name>
      <value>1</value>
   </property>
   <property>
      <name>mapred.child.java.opts</name>
      <value>-Xmx2048m</value>
   </property>
</configuration>
3.5. 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.hostname</name>
      <value>localhost</value>
   </property>
</configuration>
Step 4:创建Hadoop用户以及日志目录
# 创建一个Hadoop用户组
sudo groupadd hadoop

# 然后创建一个Hadoop用户并将其添加到Hadoop用户组中
sudo useradd -d /usr/local/hadoop -g hadoop -m hadoop

# 更改大部分Hadoop文件的所有权
sudo chown -R hadoop:hadoop /opt/hadoop-3.1.1/

# 创建Hadoop的日志目录
sudo mkdir -p /usr/local/hadoop/logs
sudo chown -R hadoop:hadoop /usr/local/hadoop/logs
Step 5:启动Hadoop
# 切换到Hadoop用户
su - hadoop

# 初始化HDFS
hdfs namenode -format

# 启动Hadoop集群
start-all.sh

# 向HDFS中上传文件
hadoop fs -mkdir /input
hadoop fs -put /etc/hadoop/* /input

# 检查Hadoop集群
jps
示例 示例1:WordCount示例

WordCount示例是一个流行的Hadoop MapReduce示例,它在所提供的文本文件中计算单词出现的频率。我们将创建并运行此示例。

自由互联热门推荐:PDF电子发票识别软件,一键识别电子发票并导入到Excel中!10大顶级数据挖掘软件!人工智能的十大作用!

Step 1:编写MapReduce程序。
from __future__ import print_function
import sys
from operator import add
from pyspark.sql import SparkSession

if __name__ == "__main__":
    spark = SparkSession\
        .builder\
        .appName("PythonWordCount")\
        .getOrCreate()

    lines = spark.read.text(sys.argv[1]).rdd.map(lambda r: r[0])
    counts = lines.flatMap(lambda x: x.split(' ')) \
                  .map(lambda x: (x, 1)) \
                  .reduceByKey(add)
    output = counts.collect()
    for (word, count) in output:
        print("%s: %i" % (word, count))

    spark.stop()
Step 2:使用mvn安装jar包。
cd $HADOOP_HOME/share/hadoop/mapreduce/
mvn package
Step 3:编写脚本执行WordCount示例。
$HADOOP_HOME/bin/hadoop fs -rm -r /output
$HADOOP_HOME/bin/hadoop jar target/hadoop-mapreduce-examples-3.1.1.jar wordcount /input /output
示例2:使用Hive查询HDFS中存储的数据

安装和配置Hive后,您可以查询HDFS中存储的数据。以下是如何将数据导入Hive:

Step 1:将数据从本地拷贝到HDFS
# 将本地目录下的所有文件复制到HDFS的/tmp目录下
hadoop fs -put /path/to/local/files/* /tmp/
Step 2:创建一张Hive表并导入数据
CREATE EXTERNAL TABLE if not exists word_count (word STRING, count INT)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION '/tmp/';

LOAD DATA INPATH '/tmp/*' INTO TABLE word_count;
Step 3:使用Hive分析数据
SELECT word, SUM(count) FROM word_count GROUP BY word ORDER BY SUM(count) DESC LIMIT 10;
结论

通过本文提供的步骤和示例,您现在应该拥有一个完全分布式的Hadoop 3.1.1集群。Hadoop平台可用于许多应用程序,例如数据分析、机器学习和网页搜索。基于Hadoop的应用程序开发正在成为一个热门领域,是在今天的大数据时代中实现业务需求的绝佳途径。

【本文来源:美国服务器 http://www.558idc.com/mg.html提供,感恩】
网友评论