小白实习笔记1——基于服务器的hadoop搭建2021
实习项目,学习搭建hadoop集成环境
[搭建hadoop清单]
- [hadoop-3.2.1 ]
- [jdk-1.8.0 ]
配置流程图
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)
1.2) 是否有权限进行写操作
- 有权限
1.3)硬盘是否有空间供操作
df -lh
三,建立主机和各ip的映射
修改如下内容:ip地址 主机名,输入命令:vim /etc/hosts
cat:查看
注意!这样更改完,主机名并没有改变 需要更改,进入
vi /etc/sysconfig/network
(关于linux i:输入 保存退出:wq!)
执行reboot后生效,这个特别重要,出现bug很有可能缺少这一步。
重启完后,主机名改变 服务器名字更改完成!配置剩下的服务器步骤一样。更改相应的名字。
配置完成后,几台机子相互ping一下 Ping 名字 -c +次数
四,安装jdk--java环境1.8.0
建议使用yum安装jdk,也可以自行下载安装
yum -y install java-1.8.0-openjdk*
安装的默认路径是 /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
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_keys,rm -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
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命令查看运行情况
查看 slave1 和 slave2 的运行情况 jps
web和进程查看
web查看:http://master:50070 查看datanode
10.0.20.181:8088 存储 namenode节点
!推荐网站
三台云服务器搭建Hadoop完全分布式环境
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出现。