hadoop搭建伪分布式集群 下(centos7+hadoop-3.1.0/2.7.7)
第一部分请参考hadoop搭建伪分布式集群 上
第二部分 Hadoop正式安装
1.安装Hadoop
2.修改hadoop的5个配置文件
3.解决互信问题
1.安装hadoop
直接去官网hadoop下载
建议下载最新的hadoop3.*版本,具体更新特性我也不太清楚,hadoop2.*也可以,1.*就不要考虑了。
进入/usr/local/ 目录将压缩文件解压到目录下,重命名为hadoop
同样我们也需要为hadoop配置环境变量
命令: vim /etc/profile ,然后添加如下几行,sourece profile生效
(忽略最后两行hive配置)
然后命令 hadoop version来测试配置
2.修改hadoop的5个配置文件。非常重要。
现在先看一下hadooped目录。我们可以看到,hadoop下一共有7个目录,bin和sbin是可执行文件的目录,etc是放配置文件的目录,include、lib和libexec均是放一些类库的,share是放一些共享类库和jar包的。
首先,进入cd /usr/local/hadoop/etc/hadoop目录,这5个配置文件均在此目录中。
第一个:hadoop-env.sh
[root@hadoop hadoop]# vi hadoop-env.sh #添加如下一行变量
#hadoop-3.1.0是第54行,hadoop-2.7.7是第25行
#可以使用 :set number来显示行数
export JAVA_HOME=/usr/java
第二个:core-site.xml(HADOOP-HDFS系统内核文件)
[root@hadoop hadoop]# vi core-site.xml #添加如下几行
<configuration>
<!--指定HADOOP所使用的文件系统schema(URI),HDFS的老大(NameNode)的地址-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop:9000</value>
</property>
<!--指定HADOOP运行时产生文件的存储目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>/var/hadoop/tmp</value>
</property>
</configuration>
hadoop.tmp.dir的默认值是/tmp/hadoop-${user.name}。/tmp/是Linux系统的临时目录,如果我们不重新指定的话,默认Hadoop工作目录在Linux的临时目录,一旦Linux系统重启,所有文件将会清空,包括元数据等信息都丢失了,需要重新进行格式化,非常麻烦。
第三个:hdfs-site.xml
[root@hadoop hadoop]# vi hdfs-site.xml #添加如下几行
<configuration>
<!--指定HDFS副本的数量-->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!--设置默认端口,这段是我后来加的,如果不加上会导致启动hadoop-3.1.0后无法访问50070端口查看HDFS管理界面,hadoop-2.7.7可以不加-->
<property>
<name>dfs.http.address</name>
<value>192.168.42.134:50070</value>
</property>
</configuration>
dfs.replication的默认值是3,由于HDFS的副本数不能大于DataNode数,而我们此时安装的hadoop中只有一个DataNode,所以将dfs.replication值改为1。
(192.168.42.134改为自己的ip地址)
dfs.namenode.http-address在hadoop-3.1.0版本上的默认值是 0.0.0.0:9870 ,在hadoop-2.7.7版本上的默认值是0.0.0.0:50070,所以不同版本可以通过不同端口访问NameNode。
第四个:mapred-site.xml
[root@hadoop hadoop]# mv mapred-site.xml.templete mapred-site.xml #重命名,hadoop-3.1.0系统中就是mapred-site.xml不需要改名,hadoop-2.7.7需要改名
[root@hadoop hadoop]# vi mapred-site.xml #添加如下几行,指定hadoop运行在哪种计算框架上,这里指定yarn框架。
<!--指定mr运行在yarn上-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
第五个:yarn-site.xml
[root@hadoop hadoop]# vi yarn-site.xml #添加如下几行
<configuration>
<!-- 指定YARN的老大(ResourceManager)的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop</value>
</property>
<!-- 指定reducer获取数据的方式-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
3.解决互信问题
主要是目的是当hadoop集群有多台机器时,我们可以在任意一台机器上输入start-all.sh命令启动集群中的所有节点,方便快捷。如果不配置免密码登录的话,那么我们需要一台一台机器输入密码登录后分别启动各个节点,非常麻烦。
方式:配置ssh,生成密钥,使ssh可以免密码连接localhost
[root@hadoop rpms_yum]# cd /root
[root@hadoop ~]# ssh-keygen -t rsa #生成ssh密钥对
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:
SHA256:9NevFFklAS5HaUGJtVrfAlbYk82bStTwPvHIWY7as38 root@hadoop
The key's randomart image is:
+---[RSA 2048]----+
| +*O*=.|
| .o=+=o+|
| . ..O +=|
| . . * *.%o|
| S o o %o+|
| . + +.|
| . + .|
| . +E|
| o.o|
+----[SHA256]-----+
[root@hadoop ~]# cd .ssh/
[root@hadoop .ssh]# ls #id_rsa为私钥,id_rsa.pub为公钥
id_rsa id_rsa.pub known_hosts
[root@hadoop .ssh]# cp id_rsa.pub authorized_keys #使主机之间可以免密码登录
[root@hadoop .ssh]# ssh hadoop date #查看(不需要输入密码,直接输出结果,说明免密成功)
第三部分 启动Hadoop集群
1.首先格式化NameNode
[root@hadoop ~]# hdfs namenode -format #中间没有报错并且最后显示如下信息表示格式化成功
...
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at hadoop/192.168.42.134
************************************************************/
注意:如果格式化NameNode之后运行过hadoop,然后又想再格式化一次NameNode,那么需要先删除第一次运行Hadoop后产生的VERSION文件,否则会出错。原因是datanode和namenode的clusterID不一致。
格式化完成后,系统会在dfs.data.dir目录下生成元数据信息。
2.输入 start-all.sh 启动
jps 查看#显示以下几个进程说明启动成功
3.关闭hadoop集群
[root@hadoop hadoop]# stop-all.sh
5.登录HDFS管理界面(NameNode):http://ip:50070
在这里可以可视化查看hdfs文件系统的目录结构