zl程序教程

您现在的位置是:首页 >  Java

当前栏目

Hadoop安装

2023-03-31 10:45:27 时间

记录第一次搭建Hadoop集群。

使用版本:

  • Ubuntu:ubuntu-20.04.5-desktop-amd64.iso
  • Hadoop:hadoop-2.7.5.tar.gz

对vim 的基本命令:

  • 进入编辑状态:insert
  • 删除:delete
  • 退出编辑状态:ctrl+[
  • 进入保存状态:ctrl+]
  • 保存并退出:" :wq " 注意先输入英文状态下冒号
  • 不保存退出:" :q! " 同上

准备虚拟机

网上教程很多,可以随便参考一个,搭建自己的Ubuntu虚拟机。然后使用克隆,一共准备三台虚拟机

修改主机名

用户名@主机名

克隆的三台服务器用户名主机名都是相同的,我们需要修改其主机名,可以分别设置为master、slave01、slave02.(随意即可,我的是serendipity、slave01、slave02,方便起见,后面都采用我自己的命名方法)

sudo vim /etc/hostname

第一行就是本机主机名信息,将三台主机分别修改为对应的serendipity、slave01、slave02,进行保存。对虚拟机重启后即可生效。

ping 通三台主机

首先记录三台主机的ip地址。(可以自己设置静态ip,也可直接进行操作)

ifconfig

记录三台主机

192.168.58.129  serendipity
192.168.58.134  slave01
192.168.58.135  slave02

分别三台主机,设置节点IP映射

sudo vim /etc/hosts

本来上面一串东西,可以都删掉。

ping 测试

ping IP地址

出现下面矩形框,便是成功。分别再三台主机进行测试

ssh免密

基础准备

安装ssh

sudo apt-get install openssh-server  #安装服务,一路回车                     
sudo /etc/init.d/ssh restart  #启动服务                                      
sudo ufw disable   #关闭防火墙,不然后面会出现很多奇妙的bug

查看是否开通ssh服务

ps -e | grep ssh

如上即可:

设置免密登录

  1. 再serendipity节点生成SSH公钥

    cd ~/.ssh           # 如果没有该目录,先执行一次ssh localhost         
    rm ./id_rsa*        # 删除之前生成的公匙(如果有)                  
    ssh-keygen -t rsa   # 一直按回车就可以
    
  2. 让 serensipity可以免密ssh本机

    cat ./id_rsa.pub >> ./authorized_keys
    
  3. 完成后可以验证一下

    ssh serendipity
    

不需输入密码即为成功,输入exit返回原终端

  1. 将serendipity节点将公钥传输到slave01节点,需要密码就将密码输入即可,@前后就是你的终端显式的东西,用户名@主机名

    scp ~/.ssh/id_rsa.pub serendipity@slave01:/home/serendipity
    
  2. 再slave01节点将公钥加入授权

    mkdir ~/.ssh        # 如果不存在该文件夹需先创建,若已存在则忽略        
    cat ~/id_rsa.pub >> ~/.ssh/authorized_keys                                   
    rm ~/id_rsa.pub    # 用完就可以删掉了
    
  3. slave02也重复上述节点。主机节点可以免密登录两个节点即可

安装配置Hadoop

建议使用推荐的版本。高版本的可能配置文件与下列描述有所出入。

下载地址:http://archive.apache.org/dist/hadoop/core/hadoop-2.7.5/

jdk8

先去安装一下jdk8.

下载安装

建议再外部主机下载,虚拟机下载网络很慢。下载结束后使用Xftp 或者只用Vmware 安装VMware tools后直接拖拽入虚拟机。

将软件再一个合适的目录解压。(作为linux小白,不太懂 local 、opt的作用啥的,就自己建了一个hadoop文件夹)

进入压缩包所在文件目录内,执行解压命令

tar -zxvf hadoop-2.7.5.tar.gz

或者后等待解压完成,完成后会再同级目录下创建名为hadoop-2.7.5文件夹。

将其修改文件夹名为 hadoop。这就是hadoop安装目录

mv hadoop-2.7.5 hadoop

进入安装目录,查看安装文件,如图所示

修改配置文件,进入安装目录内的 etc 下的 hadoop 文件夹

cd etc/hadoop/

hadoop-env.sh

sudo vim hadoop-env.sh 

再文件较前地方有

export  JAVA_HOME=${JAVA_HOME}

等号后面修改为 你的 JDK 安装目录。

yarn-env.sh

sudo vim yarn-env.sh

再较前面。有个

#export JAVA_HOME=/home/y/libexec/jdk1.6.0

将# 去掉,后面改为你的java安装目录

核心组件 core-site.xml

设置namenode的地址、指定使用Hadoop时临时文件的存放路径等信息

sudo vim core-site.xml 

再configuration内部添加如下信息

	 <property>
                <name>fs.defaultFS</name>
                <value>hdfs://serendipity:9000</value> 
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/home/serendipity/hadoop/hadoopdata</value>
        </property>

其中,hdfs://serendipity:9000 中 serendipity是主机名,可以修改为自己的主机名

/home/serendipity/hadoop/hadoopdata是指定存放数据信息的文件夹,可以自己创建一个文件夹。将其全路径放在这里。

文件系统 hdfs-site.xml

配置分布式文件系统HDFS的属性,包括指定HDFS保存数据的副本数了,指定HDFS中NameNode、DataNode节点的存储位置

sudo vim hdfs-site.xml 

将下面信息加入configuration内部

 <property>
        <name>dfs.replication</name>
        <value>1</value>
</property>
<property>
        <name>dfs.namenode.datanode.registration.ip-hostname-check</name>
        <value>false</value>
</property>

dfs.replication 为执行副本数量

文件系统 yarn-site.xml

yarn是mapreduce的调度框架。

sudo vim yarn-site.xml 

将下列信息加入configuration内部,信息不用改,直接抄

     <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
</property>
<property>
        <name>yarn.resourcemanager.address</name>
        <value>serendipity:18040</value>
</property>
<property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>serendipity:18030</value>
</property>
<property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>serendipity:18025</value>
</property>
<property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>serendipity:18141</value>
</property>
<property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>serendipity:18088</value>
</property>

计算框架 mapred-site.xml

使用cp命令将 mapred-site.xml.template 复制一份为 mapred-site.xml

cp mapred-site.xml.template  mapred-site.xml

打开 mapred-site.xml 文件

sudo vim mapred-site.xml

将下列信息加入configuration内部

<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>

slaves

配置启动的从机

sudo vim slaves 

再内部键入你需要启动的从机的主机名,我只有两个从机,slave01,slave02.所以就写了这两个

将配置的所有hadoop信息复制到从机

scp -r hadoop/hadoop  serendipity@slave01:/home/serendipity/hadoop/hadoop

不确定的话,可以将上述安装配置Hadoop的流程,再从机上全部重复一遍,都是一样的操作。

配置环境变量

打开 etc/profile文件

sudo vim /etc/profile

将下面代码追加到文件末尾

export HADOOP_HOME=/home/serendipity/hadoop/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP/sbin

执行命令,激活配置

source /etc/profile

至此。Hadoop安装与配置完毕。

启动Hadoop集群

格式化文件系统

hdfs namenode -format

启动Hadoop集群

将路径切到hadoop安装目录

cd hadoop/hadoop

启动集群

sbin/start-all.sh

查看Hadoop是否正常启动

在serendipity 执行 jps命令

jps # 查看java进程:java process status??? 可能吧 不知道。

在slave01、slave02执行jps命令

分别如图所示,即Hadoop集群节点已正式启动

在serendipity 查看集群信息

bin/hadoop dfsadmin -report

箭头所指区域不全为0 即为正常。

使用web查看集群是否正常,在浏览器地址栏输入:http://serendipity:50070,检查namenode和datanode是否正常

全为0,即集群不是正常状态,尤其是live Nodes节点,一般有几个机器有datanode节点,这里就应该是几。