搭建方式
hadoop非真实物理机搭建的方式主要有
- 单机部署
- 伪集群式部署
单机部署更适合构建纯粹的开发环境,伪集群式更适合于进行学习和测试使用,因此本文主要是居于伪集群式部署来进行讲解。另外,本文的搭建环境是基于虚拟机的方式,使用docker的方式可以寻找别的文章来查看。
搭建流程
- 构建虚拟机
- 基础linux环境配置,包括host名调整,设置集群间SSH免密,调整文件描述符。
- 配置基础开发基础环境,这里主要指JAVA环境
- 配置HADOOP环境
- 启动,验证
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个节点的节点名。