hadoop安装
一:创建虚拟机
1.在终端中打开
关闭防火墙: service iptables stop
查看防火墙状态:service iptables status
如果出现:iptables :未运行防火墙 说明关闭成功
关闭防火墙的开机自启:chkconfig iptables off
2.找到文件/etc/sysconfig/network-scripts/ifcfg-eth0
进行修改:
仅主机模式下的配置:
DEVICE=eth0
HWADDR=00:0C:29:78:D0:F7
TYPE=Ethernet
#UUID=caa3a808-be8b-4683-86da-d4a9da1a6977
ONBOOT=yes (修改成yes)
NM_CONTROLLED=yes(修改成yes)
BOOTPROTO=static(修改成static)
IPADDR=192.168.145.21(自己分配,注意网段)
PREFIX=255.255.255.0(自己填写)
DEFROUTE=yes(自己填写)以自己为路由
NAME=“System eth0”(自己填写)
NET模式下的配置:
DEVICE=eth0 (网络名字)
HWADDR=00:0C:29:9D:3F:6F (mac地址 :会自己查看)
TYPE=Ethernet (网络类型)
UUID=86b635fd-7b6f-45b3-beef-618ace136ab2 (唯一标识)
ONBOOT=yes (开机自启)
NM_CONTROLLED=yes (开启networkManager管理)
BOOTPROTO=static (开启手动分配方式 dhcp表示动态 none不启用自己分配ip地址)
IPADDR=192.168.135.11 (ip地址 自己添加 注意网段 ip地址不要冲突)
PREFIX=24 (子网掩码)
NAME=“System eth0” (网络连接名字)
GATEWAY=192.168.135.2 (网关 路由器 编辑-虚拟网络编辑器-NAT设置-查看网关)
DNS1=192.168.135.2 (域名解析器器)
DNS2=8.8.8.8 (公共的域名解析器)
注意保存
重启网络管理:service NetworkManager restart
关闭网络管理:service NetworkManager stop
关闭网络的开机自启设置:chkconfig NetworkManager off
3 重启网络 service network restart
出现4个确定即为成功
4.执行ifconfig 查看网卡信息
5.在CMD里面 ping 虚拟机的ip地址
net模式下,(在虚拟机的终端执行) ping www.baidu.com 检测是否能够实现联网功能
6.修改主机名字:找到文件etc/sysconfig/network
NETWORKING=yes
HOSTNAME=hadoop1708A(改成自己的主机名字)
在终端执行命令:hostname 查看当前机器的主机名
7.更改虚拟机映射:找到文件/etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.145.21 hadoop1708A(把自己的主机名字和ip地址写在最后一行,注意两者之间有空格)
8.更改windows里的映射
找到文件:C:\Windows\System32\drivers\etc\hosts
(把自己的主机名字和ip地址写在最后一行,注意两者之间有空格)
二 克隆虚拟机(两台)
克隆:
1.找到文件/etc/sysconfig/network-scripts/ifcfg-eth0
进行修改:
NET模式下的配置:
DEVICE=eth0 (网络名字)
HWADDR=00:0C:29:9D:3F:6F (mac地址 :会自己查看) 克隆后修改为当前机器的mac地址
TYPE=Ethernet (网络类型)
UUID=86b635fd-7b6f-45b3-beef-618ace136ab2 (唯一标识) 克隆之后随便找两个字符改成随便的两个字符
ONBOOT=yes (开机自启)
NM_CONTROLLED=yes (开启networkManager管理)
BOOTPROTO=static (开启手动分配方式 dhcp表示动态 none不启用自己分配ip地址)
IPADDR=192.168.135.11 (ip地址 自己添加 注意网段 ip地址不要冲突) 克隆后更改ip地址
PREFIX=24 (子网掩码)
NAME=“System eth0” (网络连接名字)
GATEWAY=192.168.135.2 (网关 路由器 编辑-虚拟网络编辑器-NAT设置-查看网关)
DNS1=192.168.135.2 (域名解析器器)
DNS2=8.8.8.8 (公共的域名解析器)
2.找到文件
etc/udev/rules.d/70-persistent-net.rules
进行更改
把带有原先mac地址的那一部分进行删除
然后把当前mac地址的那一部分内容的 eth1改成eth0
3.重启网络 service network restart
4.修改主机名
修改映射
修改windows映射
5,cmd进行ping ip地址或者主机名字进行检测 是否成功
安装hadoop:
1.上传jdk和hadoop压缩到/home/bigdata (路径自己创建)
解压压缩包 tar -zxvf 压缩包名字
删除压缩包 rm -rf 压缩包名字
改名:给你的jdk和hadoop文件重命名(易懂 好记 比如:jdk hadoop)
2.配置环境变量:
找到文件 vi /etc/profile
添加内容:
export JAVA_HOME=/home/bigdata/jdk
export HADOOP_HOME=/home/bigdata/hadoop
export CLASSPATH=.:
J
A
V
A
H
O
M
E
/
l
i
b
/
d
t
.
j
a
r
:
JAVA_HOME/lib/dt.jar:
JAVAHOME/lib/dt.jar:JAVA_HOME/lib/tools.jar:
export PATH=
P
A
T
H
:
PATH:
PATH:JAVA_HOME/bin:
H
A
D
O
O
P
H
O
M
E
/
b
i
n
:
HADOOP_HOME/bin:
HADOOPHOME/bin:HADOOP_HOME/sbin:
然后保存退出
source /etc/profile 使更改生效
3.验证是否安装成功
验证java的命令:java -version
[root@hadoopnet bigdata]# java -version
java version “1.7.0_45”
OpenJDK Runtime Environment (rhel-2.4.3.3.el6-x86_64 u45-b15)
OpenJDK 64-Bit Server VM (build 24.45-b08, mixed mode)
[root@hadoopnet bigdata]# hadoop version
出现版本信息就表示安装成功
验证hadoop:hadoop version
[root@hadoopnet bigdata]# hadoop version
Hadoop 2.7.1
Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r 15ecc87ccf4a0228f35af08fc56de536e6ce657a
Compiled by jenkins on 2015-06-29T06:04Z
Compiled with protoc 2.5.0
From source with checksum fc0a1a23fc1868e4d5ee7fa2b28a58a
This command was run using /home/bigdata/hadoop/share/hadoop/common/hadoop-common-2.7.1.jar
出现版本信息则表示安装成功
四:全分布式集群的搭建
1.ssh免密配置
更改映射 vi /etc/hosts
192.168.135.11 hadoopnet
192.168.135.12 hadoopnet2
192.168.135.13 hadoopnet3
注意:每一台机器都要更改
设置免密登陆:
ssh-keygen -t rsa
ssh-copy-id hadoopnet
ssh-copy-id hadoopnet2
ssh-copy-id hadoopnet3
每一台机器都要操作
验证是否设置成功
ssh 主机名或者ip地址
2.hadoop集群搭建:修改配置文件
hadoop-env.sh
core-site.xml
hdfs-site.xml
mapred-site.xml
yarn-site.xml
slaves
修改hadoop-env.sh文件
将hadoop-env.sh文件中的
export JAVA_HOME=/home/bigdata/jdk
修改core-site.xml文件
<property>
<name>fs.defaultFS</name>
<value>hdfs://主机:8020</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>4096</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/bigdata/tmp</value>
</property>
修改hdfs-site.xml文件
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.block.size</name>
<value>134217728</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///home/hadoopdata/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///home/hadoopdata/dfs/data</value>
</property>
<property>
<name>fs.checkpoint.dir</name>
<value>file:///home/hadoopdata/checkpoint/dfs/cname</value>
</property>
<property>
<name>fs.checkpoint.edits.dir</name>
<value>file:///home/hadoopdata/checkpoint/dfs/cname</value>
</property>
<property>
<name>dfs.http.address</name>
<value>主机:50070</value>
</property>
<property>
<name>dfs.secondary.http.address</name>
<value>从机1:50090</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
修改mapred-site.xml文件
命令如下:
mv mapred-site.xml.template mapred-site.xml
#vi mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<final>true</final>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>主机:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>主机:19888</value>
</property>
修改yarn-site.xml
<property>
<name>yarn.resourcemanager.hostname</name>
<value>主机</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>主机:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>主机:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>主机:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>主机:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>主机:8088</value>
</property>
修改slaves文件:
将所有需要配置成slave类型的机器的机器名写在其内部即可.
注意:每个机器名占一行。
hadoopnet
hadoopnet2
hadoopnet3
3.发送jdk和hadoop给其他两台从机
scp -r jdk slave1:/home/bigdata/jdk
或者scp -r /home/bigdata/jdk slave1:/home/bigdata/
scp -r jdk slave2:/home/bigdata/jdk
scp -r /home/bigdata/hadoop slave1:/home/bigdata/
scp -r /home/bigdata/hadoop slave2:/home/bigdata/
注意:从机的环境变量是否配置。发送之后 java -version和hadoop version 验证一下
4.启动之前格式化集群一次(只在主机上进行格式化)
hadoop namenode -format
5.启动集群(只在主机上启动)
方法一:傻瓜式启动:start-all.sh
停止服务:stop-all.sh
方法二:单独启动hdfs服务:start-dfs.sh 停止服务stop-dfs.sh
单独启动yarn服务:start-yarn.sh 停止服务stop-yarn.sh
方法三:单独启动/停止 节点
单独开启/停止 hdfs服务的节点 hadoop-daemon.sh start/stop namenode/datanode
单独开启/停止 yarn服务的节点 yarn-daemon.sh start/stop resourcemanager/nodemanager
方法四:强制删除进程
kill -9 进程号
历史服务(JobHistoryServer)的启动:mr-jobhistory-daemon.sh start historyserver
停止历史服务:mr-jobhistory-daemon.sh stop historyserver
验证集群是否启动成功:jps查看
主机启动节点信息:
[root@hadoopnet bigdata]# jps
28726 NodeManager
28627 ResourceManager
28263 NameNode
29019 Jps
28361 DataNode
从节点1启动信息:
[root@hadoopnet2 bigdata]# jps
3974 SecondaryNameNode
4160 Jps
3878 DataNode
4044 NodeManager
从节点2启动信息:
[root@hadoopnet3 bigdata]# jps
2765 Jps
2548 DataNode
2654 NodeManager
运行wordcount程序
1.打开hdfs服务:start-dfs.sh
.打开yarn服务:start-yarn.sh
2.创建一个文件夹test用来存储要计算的文件f.txt
创建文件夹: hdfs dfs -mkdir /test
上传一个文件到test:hdfs dfs -put /home/data/f.txt /test/f.txt
3.创建一个文件夹用来存放计算输出的数据 /output
hdfs dfs -mkdir /output
4.运行计算程序
yarn jar /home/bigdata/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar wordcount /test/f.txt /output/1
注意:输出结果的路径(/output/1)要事先不存在 (自己会生成)
1.节点启动失败解决方案
每台机器删除缓存
删除hadoopdata
删除tmp
进入cd /tmp/ 删除里面的所有内容 rm -rf *
在主机上进行格式化一次
静态(集群关闭情况下进行操作)增加节点:
1.克隆一个从机虚拟机 实现ping通
2.更改映射 vi /etc/hosts
把新增的机器添加的每一台机器的映射中
3.检查新增机器的jdk 和 hadoop是否正常
4.设置ssh免密登陆
5.修改slaves文件:把新增的机器主机名字加到每台机器slaves文件中
6.启动集群验证
静态删除节点:
把需要删除的节点从slaves文件中删除即可
动态(集群开启状态)增加节点:
准备工作:
1.新克隆一台从机虚拟机 实现ping通
2.验证一下你的jdk跟hadoop
3.配置ssh免密钥
4.更改映射信息(就是新加入的机器的ip和名字配置每一台机器中)
5.更改slaves文件
6.启动集群的:单独在新增的机器上启动datanode和nodemanager节点
hadoop-daemon.sh start/stop datenode
yarn-daemon.sh start/stop nodemanager
动态删除节点信息:
三:伪分布式集群的搭建
配置分布式文件系统HDFS服务:
1.找到/home/bigdata/hadoop/etc/hadoop/hadoop-env.sh
把export JAVA_HOME=${JAVA_HOME}
修改为
export JAVA_HOME=/home/bigdata/jdk
2.找到/home/bigdata/hadoop/etc/hadoop/core-site.xml
添加内容:
fs.defaultFS:表示hdfs系统所在的位置
hadoop.tmp.dir 表示hdfs生成的相关临时文件所在路径
3.找到/home/bigdata/hadoop/etc/hadoop/hdfs-site.xml
dfs.replication
1
dfs.block.size
134217728
dfs.http.address
hadoopnet:50070
dfs.secondary.http.address
hadoopnet:50090
dfs.namenode.name.dir
file:///home/hadoopdata/dfs/name
dfs.datanode.data.dir
file:///home/hadoopdata/dfs/data
fs.checkpoint.dir
file:///home/hadoopdata/checkpoint/dfs/cname
fs.checkpoint.edits.dir
file:///home/hadoopdata/checkpoint/dfs/cname
dfs.webhdfs.enabled
true
dfs.permissions
false
dfs.http.address:表示网页查看hdfs文件系统服务的地址
dfs.secondary.http.address 表示的是SecondaryNameNode 网页查看地址
4.格式化文件系统
hdfs namenode -format
5.开启hdfs服务
start-dfs.sh
jps命令查看进程
如果出现:
[root@hadoopnet data]# jps
3084 SecondaryNameNode
3552 Jps
2925 DataNode
2804 NameNode
表示启动服务成功
6.通过页面查看文件系统
在谷歌浏览器输入(英文模式下)http://192.168.135.11:50070
验证服务:
创建文件夹:在根目录下创建一个文件夹test
hdfs dfs -mkdir /test
上传文件:把/home/data下的文件f.txt 上传到hdfs系统的/test
hdfs dfs -put /home/data/f.txt /test
查看hdfs文件系统的列表:
hdfs dfs -ls /
查看hdfs文件系统的文件内容 :查看/test 下的f.txt
hdfs dfs -cat /test/f.txt
7.关闭hdfs文件系统
配置YARN服务:
1.修改mapred-site.xml.template 为mapred-site.xml
mv mapred-site.xml.template mapred-site.xml
添加内容:
mapreduce.framework.name
yarn
2.找到yarn-site.xml
添加内容:
yarn.nodemanager.aux-services
mapreduce_shuffle
3.启动服务:start-yarn.sh
jps查看进程:
出现ResourceManager
NodeManager
jps
表示服务启动成功
4.8088端口查看:
谷歌浏览器http://ip地址或主机名:8088
正常打开则为成功
5.运行wordcount程序
打开hdfs服务:start-dfs.sh
yarn jar /home/bigdata/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar wordcount /test/wordcount.txt /output/1
注意:输出结果的路径(/output/1)要事先不存在 (自己会生成)
6.运行结束,关闭程序
stop-dfs.sh
stop-yarn.sh
也可以stop-all.sh一次性全部关闭
(start-all.sh表示一次性开启所有服务)