在这里,我将进行我的Hadoop搭建路程
我们要进行Hadoop伪分布式搭建需要做的一些小小的准备工作:
这个时候IP地址前三位要和前面相同,第四位你可以随便填(1-254),这个是指你以后启用这个ip时,默认给你分配的地址。这里的默认网关请和前面的保持一直。
使用带GUI界面的服务器创建的虚拟机时,会在你进入的时候让你创建用户,请切换到root用户,我们接下来的操作都是基于root用户进行的。
vi /etc/hostname
进入编辑状态后按"O"直接修改主机名,完成后,按"ESC",然后按住Shift 按两次Z保存退出
vi /etc/sysconfig/network-scripts/ifcfg-ens33
#这个地方就需要用到我说的需要记录的那个网关英文名,比如我的是ens33,所以我打开的文件就是ifcfg-ens33
增加(或修改)以下内容:
BOOTPROTO=static #设置为静态IP
ONBOOT=yes #打开网卡
IPADDR=192.168.88.200 #设置IP,对应上面给出的三个IP地址,这里是master的IP
NETMASK=255.255.255.0 #设置子网掩码
GATEWAY=192.138.88.0 #设置网关
vi /etc/hosts
加入下列代码:
192.168.88.200 master
192.168.88.201 slave1
192.168.88.202 slave2
在完成以上步骤后reboot重启3台虚拟机:reboot
ssh-keygen -t rsa
截图说明如下:
在本机上生成authorized_keys,并验证能否对本机进行SSH无密码登陆
在其余所有节点都生成自己的authorized_keys之后,通过ssh-copy-id命令拷贝各自的公钥到其他节点,公钥会加入到对方机器的authorized_keys文件中,可以将authorized_keys认为是公钥的字典文件,因为可以放多个服务器的公钥进去,即可实现无密钥SSH访问。下面以slave1节点为例,将master节点的公钥复制到slave1节点中并加入到授权的key中,并验证是否配置成功。
在slave1中生成秘钥文件
将master节点的公钥复制到slave1节点中并测试连接。(如果你是只搭建了一台,然后克隆的其他两台,这个时候,你最好重新生成一下这个文件,然后重命名。此时好像就省略了由master向slave传输的过程)
在slave中使用 more 查看完成公钥复制后的文件
在这些都完成后,同时要用slave1向slave2传输一次公匙,再由slave2向slave1传输一次
自此便可以实现master登入slave1,slave2和slave1和slave2互相登入了
#先进行文件夹跳转
cd /opt/software
#然后解压文件夹
tar -zvxf jdk-8u91-lunux-x64.tar.gz -C /opt/apps
#如果你没有apps可以新建一个,以后可以把所有要安装的软件都放在这里
#通过mv命令或者FinalShell直接点击文件夹进行重命名
mv jdk1.8.2_81 jdk
vim /etc/profile
在尾部加入
#set java environment
export JAVA_HOME=/opt/apps/jdk
export JRE_HOME=/opt/apps/jdk/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
保存退出后,执行下列命令 让更改及时生效
source /etc/profile
然后,执行下列命令验证安装成功
java -version
如果显示的如安装版本相同,则证明安装成功。如果不成功,请查看是否未卸载原先装的JDK
#先进行文件夹跳转
cd /opt/software
#然后解压文件夹
tar -zvxf hadoop-2.10.1.tar.gz -C /opt/apps
#如果你没有apps可以新建一个,以后可以把所有要安装的软件都放在这里
#通过mv命令或者FinalShell直接点击文件夹进行重命名
mv hadoop-2.10.1 hadoop
vim /etc/profile
在尾部加入
#set hadoop path
export HADOOP_HOME=/opt/apps/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
保存退出后,执行下列命令 让更改及时生效
source /etc/profile
然后,执行下列命令验证安装成功
hadoop version
#打开hadoop-env.sh文件,用FinalShell可以直接找到打开
vi /opt/apps/hadoop/etc/hadoop/hadoop-env.sh
#进行如下修改,先找到对应文字,如果export那行有#号,将#去除即可,然后jdk位置改为你的位置
# The java implementation to use.
export JAVA_HOME=/opt/apps/jdk
#打开yarn-env.sh文件,用FinalShell可以直接找到打开
vi /opt/apps/hadoop/etc/hadoop/yarn-env.sh
#进行如下修改,先找到对应文字,如果export那行有#号,将#去除即可,然后jdk位置改为你的位置
# some Java parameters
export JAVA_HOME=/opt/apps/jdk/
#打开mapred-env.sh文件,用FinalShell可以直接找到打开
vi /opt/apps/hadoop/etc/hadoop/mapred-env.sh
#进行如下修改,先找到对应文字,如果export那行有#号,将#去除即可,然后jdk位置改为你的位置
# limitations under the License.
export JAVA_HOME=/opt/apps/jdk/
l 在每个节点上创建程序存储目录/opt/apps/hadoop/,用来存放Hadoop程序文件。
l 在每个节点上创建数据存储目录/opt/apps/hadoop/hdfs,用来存放集群数据。
l 在主节点node上创建目录/opt/apps/hadoop/hdfs/name,用来存放文件系统元数据。
l 在每个从节点上创建目录/opt/apps/hadoop/hdfs/data,用来存放真正的数据。
l 所有节点上的日志目录为/opt/apps/hadoop/logs。
l 所有节点上的临时目录为/opt/apps/hadoop/tmp。
执行命令mkdir -p //opt/apps/hadoop/logs,为还没有的目录创建,后面以此类推
Hadoop配置文件在hadoop/etc/hadoop目录下,配置文件也被分成了4个主要的配置文件需要配置其中包含:core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml。core-site.xml和hdfs-site.xml是站在HDFS角度上配置文件;core-site.xml和mapred-site.xml是站在MapReduce角度上配置文件。
此处,我是照抄网上的修改,如果需要特别的设置,请自行查找其他的设置,进行对应的修改
<configuration>
<property>
<name>fs.defaultFSname>
<value>hdfs://master:8020value>
<description> 设定 namenode 的 主机名 及 端口 description>
property>
<property>
<name>io.file.buffer.sizename>
<value>131072value>
<description> 设置缓存大小 description>
property>
<property>
<name>hadoop.tmp.dirname>
<value>file:/opt/apps/hadoop/tmpvalue>
<description> 存放临时文件的目录 description>
property>
configuration>
这个地方记得改为你的目录文件
<configuration>
<property>
<name>dfs.namenode.name.dirname>
<value>file:/opt/apps/hadoop/hdfs/namevalue>
<description> namenode 用来持续存放命名空间和交换日志的本地文件系统路径 description>
property>
<property>
<name>dfs.datanode.data.dirname>
<value>file:/opt/apps/hadoop/hdfs/datavalue>
<description> DataNode 在本地存放块文件的目录列表,用逗号分隔 description>
property>
<property>
<name>dfs.replicationname>
<value>3value>
<description> 设定 HDFS 存储文件的副本个数,默认为3 description>
property>
<property>
<name>dfs.webhdfs.enabledname>
<value>truevalue>
property>
configuration>
<configuration>
<property>
<name>mapreduce.framework.namename>
<value>yarnvalue>
<final>truefinal>
property>
<property>
<name>mapreduce.jobtracker.http.addressname>
<value>master:50030value>
property>
<property>
<name>mapreduce.jobhistory.addressname>
<value>master:10020value>
property>
<property>
<name>mapreduce.jobhistory.webapp.addressname>
<value>master:19888value>
property>
<property>
<name>mapred.job.trackername>
<value>http://master:9001value>
property>
configuration>
<configuration>
<property>
<name>yarn.nodemanager.aux-servicesname>
<value>mapreduce_shufflevalue>
property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.classname>
<value>org.apache.hadoop.mapred.ShuffleHandlervalue>
property>
<property>
<name>yarn.resourcemanager.addressname>
<value>master:8032value>
property>
<property>
<name>yarn.resourcemanager.scheduler.addressname>
<value>master:8030value>
property>
<property>
<name>yarn.resourcemanager.resource-tracker.addressname>
<value>master:8031value>
property>
<property>
<name>yarn.resourcemanager.admin.addressname>
<value>master:8033value>
property>
<property>
<name>yarn.resourcemanager.webapp.addressname>
<value>master:8088value>
property>
configuration>
master上配置好的hadoop所在文件夹"/opt/apps/hadoop"复制到所有的Slave的"/opt/apps"目录下,而不必每台机器都要安装设置,用下面命令格式进行。
例如:从"master"到"slave1"复制配置Hadoop的文件:
#先cd回主界面在进行
cd
scp –r /opt/apps/hadoop root@slave1:/opt/apps/
复制完成后在master上配置节点信息(其余节点不需要),使用下列命令
vi /opt/apps/hadoop/etc/hadoop/slaves
#去掉"localhost",每行只添加一个主机名或者IP地址
slave1
slave2
***注:***如果此处你只是设置了一台机器,打算将另外两台机器进行克隆的话,请在修改‘slaves’文件前进行克隆
克隆后,进行如下操作:
1、修改主机名
2、修改IP地址
3、重新设置公匙,并验证登入
4、在克隆结束后,便可以按照上述步骤在master中进行‘slaves’的修改
输入命令:
#先移动
cd /opt/apps/hadoop
#再运行程序
hadoop namenode -format
次数如产生错误,基本都是配置文件的问题,诸如不识别中文,配置文件中指定的路径不存在,等等,请认真检查配置文件
cd /opt/apps/hadoop
sbin/start-all.sh
如无异常显示如下内容:
命令“sbin/stop-all.sh”停止hadoop服务
在master应该输出以下信息(端口号仅供参考)
在slave应该输出以下信息(端口号仅供参考)
由于我并没有报错和启动错误,就不列举,如果出错,请自行百度查找解决方法
systemctl stop firewalld
输入以下网页, http://192.168.88.200:50070/dfshealth.html#tab-overview 进入hadoop管理首页
如果需要彻底关闭防护墙,请使用如下代码
#查看防火墙状态
systemctl status firewalld
#彻底关闭防火墙
systemctl disable firewalld
#在彻底关闭防火墙后,还需要关闭selinux,使用如下命令进行修改
vi /etc/sysconfig/selinux
#找到对应代码,进行如下修改:
SELINUX=disabled
#之后重启机器就好