记hadoop伪分布式安装

2020-12-01 10:38:23 浏览数 (1)

最近在系统性学习大数据相关知识,看了一些教学视频,因为教学视频录的比较早了,中间也踩了一些坑,这里记录一下hadoop3.3.0的整个安装过程。

1. java安装

我这边使用的是centos,所以使用下面的命令安装即可:

代码语言:javascript复制
yum install java-1.8.0-openjdk-devel

安装完后,修改/etc/profile,添加JAVA_HOME变量

代码语言:javascript复制
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相关变量

代码语言:javascript复制
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,如果出现下面的信息,则表示相关配置已经生效。

代码语言:javascript复制
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~

0 人点赞