今天尝试安装Hadoop,为接下来学习Hadoop做好准备。
一、准备环境
1.1、查看操作系统的版本
[root@cql ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.5 (Santiago)
1.2 关闭防火墙
[root@cql ~]# service iptables stop
[root@cql ~]# service ip6tables stop
[root@cql ~]# chkconfig iptables off
[root@cql ~]# chkconfig ip6tables off
1.3 关闭selinux
[root@cql ~]# sed -i 's|enforcing|disabled|' /etc/sysconfig/selinux
安装Hadoop,首先要配置安装JDK,我电脑上自带的是1.7的,为了练习保持一致,我下载linux和window都是1.8的,所以我准备把我之前的卸载,重新配置JDK,下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html
二、配置JDK
- 卸载1.7版本的JDK
[root@cql ~]# rpm -qa|grep jdk
java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64
[root@cql ~]# rpm -e --nodeps java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64
把下载好的jdk-8u181-linux-x64.tar.gz上传到虚拟机上,我这个是放在/soft目录下了,解tar包
[root@cql soft]# tar -xzvf jdk-8u181-linux-x64.tar.gz
2、配置环境变量,编辑.bash_profile文件,把JAVA_HOME,JRE_HOME,CLASSPATH,PATH路径设置好
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:$JRE_HOME/bin
export PATH
export JAVA_HOME=/soft/jdk1.8.0_181/
export JRE_HOME=/soft/jdk1.8.0_181/jre
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
编辑完成生效
[root@cql ~]# source .bash_profile
3、验证当前的版本
[root@cql ~]# java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
三、Hadoop下载和安装
去http://hadoop.apache.org/ 你找各种各样的版本都可以,我这次安装的是3.0
选择的是二进制下载binary download,下载完之后,生成hadoop-3.0.3.tar.gz,传到虚拟机/soft目录下
1、解HADOOP tar包
[root@cql soft]# tar -xzvf hadoop-3.0.3.tar.gz
2、配置环境变量,编辑.bash_profile文件
[root@cql ~]# vi .bash_profile
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:$JRE_HOME/bin:/soft/hadoop-3.0.3/bin:/soft/hadoop-3.0.3/sbin
export HADOOP_INSTALL=/soft/hadoop-3.0.3
把解压目录下的bin/和sbin/目录放到path中
3、生效,可看到HADOOP版本
[root@cql ~]# source .bash_profile
[root@cql ~]# hadoop version
Hadoop 3.0.3
Source code repository https://yjzhangal@git-wip-us.apache.org/repos/asf/hadoop.git -r 37fd7d752db73d984dc31e0cdfd590d252f5e075
Compiled by yzhang on 2018-05-31T17:12Z
Compiled with protoc 2.5.0
From source with checksum 736cdcefa911261ad56d2d120bf1fa
This command was run using /soft/hadoop-3.0.3/share/hadoop/common/hadoop-common-3.0.3.jar
ps:在配置信息里面,你可以看到,我只配置了HADOOP_INSTALL和PATH路径,而HADOOP_HOME就不配置了,因为HADOOP——INSTALL目录下面有bin和sbin目录,都是有可执行文件,如果我配置,则容易造成冲突
这里HADOOP的安装已经安装好了,下面就是HADOOP配置了
四、HADOOP配置
hadoop配置有三种模式:
- 独立模式:独立模式没有守护进程,所有的程序都是运行在单独的虚拟机上,独立模式适合运行MapReduce程序在开发期间,用于测试和调试
- 伪分布式:Hadoop守护进程运行在本地机器上,它会模拟一个小规模的集群
- 完全分布式:hadoop守护进程运行在集群机器
独立模式,不用配置,因为单机,没有守护进程,默认情况下都是独立模式,下面配置伪分布式(pseudo),首先将hadoop安装目录etc目录下的hadoop目录,重新拷贝一份,命名为Hadoop_pesudo
1 新建Hadoop_pseudo伪分布式
[root@cql etc]# pwd
/soft/hadoop-3.0.3/etc
[root@cql etc]# ls -l
总用量 4
drwxr-xr-x. 3 2003 2003 4096 6月 1 01:36 hadoop
[root@cql etc]# cp -R hadoop hadoop_pseudo
[root@cql etc]# ls -l
总用量 8
drwxr-xr-x. 3 2003 2003 4096 6月 1 01:36 hadoop
drwxr-xr-x. 3 root root 4096 8月 11 20:12 hadoop_pseudo
2 配置Hadoop_pesudo伪分布式,进入Hadoop_pseudo目录下
需要配置core-site.xml, hdfs-site.xml, yarn-site.xml, mapreduce-site.xml等四个文件
[root@cql hadoop_pseudo]# vi core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost/</value>
</property>
</configuration>
设置文件系统,fs都是默认,hdfs地址默认为本机
[root@cql hadoop_pseudo]# vi hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
设置副本,因为是伪分布式,所以值是1
[root@cql hadoop_pseudo]# vi mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
伪分布式需要设置yarn,yarn是MapReduce的框架
[root@cql hadoop_pseudo]# vi yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>localhost</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
配置资源管理器的一些东西
五、配置SSH
从上面可以看出,伪分布式就是在单机配置的,伪分布式是完全分布式的一个特例,但是Hadoop没有真正的区分伪分布式还是完全分布式,它启动守护进程到集群节点上的通信是通过(定义slaves文件)SSH通信,所以我们只需要配置本地的ssh,登陆的时候不用输入密码
[root@cql ~]# service sshd status
openssh-daemon (pid 1616) 正在运行...
[root@cql ~]# which ssh-keygen
/usr/bin/ssh-keygen
[root@cql ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
50:97:43:55:28:ef:a2:fd:19:2d:98:c1:03:65:1d:36 root@cql
The key's randomart image is:
+--[ RSA 2048]----+
| ..=+E+. |
| . ++.o. |
| . . + |
| . o . |
| S +. |
| .=.. |
| oo.o . |
| . . + |
| .o |
+-----------------+
注意上面有三处需要输入信息,分别是:
存储公私钥的文件夹位置,如果不输入,则默认为~/.ssh/,文件名则默认是id_rsa和id_rsa.pub
使用该公私钥时是否需要密码,如果不输入则表示不需要密码
再次确认是否需要密码
[root@cql ~]# cd .ssh
[root@cql .ssh]# ls -l
总用量 8
-rw-------. 1 root root 1675 8月 11 21:17 id_rsa
-rw-r--r--. 1 root root 390 8月 11 21:17 id_rsa.pub
[root@cql .ssh]# cat id_rsa.pub >> authorized_keys
[root@cql .ssh]# ssh localhost date
The authenticity of host 'localhost (::1)' can't be established.
RSA key fingerprint is c5:57:76:63:28:a3:ef:59:be:72:81:de:87:94:fa:90.
Are you sure you want to continue connecting (yes/no)?
Host key verification failed.
失败了
后来加了一个参数,成功了,这个时候在.ssh下面也生成了一个known_hosts文件,然后再登陆测试的时候,就能登陆成功
[root@cql .ssh]# ssh -o StrictHostKeyChecking=no localhost
Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
Last login: Sat Aug 11 21:27:24 2018