最近在系统性学习大数据相关知识,看了一些教学视频,因为教学视频录的比较早了,中间也踩了一些坑,这里记录一下hadoop3.3.0的整个安装过程。
1. java安装
我这边使用的是centos,所以使用下面的命令安装即可:
代码语言:javascript复制yum install java-1.8.0-openjdk-devel
安装完后,修改/etc/profile
,添加JAVA_HOME变量
export JAVA_HOME=/usr/lib/jvm/java
2. hadoop的下载和安装
首先,在阿里云镜像网站下载hadoop的安装包hadoop-3.3.0.tar.gz。下载完成后,将其解压tar -zxvf hadoop-3.3.0.tar.gz
,解压完成后,会出现一个hadoop-3.3.0
的文件夹,将这个文件夹移动到/usr/local
下并重命名为hadoop,mv hadoop-3.3.0 /usr/local/hadoop
。
挪动好hadoop文件后,修改/etc/profile
,增加hadoop相关变量
export HADOOP_HOME=/usr/local/hadoop
export PATH=.:$HADOOP_HOME/bin::$PATH
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
修改后,使profile生效source /etc/profile
此时,命令行输入hadoop version
,如果出现下面的信息,则表示相关配置已经生效。
Hadoop 3.3.0
Source code repository https://gitbox.apache.org/repos/asf/hadoop.git -r aa96f1871bfd858f9bac59cf2a81ec470da649af
Compiled by brahma on 2020-07-06T18:44Z
Compiled with protoc 3.7.1
From source with checksum 5dc29b802d6ccd77b262ef9d04d19c4
This command was run using /usr/local/hadoop/share/hadoop/common/hadoop-common-3.3.0.jar
3. hadoop配置
此时hadoop已经是可以以单机方式运行,为了将hadoop配置成伪分布式,需要进行以下配置。
3.1 域名配置
首先配置一个域名,在/etc/hosts
中添加一条记录192.168.10.103 hadoop1
,前面的IP是当前机器的IP。
3.2 用户配置
然后生成一个专门用于hadoop相关账号,这里我参照网上的教程,创建一个hadoop用户。
代码语言:javascript复制# 添加用户
adduser hadoop
# 将用户增加到root组
usermod -g root hadoop
# 登陆到hadoop账户
su hadoop
接下来,使用ssh-keygen命令创建公钥-私钥对,然后将公钥放到authorized_keys中。
代码语言:javascript复制cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
之后尝试免密登陆,第一次免密登陆有一个交互提示,之后就不会有交互提示了。
3.3 hadoop core-site文件设置
代码语言:javascript复制vim /usr/local/hadoop/etc/hadoop/core-site.xml
代码语言:javascript复制<configuration>
<property>
<!--hadoop的临时目录设置-->
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<!--dfs的服务端口号,由于本机装了php占用了9000端口,所以修改成8999-->
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:8999</value>
</property>
</configuration>
3.4 hadoop hdfs-site配置
代码语言:javascript复制vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml
代码语言:javascript复制<configuration>
<property>
<!--指定副本数为1-->
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<!--dfs名称地址-->
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<!--dfs数据地址-->
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
<property>
<!--dfs主节点端口-->
<name>dfs.http.address</name>
<value>hadoop1:50070</value>
</property>
</configuration>
3.5 hadoop yarn-site配置
代码语言:javascript复制vim /usr/local/hadoop/etc/hadoop/yarn-site.xml
代码语言:javascript复制<configuration>
<!-- Site specific YARN configuration properties -->
<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.address</name>
<value>hadoop1:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>hadoop1:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>hadoop1:8035</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>hadoop1:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>hadoop1:8088</value>
</property>
</configuration>
3.6 hadoop yarn-site配置
代码语言:javascript复制vim /usr/local/hadoop/etc/hadoop/mapred-site.xml
代码语言:javascript复制<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
3.7 格式化namenode
代码语言:javascript复制hadoop namenode -format
3.8 启动所有组件
代码语言:javascript复制# 进入sbin目录
cd /usr/local/hadoop/sbin
# 执行启动文件
./start-all.sh
当启动完成后,使用jps命令,查看在运行的jvm,其中应当包含以下程序。
代码语言:javascript复制7460 SecondaryNameNode
8564 Jps
7269 DataNode
7818 NodeManager
7693 ResourceManager
7119 NameNode
4. 小结
以上安装完成后,接下来就可以在ide中写代码,向dfs中写入或读取数据了。
enjoy~