搭建方式

hadoop非真实物理机搭建的方式主要有

  1. 单机部署
  2. 伪集群式部署
    单机部署更适合构建纯粹的开发环境,伪集群式更适合于进行学习和测试使用,因此本文主要是居于伪集群式部署来进行讲解。另外,本文的搭建环境是基于虚拟机的方式,使用docker的方式可以寻找别的文章来查看。

搭建流程

  1. 构建虚拟机
  2. 基础linux环境配置,包括host名调整,设置集群间SSH免密,调整文件描述符。
  3. 配置基础开发基础环境,这里主要指JAVA环境
  4. 配置HADOOP环境
  5. 启动,验证

1.构建虚拟机

这里不做过多描述,本人使用的virtualbox
关于virtualbox使用内网可访问的ip的教程如下
https://blog.csdn.net/shuaihj/article/details/127589833

linux基础环境

修改host名

为了简化开发环境配置,我们需要修改本机名
sudo vim /etc/hostname
改成我们需要使用的本机名,并且对另外几台机器都进行同样操作,注意机器名之间不要相同,否则可能会出现奇奇怪怪的问题。
同时
sudo vim /etc/hosts
将对应集体哎虚拟机的配置都放到里面,然后就可以使用hostname来进行访问了。

构建ssh免密

ssh-keygen -t rsa

中间可能需要你输入类似于密码之类的东西,正常情况下不需要管他,一路enter即可,然后再/.ssh下会有有一个.pub文件,将里面的内容复制到其他他机器的/.ssh/authorized_keys的文件内即可。

linux开发环境

这里最主要的配置java环境,下载jdk到本机指定位置,这里用的是1.8。解压后
sudo vim /etc/profile
在后面新增一下内容,其中里面有一部分是HADOOP的环境变量,也可以提前配置。

PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
HADOOP_HOME=/home/mugun/software/hadoop-3.4.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export JAVA_HOME
export HADOOP_HOME
export PATH

输入完整之后 source /etc/profile 即可生效了。
另外有些情况下需要增加下文件符号,这里可以参考这个文章
https://www.cnblogs.com/piperck/p/6440728.html

配置HADOOP

参考 https://www.cnblogs.com/s1023/p/12439518.html
主要是修改/etc/hadoop下面的这四个文件

- core-site.xml 
- hdfs-site.xml 
- mapred-site.xml   复制mapred-site.xml.template而来 
- yarn-site.xml
- slaves

core-site.xml

<configuration>     
    <!-- hdfs的地址名称:schame,ip,port-->    
    <property>      
        <name>fs.defaultFS</name>        
        <value>hdfs://master:8020</value>
# 基于本机的实际域名
    </property>     
<!-- hdfs的基础路径,被其他属性所依赖的一个基础路径 -->        
    <property>        
        <name>hadoop.tmp.dir</name>                
         <value>/opt/apps/hadoop/tmp</value>
# 基于本机的实际路径
    </property> 
</configuration>

hdfs-site.xml

<configuration>    
<!-- namenode守护进程管理的元数据文件fsimage存储的位置-->    
  <property>        
    <name>dfs.namenode.name.dir</name>        
    <value>file://${hadoop.tmp.dir}/dfs/name</value>    
  </property>    
<!-- 确定DFS数据节点应该将其块存储在本地文件系统的何处-->    
  <property>        
    <name>dfs.datanode.data.dir</name>        
    <value>file://${hadoop.tmp.dir}/dfs/data</value>    
  </property>    
<!-- 块的副本数-->    
  <property>        
    <name>dfs.replication</name>       
     <value>3</value>    
  </property>    
<!-- 块的大小-->   

 <property>   
      <name>dfs.blocksize</name>
       <value>134217728</value>   
  </property>    
<!-- secondarynamenode守护进程的http地址:主机名和端口号。参考守护进程布局 根据实际情况配置-->    
  <property>        
    <name>dfs.namenode.secondary.http-address</name>        
    <value>slave1:50090</value>    
</property>
 </configuration>

mapred-site.xml

<configuration>
    <!-- 指定mapreduce使用yarn资源管理器-->    
  <property>        
    <name>mapreduce.framework.name</name>        
    <value>yarn</value>    
  </property>    
  <!-- 配置作业历史服务器的地址 同样根据实际情况配置-->    
  <property>        
    <name>mapreduce.jobhistory.address</name>        
    <value>master:10020</value>    
  </property>    
  <!-- 配置作业历史服务器的http地址 同样根据实际情况配置-->    
  <property>        
    <name>mapreduce.jobhistory.webapp.address</name>        
    <value>master:19888</value>    
  </property> 
</configuration>

hadoop-site.xml

<configuration>    
  <!-- 指定yarn的shuffle技术-->    
  <property>        
    <name>yarn.nodemanager.aux-services</name>       
    <value>mapreduce_shuffle</value>    
  </property>    
  <!-- 指定resourcemanager的主机名-->    
  <property>        
    <name>yarn.resourcemanager.hostname</name>        
    <value>master</value>    
  </property> 
</configuration>

hadoop-env.sh yarn-env.sh

在对应文件内增加java环境变量
export JAVA_HOME=/opt/apps/jdk
最后在slaves文件内放上3个节点的节点名。