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示例,它在所提供的文本文件中计算单词出现的频率。我们将创建并运行此示例。
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的应用程序开发正在成为一个热门领域,是在今天的大数据时代中实现业务需求的绝佳途径。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:centos6.8下hadoop3.1.1完全分布式安装指南(推荐) - Python技术站