目录
一、安装准备
1、下载jdk和hadoop包
2、虚拟机单机环境
二、环境安装&配置
1、修改linux主机名
2、安装jdk
3、设置免密码登录 SSH
三、hadoop配置
1、配置hadoop_home环境变量
2、配置hadoop配置文件
2.1 配置core-site.xml文件
2.2 配置hdfs-site.xml文件
2.3 配置yarn-site.xml
2.4 配置mapred-site.xml
2.5 配置文件 mapred-site.xml
2.6 配置slaves
2.7 配置hadoop-env.sh
3、格式化分布式文件系统(HDFS)
4、启动HADOOP集群
5、验证HADOOP集群
6、关闭防火墙
一、安装准备
1、下载jdk和hadoop包
1. Jdk:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
2. Hadoop包:http://apache.fayea.com/hadoop/common/hadoop-2.7.2/
2、虚拟机单机环境
32位的linux [www.19cr.com][红帽企业Linux.6.5.服务器版].rhel-server-6.5-i386-dvd.iso
32位的jdk jdk-8u111-linux-i586.tar.gz
二、JDK\SSH安装&配置
1、修改linux主机名
- 修改这两个文件,修改后reboot命令,重新启动服务器
vi /etc/sysconfig/network
vi /etc/hosts 将第一行的localhost改为想要设置的主机名 第二行不要动 #需要去掉
例如,这里的截图是配置了完全分布式之后截取的 所以包含了两台slaves的信息
2、安装jdk
/*给jdk 文件赋权限,使其可以被当前用户操作 sudo chmod u+x 文件名*/
rpm包自动安装到系统目录/usr/java/,tar包解压后,需指定路径 安装路径在哪里都可以,只要在profile文件中写好即可。
- 安装jdk
#tar -xzvf jdk-8u111-linux-i586.tar.gz --tar包
#rpm -ivh xxx.rpm --rpm包
- jdk的安装目录
/usr/java/jdk1.8.0_111/
- 编辑 profile文件
#vi /etc/profile
添加 JAVA_HOME=/usr/java/jdk1.8.0_111/
#source /etc/profile --使修改生效
#echo $JAVA_HOME --打印java路径
分别执行 java/javac -version --检查jdk是否正确安装 两个显示的版本要一样的
3、设置免密码登录 SSH
在Hadoop启动以后,Namenode是通过SSH(Secure Shell)来启动和停止各个datanode上的各种守护进程的,这就须要在节点之间执行指令的时候是不须要输入密码的形式,故我们须要配置SSH运用无密码公钥认证的形式。分布式环境中每台机器上都安装了ssh,并且datanode机器上sshd服务已经启动
- 安装SSH秘钥
#ssh-keygen -t rsa
- 执行这个命令后 会自动生成一个 .SSH的目录 在这个目录下 就是我们公钥和私钥,id_rsa.pub 是公钥
[root@wlh ~]# cd .ssh/
[root@wlh .ssh]# cat id_rsa.pub >> authorized_keys
[root@wlh .ssh]# ll
total 12
-rw-r--r--. 1 root root 390 Nov 28 08:39 authorized_keys
-rw-------. 1 root root 1675 Nov 28 08:33 id_rsa
-rw-r--r--. 1 root root 390 Nov 28 08:33 id_rsa.pub
- 验证
[root@wlh ~]# ssh wlh --ssh后面跟的是 你要远程的服务器的主机名或地址
注:如SSH报错,不需要删除文件,修改后直接执行 ssh 主机名即可
三、hadoop配置
1、配置hadoop_home环境变量
- 解压 tar zxf hadoop-3.0.0-alpha1.tar.gz
- 解压后执行 vi /etc/profile
添加 HADOOP_HOME=/opt/hadoop-3.0.0-alpha1
PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH
例(这个截图时候来安装2.7.2版本时的截图)
- 执行 source /etc/profile 使修改生效
2、配置hadoop配置文件
HADOOP 的配置文件存放在/opt/hadoop-3.0.0-alpha1/etc/hadoop目录下,需要配置以下六个文件
core-site.xml
hdfs-site.xml
yarn-site.xml
mapred-site.xml
slaves
hadoop-env.sh
/*--在 <configuration> </configuration> 键值对中间写*/
2.1 配置core-site.xml文件
- 配置文件系统,hdfs的端口
<property>
<name>fs.default.name</name>
<value>hdfs://wlh:9000</value> --<value>hdfs://linux主机名:端口</value>
</property>
- 配置一个目录
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop-3.0.0-alpha1/current/tmp</value> --要手动创建这个目录
</property>
- 分布式文件系统的垃圾箱(trash)
<property>
<name>fs.trash.interval</name>
<value>4320</value>--4320这个数是按分钟算的,3分钟,3分钟会清理一次
</property>
2.2 配置hdfs-site.xml文件
- 配置分布式文件系统
- 配置namenode位置
<property>
<name>dfs.namenode.dir</name>
<value>/opt/hadoop-3.0.0-alpha1/current/name</value> --要手动创建这个目录
</property>
- 配置datanode的信息
/*这个实际上是要在datanode上配置的不用再namenode上配置,但现在配置的是伪分布式环境namenode和datanode在同一台机器上。*/
<property>
<name>dfs.datanode.dir</name>
<value>/opt/hadoop-3.0.0-alpha1/current/data</value> --要手动创建这个目录
</property>
- 配置副本的数量,每个块有几个副本,伪分布式只有一个节点 ,value是1
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
- 配置hdfs是否启用web
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
- 配置HDFS的用户组和权限
<property>
<name>dfs.permissions.superusergroup</name>
<value>staff</value> --staff是hdfsd的用户组
</property>
- 不开启权限
<property>
<name>dfs.permissions.senabled</name>
<value>false</value>
</property>
2.3 配置yarn-site.xml
<property>
<name>yarn.resourcemanager.hostname</name>
<value>wlh</value>--运行resourcemanager的机器的主机名
</property>
<property>
<name>yarn.nodemanager.aux.services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux.services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
- resourcemanager的端口
<property>
<name>yarn.resourcemanager.address</name>
<value>wlh:18040</value> --主机名+端口号 或者 IP地址+端口号
</property>
- resourcemanager的调度器端口
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>wlh:18030</value> --所有的端口号都可以任意指定,但是不能重复
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>wlh:18025</value> --主机名+端口号 或者 IP地址+端口号
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>wlh:18141</value> --主机名+端口号 或者 IP地址+端口号
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>wlh:18888</value> --主机名+端口号 或者 IP地址+端口号
</property>
- yarn中的日志是否启用
<property>
<name>yarn.log.aggregation.retain.seconds</name>
<value>86400</value>
</property>
<property>
<name>yarn.log.aggregation.retain.check.interval.seconds</name>
<value>86400</value>
</property>
- nodemanager
<property>
<name>yarn.nodemanager.remote.app.log.dir</name>
<value>/tmp/logs</value>
</property>
<property>
<name>yarn.nodemanager.remote.app.log.dir.suffix</name>
<value>logs</value>
</property>
2.4 配置mapred-site.xml
目录中没有mapred-site.xml.文件 只有mapred-site.xml.template 所以复制mapred-site.xml.template 文件重命名
cp mapred-site.xml.template mapred-site.xml
2.5 配置文件 mapred-site.xml
- mapreduce基于哪个框架
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
- 通信的端口
<property>
<name>mapreduce.jobtracker.http.address</name>
<value>wlh:5030</value>
</property>
- job history
<property>
<name>mapreduce.jobhistory.address</name>
<value>wlh:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>wlh:19888</value>
</property>
<property>
<name>mapreduce.jobhistory.done.dir</name>--已完成的日志目录
<value>/jobhistroy/done</value>
</property>
<property>
<name>mapreduce.intermediate.done.dir</name>--中间情况日志目录
<value>/jobhistroy/done_intermediate</value>
</property>
<property>
<name>mapreduce.job.ubertask.enable</name>--中间情况日志目录
<value>true</value>
</property>
2.6 配置slaves
datanode nodemanager在哪个机器上运行,在文件中写主机名即可
[root@wlh hadoop]# vi slaves
wlh
2.7 配置hadoop-env.sh
添加 JAVA_HOME=/usr/java/jdk1.8.0_111/
[root@wlh hadoop]# vi hadoop-env.sh
3、格式化分布式文件系统(HDFS)
[root@wlh hadoop]# hdfs namenode -format
执行这个命令后出现的语句中有这一行为成功2016-11-30 00:44:56,889 INFO common.Storage: Storage directory /opt/hadoop-3.0.0-alpha1/current/tmp/dfs/name has been successfully formatted.
4、启动HADOOP集群
- 在 /opt/hadoop-3.0.0-alpha1/sbin目录下执行star-all.sh文件
[root@wlh sbin]# /opt/hadoop-3.0.0-alpha1/sbin/start-all.sh
This script is deprecated. Use start-dfs.sh and start-yarn.sh instead.
- 分别启动即可
[root@wlh sbin]# /opt/hadoop-3.0.0-alpha1/sbin/start-dfs.sh
[root@wlh sbin]# /opt/hadoop-3.0.0-alpha1/sbin/start-yarn.sh
5、验证HADOOP集群
- 第一种方式执行jps ,显示当前系统中java的进程
[root@wlh sbin]# jps
11602 ResourceManager
11141 NameNode
11861 NodeManager
12038 Jps
11227 DataNode
11406 SecondaryNameNode
- 第二种方式通过端口来查看
[root@wlh ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:F8:B0:41
inet addr:192.168.128.129 Bcast:192.168.128.255 Mask:255.255.255.0
端口 50070 查看HDFS的运行情况 --192.168.128.129:50070
端口 18088 查看YARN的运行情况 --192.168.128.129:18088
6、关闭防火墙
[root@wlh ~]# service iptables stop
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
50070端口访问失败 ,已关闭防火墙。(18088端口可以访问)
解决:
检查50070端口是否启动,启动端口
[root@wlh ~]# netstat -anp | grep 50070
yarn默认占用的内存就是8G无论你的虚拟机设备是否有这些内存,所以需要在yarn-site中做配置,把这个内存设置成你机器适配的大小
active node 存活的节点
遇到的问题:
1、50070端口访问失败 ,已关闭防火墙。18088端口可以访问
- i.查看日志
$HADOOP_HOME/logs/下面的与NameNode相关的日志,查看日志后没有发现ERROR信息;
- ii.检查50070端口是否启动
[root@wlh ~]#netstat -anp | grep 50070
[root@wlh ~]#sh start-dfs.sh
2、datanode没有启动
[root@wlh sbin]# jps
15552 ResourceManager
15812 NodeManager
15365 SecondaryNameNode
15094 NameNode
18345 Jps*/
原因是 执行了多次格式化 ,解决方法:
- a.删除current目录下的tmp文件夹,重新建立
[root@wlh current]# rm -rf tmp
[root@wlh current]# mkdir tmp
[root@wlh tmp]# mkdir logs
- b.删除logs文件夹,重新建立
[root@wlh hadoop-3.0.0-alpha1]# rm -rf logs
[root@wlh hadoop-3.0.0-alpha1]# mkdir logs
- c.执行格式化
[root@wlh hadoop]# hdfs namenode -format
- d.启动服务
[root@wlh hadoop]# /opt/hadoop-3.0.0-alpha1/sbin/start-dfs.sh
[root@wlh hadoop]# /opt/hadoop-3.0.0-alpha1/sbin/start-yarn.sh
- e.再次执行jps
[root@wlh hadoop]# jps
22017 ResourceManager
22274 NodeManager
21635 DataNode
21813 SecondaryNameNode
22443 Jps
21550 NameNode
问题3、4 都是帮助其他朋友安装时遇到的问题,他用的jdk版本是jdk-8u121-linux-i586.rpm
3、jdk安装报错:Error occurred during initalization of VM java/lang/NoClssDefFoun
出现此问题先检查环境变量配置是否正确,如果没问题就看一下lib和jre/lib中的rt.pack、tools.pack如果发现这两个文 的话,就是因为他们没有解压我们只需要把他们解压成rt.jar和tools.jar就一切OK了
如:
Java 代码
unpack200 rt.pack rt.jar
4、格式化hadoop报错java.lang.InternalError: internal error: SHA-1 not available.
- 原因,找不到类,把java里面的jar全部加到classPath中,既 在profile文件中添加
CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
export PATH JAVA_HOME CLASSPATH
如果还不能解决问题,就换个jdk吧~
5、另一个小朋友的问题 执行hdfs namenode -format报错
解决方法:
- 查看hosts和network两个文件中hostname配置
- 修改host文件中的主机名,reboot
- 重新执行hdfs namenode -format