用到的工具和版本有 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 的主页找到如下图片
image.PNG
, 点击, 一路下一步, 看到
image.PNG
, 选择你的 Linux 系统镜像的所在位置, 下一步, 直到输入用户名, 密码等等
image.PNG
, 完成等待 Linux 操作系统的安装. 重复上述操作建立三个同样的虚拟机
二, 对三个虚拟机实现 SSH 免密码登录
相关操作都是在 root 用户权限下进行
1在终端输入 hostname 查看机器的名称 , 如下
- [root@master Desktop]# hostname
- master
hostname [新名字] 是将机器修改成你想要的名字, 这里我改成 master
另外两台机器对应的改成 slave1, 和 slave2
2查看对应机器的 ip 地址, 使用 ifconfig 指令
image.PNG
3在 / etc/hosts 中添加下列代码:
指令为 VIM /etc/hosts(在 VIM 中, 按 i 为进入输入模式, 输入结束后, 按 esc, 然后输入: wq, 保存并退出)
image.PNG
每台机器的 ip 和它对应的 hostname
此时, 可以测试一下三台机器是否可以互相 ping 通 (两台互相 ping 的机器要处于开机状态)
代码为 (展示为在 master 上 ping slave1 的机器)
ping -c 3 slave1
参数 - c 是指定次数, 这里为三次.
如果一切正常, 应该出现下图所示画面:
image.PNG
4给机器生成免密文件, 因为 hadoop 集群需要频繁的登录其他两台机器, 所以最好不要频繁的输入密码. 此处是在 master 上进行, 其他两台机器照样.
SSH-keygen -t rsa -P ''
此时, 机器会询问你在何处保存密钥, 直接敲回车即可
在 /root/.SSH / 目录下应该有如下两个文件
image.PNG
5接下来创建一个新的文件夹叫, authorized_keys, 将刚才三台机器上的密钥复制到这个文件夹中, 并将 authorized_keys 拷贝到其他两台机器上.
在 / root/.SSH / 目录下创建 authorized_keys
touch /root/.SSH/authorized_keys
我的 master 上 id_rsa.pub 内容为
![master 上 id_ http://rsa.pub/ 中的内容 (), 将这段内容复制粘贴到 authorized_keys 中, 换行, 粘贴同样的 slave1 机器中的 id_rsa.pub 内容, 然后 slave2 中的内容同样粘贴进来. 保存退出.
authorized_keys 中的内容
6复制 authorized_keys 到其他两台机器的对应目录中, 然后在任意一台机器上测试是否可以 SSH 其他两台机器, 注意登录成功后, 要在终端输入 exit, 才退回原来的主机中. 以 master 为例, 注意其中的 hostname 不一样
SSH 登录展示
三, 安装 JDK
3.1 下载解压安装 JDK:
在官网下载对应的 JDK
下载 JDK
将压缩包拖曳到 vmware 对应的 Linux 中, 如果拖曳不成功, VMware 上
vmware tools
点击这个, 有一个安装 vmtools 的选项, 安装, 然后拖曳.
解压 JDK
在 opt 目录下创建一个 java 文件夹
mkdir /opt/java
将下载的压缩包拷贝到这个文件夹中
cp 压缩包所在的路径 /opt/java
打开 JDK 所在的目录
cd /opt/java
执行解压缩命令
tar -zxvf jdk-8u201-Linux-x64 (1).tar.gz
此时会多处一个文件夹, 解压后的 jdk
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 版本
只要 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 版本的链接
4.2 将 hadoop 拖曳到对应 Linux 中, 在 / opt 目录下创建一个 hadoop 目录
mkdir /opt/hadoop
新建 hadoop 目录
将压缩包拖到 / opt/hadoop 目录下, 执行
tar -xvf 对应的 hadoop 压缩包
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 版本和主机名
1修改 / 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>
2 修改 / opt/hadoop/hadoop-2.6.1/etc/hadoop/hadoop-env.sh
修改 jdk 路径
3 修改 / 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 保存数据的副本数量 -->
4 修改 / 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>
5修改 / opt/hadoop/hadoop-2.8.0/etc/hadoop/slaves 文件, 将里面的 localhost 删除, 添加如下内容:
slave1 slave2
6修改 / 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 目录
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/
出现
hadoop 测试网页
在浏览器中输入
http://192.168.224.129:8088/
将转到 cluster 页面
cluster
即成功了.. 写的好累 /
78910
来源: http://www.jianshu.com/p/96e508a447b9