用到的工具和版本有vmware,centos 6,jdk1.8.0_201, hadoop-2.6.1
- 在vmware上安装三个linux(centos 6) 操作系统
-
对三个虚拟机实现ssh免密码登录
- 2.1 修改三个机器名称
- 2.2 修改/etc/hosts文件,使三台机器可以通过名称ping通
- 2.3 给机器生成密钥文件
- 2.4 在master机器上生成authorized_keys文件
- 2.6 将authorized_keys文件复制到其他机器上去
- 2.7 测试使用ssh进行无密登录
- 安装jdk
- 3.1 解压安装jdk
- 3.2 修改环境变量
- 3.3 测试java
- 3.4 在slave中克隆相关的java文件以及环境变量的修改
- 安装hadoop
- 4.1 官网下载hadoop
- 4.2 解压安装hadoop
- 4.3 新建目录
- 4.4 修改/etc/hadoop中的一系列配置文件
- 4.5 在slave中克隆hadoop以及相关的配置文件
- 启动hadoop
- 5.1 在namenode上执行初始化
- 5.2 在namenode上执行启动命令
- 测试hadoop
一、安装linux
在vmware的主页找到如下图片
,完成等待linux操作系统的安装。重复上述操作建立三个同样的虚拟机
二、对三个虚拟机实现ssh免密码登录
相关操作都是在root用户权限下进行
①在终端输入hostname查看机器的名称 ,如下
[root@master Desktop]# hostname
master
hostname [新名字] 是将机器修改成你想要的名字,这里我改成master
另外两台机器对应的改成slave1,和slave2
②查看对应机器的ip地址,使用ifconfig指令
③在/etc/hosts 中添加下列代码:
指令为vim /etc/hosts(在vim中,按i为进入输入模式,输入结束后,按esc,然后输入:wq,保存并退出)
每台机器的ip和它对应的hostname
此时,可以测试一下三台机器是否可以互相ping通(两台互相ping的机器要处于开机状态)
代码为(展示为在master上ping slave1的机器)
ping -c 3 slave1
参数-c是指定次数,这里为三次。
如果一切正常,应该出现下图所示画面:
④给机器生成免密文件,因为hadoop集群需要频繁的登录其他两台机器,所以最好不要频繁的输入密码。此处是在master上进行,其他两台机器照样。
ssh-keygen -t rsa -P ''
此时,机器会询问你在何处保存密钥,直接敲回车即可
在 /root/.ssh/目录下应该有如下两个文件
⑤接下来创建一个新的文件夹叫,authorized_keys,将刚才三台机器上的密钥复制到这个文件夹中,并将authorized_keys拷贝到其他两台机器上.
在/root/.ssh/目录下创建authorized_keys
touch /root/.ssh/authorized_keys
我的master 上id_rsa.pub内容为
![master上id_rsa.pub中的内容(https://upload-images.jianshu.io/upload_images/7230999-a9c1016d4df89ab9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240),将这段内容复制粘贴到authorized_keys中,换行,粘贴同样的slave1机器中的id_rsa.pub内容,然后slave2中的内容同样粘贴进来。保存退出。
⑥复制authorized_keys到其他两台机器的对应目录中,然后在任意一台机器上测试是否可以ssh其他两台机器,注意登录成功后,要在终端输入exit,才退回原来的主机中。以master为例,注意其中的hostname不一样
三、安装JDK
3.1下载解压安装JDK:
在官网下载对应的JDKhttp://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
将压缩包拖曳到vmware对应的linux中,如果拖曳不成功,VMware上
解压JDK
在opt目录下创建一个java 文件夹
mkdir /opt/java
将下载的压缩包拷贝到这个文件夹中
cp 压缩包所在的路径 /opt/java
打开JDK所在的目录
cd /opt/java
执行解压缩命令
tar -zxvf jdk-8u201-linux-x64 (1).tar.gz
此时会多处一个文件夹,解压后的jdk
3.2修改环境变量
vim /etc/profile
内容为
export JAVA_HOME=/opt/java/jdk1.8.0_121
export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
然后将这个代码执行一遍
source /etc/profile
3.3测试java
输入
java -version
只要java指令有用即可。
其他两台电脑重复此操作。
两台主机之间文件的传递可用:
scp root@192.168.224.129:/opt/java /opt/
第一个参数是需要从192.168.224.129的/opt/java目录中拷贝, 然后拷贝到当前操作主机的/opt/目录下
PS:环境变量还是需要重新修改的
四、安装hadoop
4.1 可以去hadoop官网下载,对照jdk的下载,这里给一个3.1版本的链接
https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.1.2/hadoop-3.1.2.tar.gz
4.2将hadoop拖曳到对应linux中,在/opt目录下创建一个hadoop目录
mkdir /opt/hadoop
将压缩包拖到/opt/hadoop目录下,执行
tar -xvf 对应的hadoop压缩包
4.3新建几个目录
在root目录下新建如下目录
mkdir /root/hadoop
mkdir /root/hadoop/tmp
mkdir /root/hadoop/var
mkdir /root/hadoop/dfs
mkdir /root/hadoop/dfs/name
mkdir /root/hadoop/dfs/data
4.4修改配置文件
PS:复制代码时注意自己的hadoop版本和主机名
①修改/opt/hadoop/hadoop-2.6.1/etc/hadoop/core-site.xml文件
vim /opt/hadoop/hadoop-2.6.1/etc/hadoop/core-site.xml
在<configuration>节点内加入配置:注意修改自己的主机名
<!--用来指定使用hadoop时产生文件的存放目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>/root/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<!--指定namenode的地址,此处主机名需要修改master-->
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
</configuration>
② 修改/opt/hadoop/hadoop-2.6.1/etc/hadoop/hadoop-env.sh
③ 修改/opt/hadoop/hadoop-2.6.1/etc/hadoop/hdfs-site.xml 文件
<property>
<name>dfs.name.dir</name>
<value>/root/hadoop/dfs/name</value>
<description>namenode在本地文件系统存储命名空间,事务日志的路径.</description>
</property>
<property>
<name>dfs.data.dir</name>
<value>/root/hadoop/dfs/data</value>
<description>指定hdfs中datanode的存储位置.</description>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!--指定hdfs保存数据的副本数量-->
④ 修改/opt/hadoop/hadoop-2.8.0/etc/hadoop/mapred-site.xml.template 将其改名为mapred-site.xml
指令为:
cp /opt/hadoop/hadoop-2.8.0/etc/hadoop/mapred-site.xml.template /opt/hadoop/hadoop-2.8.0/etc/hadoop/mapred-site.xml
在configuration节点加入配置,注意修改主机名称
<property>
<name>mapred.job.tracker</name>
<value>master:49001</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>/root/hadoop/var</value>
</property>
<property>
<!--告诉hadoop以后MR(Map/Reduce)运行在YARN上-->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
⑤修改/opt/hadoop/hadoop-2.8.0/etc/hadoop/slaves文件,将里面的localhost删除,添加如下内容:
slave1
slave2
⑥修改/opt/hadoop/hadoop-2.8.0/etc/hadoop/yarn-site.xml文件,注意主机名
<property>
<!--指定ResourceManager的地址-->
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<description>RM管理界面的地址.</description>
<name>yarn.resourcemanager.address</name>
<value>${yarn.resourcemanager.hostname}:8032</value>
</property>
<property>
<description>The address of the scheduler interface.</description>
<description>调度器界面的地址</description>
<name>yarn.resourcemanager.scheduler.address</name>
<value>${yarn.resourcemanager.hostname}:8030</value>
</property>
<property>
<description>The http address of the RM web application.</description>
<description>RMweb应用的http地址</description>
<name>yarn.resourcemanager.webapp.address</name>
<value>${yarn.resourcemanager.hostname}:8088</value>
</property>
<property>
<description>The https adddress of the RM web application.</description>
<name>yarn.resourcemanager.webapp.https.address</name>
<value>${yarn.resourcemanager.hostname}:8090</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>${yarn.resourcemanager.hostname}:8031</value>
</property>
<property>
<description>The address of the RM admin interface.</description>
<name>yarn.resourcemanager.admin.address</name>
<value>${yarn.resourcemanager.hostname}:8033</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>2048</value>
<discription>每个节点可用内存,单位MB,默认8182MB</discription>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>2.1</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>2048</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<description>忽略内存检查 因为是在虚拟机上</description>
<value>false</value>
</property>
在另外两台机器上用scp 复制hadoop以及相关文件的配置
五、启动hadoop
PS:因为slave的机器都是datanode,所以以下操作只需要在namenode(即master)上执行即可
5.1执行
cd /opt/hadoop/hadoop-2.6.1/bin
进入该目录,执行初始化脚本,格式化hdfs
./hadoop namenode -format
稍等片刻,会在/root/hadoop/dfs/name/目录多了一个current目录
该目录中有一系列文件。
5.2在namenode上执行启动命令
cd /opt/hadoop/hadoop-2.6.1/sbin
./start-all.sh
第一次执行命令,会有几个需要确认的地方,直接打印yes即可
六、测试hadoop
第一步首先需要关闭防火墙,centos6 是
service iptables stop
centos7是
systemctl stop firewalld.service
因为master是我们的namenode,所以,对应的ip地址192.168.224.129. 在windows的电脑上输入
http://192.168.224.129:50070/
出现
在浏览器中输入
http://192.168.224.129:8088/
将转到cluster页面
即成功了。。写的好累/
⑦⑧⑨⑩