hadoop搭建2021—小白实习笔记1

384 阅读6分钟

小白实习笔记1——基于服务器的hadoop搭建2021

实习项目,学习搭建hadoop集成环境

[搭建hadoop清单]

  • [hadoop-3.2.1 ]
  • [jdk-1.8.0 ]

配置流程图 image.png

hadoop搭建——初期准备

一,提供环境

三台服务器,分别是10.0.20.181, 10.0.20.182, 10.0.20.183 // 用户:root,密码:hadoop

二,检查环境

1. 1)服务器是否可登录

三台可正常登录 ssh user@ip 输入 passwd

ssh root@10.0.20.181 passwd 输入:hadoop(验证三台181,182,183)

image.png

1.2) 是否有权限进行写操作
  • 有权限
1.3)硬盘是否有空间供操作

df -lh

image.png

三,建立主机和各ip的映射

修改如下内容:ip地址 主机名,输入命令:vim /etc/hosts

image.png

cat:查看

注意!这样更改完,主机名并没有改变 需要更改,进入

vi /etc/sysconfig/network

(关于linux i:输入 保存退出:wq!)

image.png

执行reboot后生效,这个特别重要,出现bug很有可能缺少这一步。

重启完后,主机名改变 服务器名字更改完成!配置剩下的服务器步骤一样。更改相应的名字。

配置完成后,几台机子相互ping一下 Ping 名字 -c +次数

image.png

四,安装jdk--java环境1.8.0

建议使用yum安装jdk,也可以自行下载安装

yum -y install java-1.8.0-openjdk*

image.png

安装的默认路径是 /usr/lib/jvm,

配置环境变量,修改配置文件 vim /etc/profile

export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

注意!java版本名字

使用souce命令让立刻生效,source /etc/profile

验证 java-version

image.png

java 安装成功!

五,免密登陆

1,首先关闭三台服务器的防火墙和SELINUX,一步一步复制粘贴

查看防火墙状态 service iptables status

关闭防火墙 service iptables stop chkconfig iptables off

关闭SELINUX后,需要重启服务器

进入 vim /etc/selinux/config

#SELINUX=enforcing 改为disabled
#SELINUXTYPE=targeted

2,免密码登录

2.1) 配置master无密码登录,其余机子同理;一步一步复制粘贴

生产秘钥 ssh-keygen -t rsa

将公钥追加到”authorized_keys”文件

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

赋予权限 chmod 600 .ssh/authorized_keys

验证本机能无密码访问 ssh master

2.2)几台机子免密互登

登录slave1 ,复制master服务器的公钥”id_rsa.pub”到slave1服务器的”root”目录下。

scp root@master:/root/.ssh/id_rsa.pub /root/

将master的公钥(id_rsa.pub)追加到slave1的authorized_keys中

cat id_rsa.pub >> .ssh/authorized_keysrm -rf id_rsa.pub 删除之前的文件

在 master上面测试,直接 ssh slave1,就可以无密码直接登录slave1上了。其他几台机子配置同理,实现后三台机子彼此互相登录无需密码.

注意 SCP 是一个非常好用的命令,跨机远程拷贝。除了我写的这种方法,还有直接三台机子彼此一跨机拷贝就能使用,有兴趣网上搜搜,这个方法用的很多,尤其是在多机共同工作的情况下。

至此以上,我们的基本准备工作结束,接下来进行hadoop环境的搭建。

Hadoop搭建-版本3.2.1

一、在master上 解压缩安装包及创建基本目录

方法1.直接网址下载,但如果在国内用vpn,再在服务器上下载,会发现特别慢,特别慢,我用公司的网6H起步。

wget http://apache.claz.org/hadoop/common/hadoop-3.2.1/hadoop-3.2.1.tar.gz

方法2.用国内镜像,没研究,一搜肯定不少。自行研究吧。

方法3.我用的这个方法,使用Xshell和Xftp,将win系统中下载的hadoop安装包上传到服务器上,非常快,简单好用!这个超简单,自行搜一下xshell,xftp的使用方法,ip一连,然后选择文件,就OK了。

解压缩到/usr/local目录 tar -xzvf hadoop-3.2.1.tar.gz -C /usr/local

改名字 (mv 原名 新名) mv hadoop-3.2.1 hadoop

二、 配置hadoop-master的hadoop环境变量

2.1)配置环境变量,修改配置文件vi /etc/profile

#hadoop
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_COMMON_HOME=$HADOOP_HOME 
export HADOOP_HDFS_HOME=$HADOOP_HOME 
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME 
export HADOOP_INSTALL=$HADOOP_HOME 
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native 
export HADOOP_CONF_DIR=$HADOOP_HOME 
export HADOOP_LIBEXEC_DIR=$HADOOP_HOME/libexec 
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH
#export HADOOP_CONF_DIR=$HADOOP_PREFIX/etc/hadoop
export HADOOP_CONF_DIR=$HADOOP_PREFIX/usr/local/hadoop/etc/hadoop
export HDFS_DATANODE_USER=root
export HDFS_DATANODE_SECURE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export HDFS_NAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

重要!使得hadoop命令在当前终端立即生效的指令 source /etc/profile

检测是否安装成功 hadoop version

image.png

2.2)配置其他主机的环境变量 slave1,slave2

复制环境变量给slave1,slave2

scp -r /etc/profile root@slave1:/etc/

scp -r /etc/profile root@slave2:/etc/

使环境变量在slave1,slave2中生效 source /etc/profile

三,hadoop 配置文件

hadoop-env.sh(配置我们jdk的home路径),

core-site.xml(核心配置文件,主要定义了我们的集群是分布式,还是本机运行),

hdfs-site.xml(分布式文件系统的核心配置 决定了我们数据存放在哪个路径,数据的副本,数据的block块大小等等),

mapred-site.xml(定义了我们关于mapreduce运行的一些参数),

yarn-site.xml(定义我们的yarn集群,资源管理框架的核心配置文件),

好!开始配置!

1,hadoop配置文件--master

我们这几个文件都配置在/usr/local/hadoop/etc/hadoop的路径下。所有配置文件根据项目实际情况是有所不同的,仅供参考。

进入目录 cd /usr/local/hadoop/etc/hadoop

vim hadoop-env.sh

export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop

vim core-site.xml

其中 fs.defaultFS 配置的地址就是java代码访问的时候的路径,需要配置在java代码中代码中要用IP:9000不能用localhost,

<configuration>
<!--指定hdfs的访问地址-->
 <property>
     <name>fs.default.name</name>
     <value>hdfs://master:9000</value>
 </property>
 <!--指定零时文件地址-->
 <property>
     <name>hadoop.tmp.dir</name>
     <value>/usr/local/hadoop/tmp</value>
 </property>
 </configuration>

vim hdfs-site.xml

 dfs.namenode.secondary.http-address 这个地址就是文件系统浏览器访问地址

主namenode有个hdfs协议的访问地址:http://10.0.20.181:50070

<configuration>
 <property>

<!--指定数据库的副本数量 本次配置只有slave1和2 value:2-->
     <name>dfs.replication</name>
     <value>2</value>
 </property>
 <property>

<!--指定namenode存储路径-->
     <name>dfs.namenode.name.dir</name>
     <value>/usr/local/hadoop/hdfs/name</value>
 </property>
 <property>
     <name>dfs.namenode.data.dir</name>
     <value>/usr/local/hadoop/hdfs/data</value>
 </property>
 <!--指定web访问hdfs的端口-->
<property>
  <name>dfs.http.address</name>
  <value>master:50070</value>
</property>
<!-- 关闭权限检查用户或用户组 -->
    <property>
        <name>dfs.permissions.enabled</name>
        <value>false</value>
    </property>
 </configuration>

vim mapred-site.xml

其中mapred.job.tracker 决定了执行MapReduce程序的方式

<configuration>
  <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
  </property>
   <property>
      <name>mapred.job.tracker</name>
      <value>http://master:9001</value>
  </property>
</configuration>

vim yarn-site.xml

资源配置,根据情况yarn可以配置很多。

<configuration>
 <property><!-- RM的主机名-->
     <name>yarn.resourcemanager.hostname</name>
     <value>master</value>
 </property>
 <property>

<!--以逗号分隔的服务列表,其中服务名称应只包含a-za-z0-9_,且不能以数字开头-->
     <name>yarn.nodemanager.aux-services</name>
     <value>mapreduce_shuffle</value>
 </property>
 </configuration>

2, 配置masters的slaves文件(master特有!)

进入hadoop目录 cd /usr/local/hadoop/etc/hadoop 文件指定namenode节点所在的服务器机器。删除localhost,添加namenode节点的主机名master;不建议使用IP地址,因为IP地址可能会变化,但是主机名一般不会变化。

vim masters 添加

master

vim slaves 添加

slave1
slave2

vim workers 添加

master
slave1
slave2

3,hadoopo配置--slaves

在master复制hadoop到slave1节点

scp -r /usr/local/hadoop slave1:/usr/local/

登录slave1服务器,删除slaves内容

rm -rf /usr/local/hadoop/etc/hadoop/slaves

启动hadoop

1、格式化HDFS文件系统 hadoop namenode -formate 格式化namenode,第一次启动服务前执行的操作,以后不需要执行。

注意!格式化使用慎重!就第一次,无其他意外不要使用!

2、然后启动hadoop start-all.sh

3、使用jps命令查看运行情况

image.png

查看 slave1 和 slave2 的运行情况 jps

image.png

web和进程查看

web查看:http://master:50070 查看datanode

image.png

image.png

10.0.20.181:8088 存储 namenode节点

image.png

!推荐网站

三台云服务器搭建Hadoop完全分布式环境

blog.csdn.net/weixin_4393…

hadoop分布式集群搭建 www.ityouknow.com/hadoop/2017…

问题解决: 格式化或者JAVA_HOME出现问题

解决方案连接 bbs.huaweicloud.com/blogs/24226…

过一个月之后测试

这个配置版本基本没有问题,我测试出现的问题是格式化。将hadoop里面的tmp文件删除,在删除logs文件夹 rm -rf,在建立logs mkdir logs,重启start-all.sh 问题解决 50070 和 namenode出现。