Hadoop 安装与配置
介绍
Hadoop是一个开源的分布式计算框架,广泛用于处理大规模数据集。它由HDFS(Hadoop分布式文件系统)和MapReduce计算模型组成。为了开始使用Hadoop,首先需要在本地或集群环境中安装和配置它。本文将逐步指导你完成Hadoop的安装与配置过程。
环境准备
在开始安装Hadoop之前,确保你的系统满足以下要求:
-
操作系统:Linux(推荐Ubuntu或CentOS)或 macOS。
-
Java:Hadoop需要Java 8或更高版本。可以通过以下命令检查Java版本:
bashjava -version
如果未安装Java,可以使用以下命令安装:
bashsudo apt-get install openjdk-8-jdk
-
SSH:Hadoop使用SSH进行节点间的通信。确保SSH已安装并配置无密码登录:
bashsudo apt-get install ssh
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys
下载与安装Hadoop
-
下载Hadoop:访问Hadoop官网下载最新稳定版本的Hadoop。本文以Hadoop 3.3.1为例。
bashwget https://downloads.apache.org/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz
-
解压Hadoop:将下载的压缩包解压到指定目录。
bashtar -xzvf hadoop-3.3.1.tar.gz -C /usr/local/
-
设置环境变量:编辑
~/.bashrc
文件,添加Hadoop的环境变量。bashexport HADOOP_HOME=/usr/local/hadoop-3.3.1
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin然后使环境变量生效:
bashsource ~/.bashrc
配置Hadoop
Hadoop的配置文件位于$HADOOP_HOME/etc/hadoop/
目录下。以下是几个关键配置文件的修改:
-
hadoop-env.sh:设置Java环境变量。
bashexport JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
-
core-site.xml:配置HDFS的默认文件系统。
xml<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration> -
hdfs-site.xml:配置HDFS的副本数和数据存储目录。
xml<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/hadoop-3.3.1/data/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/hadoop-3.3.1/data/datanode</value>
</property>
</configuration> -
mapred-site.xml:配置MapReduce框架。
xml<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration> -
yarn-site.xml:配置YARN资源管理器。
xml<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
启动Hadoop
-
格式化HDFS:在首次启动Hadoop之前,需要格式化HDFS。
bashhdfs namenode -format
-
启动HDFS:启动HDFS服务。
bashstart-dfs.sh
-
启动YARN:启动YARN资源管理器。
bashstart-yarn.sh
-
验证启动:使用
jps
命令查看Hadoop相关进程是否启动。bashjps
输出应包含
NameNode
、DataNode
、ResourceManager
和NodeManager
等进程。
实际案例
假设你有一个文本文件input.txt
,内容如下:
Hello World
Hello Hadoop
你可以使用Hadoop的MapReduce程序来统计每个单词的出现次数。
-
上传文件到HDFS:
bashhdfs dfs -mkdir /input
hdfs dfs -put input.txt /input -
运行WordCount程序:
bashhadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar wordcount /input /output
-
查看结果:
bashhdfs dfs -cat /output/part-r-00000
输出应为:
Hadoop 1
Hello 2
World 1
总结
通过本文,你已经成功安装并配置了Hadoop,并运行了一个简单的MapReduce程序。Hadoop的强大之处在于其分布式处理能力,能够处理PB级别的数据。接下来,你可以尝试在集群环境中部署Hadoop,以充分利用其分布式计算能力。
附加资源
练习:尝试在Hadoop集群中运行一个更复杂的MapReduce程序,例如排序或连接操作。