Hadoop三节点集群搭建

接上一篇:Centos7上配置jdk等

免密登录

3个节点分别执行以下命令,获取密钥
ssh-keygen -t rsa
在node001节点上做示范,以下的命令需要在所有节点上执行一遍
ssh-copy-id -i node002
ssh-copy-id -i node003
#将生成的公钥添加到认证文件中,其中.shh是隐藏的,需要在~下执行命令:ls -a才可以看到
cd ~/.ssh
cat id_rsa.pub >> authorized_keys

安装Hadoop

1 创建Hadoop用户组和hadoop用户

创建hadoop用户组和Hadoop用户需要在三台机器上分别执行

#1创建用户组hadoop
[root@node001 ~]# groupadd hadoop
#2创建用户hadoop并添加到hadoop用户组中
[root@node001 ~]# useradd -g hadoop hadoop
#3使用id命令查看hadoop用户组和hadoop用户是否创建成功
[root@node001 ~]# id hadoop
uid=1000(hadoop) gid=1000(hadoop) groups=1000(hadoop)
#4设置hadoop用户密码为hadoop
[root@node001 ~]# passwd hadoop
#5/home/hadoop的目录所有者改为hadoop用户组的hadoop用户,并赋予一定的权限
[root@node001 ~]# chown -R hadoop:hadoop /home/hadoop
[root@node001 ~]# chmod -R 755 /home/hadoop

对hadoop用户做免密登录,配置参考root用户的方式,在三个节点上分别执行以下命令

[root@node001 ~]# su - hadoop
[hadoop@node001 ~]$ ssh-keygen -t rsa
#修改.ssh目录权限
drwx------  2 hadoop hadoop  38 Nov 30 19:17 .ssh
[hadoop@node001 ~]$ chmod -R 755 .ssh/
[hadoop@node001 ~]$ cd .ssh/
[hadoop@node001 .ssh]$ chmod 644 *
[hadoop@node001 .ssh]$ chmod 600 id_rsa
[hadoop@node001 .ssh]$ chmod 600 id_rsa.pub

在node001节点上做示范,以下的命令需要在所有节点上执行一遍
ssh-copy-id -i node002
ssh-copy-id -i node003
2 上传hadoop安装包(可自行搜索上传方法),进行解压

首先都切换到root用户下

#创建hadoop安装目录
[root@node001 ~]# mkdir -p /opt/bigData
#解压hadoop压缩包
[root@node001 bigData]# tar -zxvf /opt/software/hadoop-3.1.3.tar.gz -C /opt/bigData/
3 配置hadoop环境变量
[root@node001 ~]# vim .bash_profile

JAVA_HOME=/opt/software/jdk1.8.0_231
HADOOP_HOME=/opt/bigData/hadoop-3.1.3
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

export JAVA_HOME
export HADOOP_HOME
export PATH
[root@node001 ~]# source .bash_profile
[root@node001 ~]# hadoop version
#把root用户的环境变量文件复制并覆盖hadoop用户下的.bash_profile
[root@node001 ~]# cp .bash_profile /home/hadoop
[root@node001 ~]# su - hadoop
[hadoop@node001 ~]$ source .bash_profile 
[hadoop@node001 ~]$ hadoop version
4 修改hadoop安装目录权限

node001、node002、node003都做如下操作

#修改目录所属用户和组为hadoop:hadoop
[root@node001 /]# chown -R hadoop:hadoop /opt
#修改目录所属用户和组的权限值
[root@node001 /]# chmod -R 755 /opt
[root@node001 /]# chmod -R g+w /opt
[root@node001 /]# chmod -R o+w /opt

配置文件

进入到指定目录下

/opt/bigData/hadoop-3.1.3/etc/hadoop/
1 core-site.xml
<configuration>
<!-- 指定hdfs的namenode主机的hostname-->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://node001:9000</value>
    </property>
<!-- I/O操作流的配置-->
    <property>
        <name>io.file.buffer.size</name>
        <value>131072</value>
    </property>
<!--hadoop集群临时数据存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/bigData/hadoop-3.1.3/tmpdata</value>
    </property>

</configuration>
2 hadoop-env.sh
export JAVA_HOME=/opt/bigData/jdk1.8
3 hdfs-site.xml
<configuration>
    <!-- 工作节点的数据块存储目录-->
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/opt/bigData/hadoop-3.1.3/hdfs/name/</value>
    </property>
    <!-- 指定block块的大小-->
    <property>
        <name>dfs.blocksize</name>
        <value>268435456</value>
    </property>
    <!-- -->
    <property>
        <name>dfs.namenode.handler.count</name>
        <value>100</value>
    </property>
    <!-- 工作节点的数据块存储目录-->
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/opt/bigData/hadoop-3.1.3/hdfs/data/</value>
    </property>
    <!-- block的副本数-->
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>

</configuration>

4 mapred-site.xml

<configuration>
  <!-- 指定运行mapreduce的环境是yarn-->
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
  <property>
    <name>yarn.app.mapreduce.am.env</name>
    <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
  </property>
  <property>
    <name>mapreduce.map.env</name>
    <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
  </property>
  <property>
    <name>mapreduce.reduce.env</name>
    <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
  </property>
  <property>
    <name>mapreduce.application.classpath</name>
    <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*,$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
  </property>
</configuration>

5 yarn-site.xml
<configuration>

<!-- Site specific YARN configuration properties -->
  <!--指定resourcemanager的位置-->
  <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>node001</value>
  </property>
  <!-- NodeManager上运行的附属服务,需配置成mapreduce_shuffle,才可运行MapReduce程序-->
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
  <property>
    <name>yarn.resourcemanager.address</name>
    <value>node001:18040</value>
  </property>
  <property>
    <name>yarn.resourcemanager.scheduler.address</name>
    <value>node001:18030</value>
  </property>
  <property>
    <name>yarn.resourcemanager.resource-tracker.address</name>
    <value>node001:18025</value>
  </property>
  <property>
    <name>yarn.resourcemanager.admin.address</name>
    <value>node001:18141</value>
  </property>
  <property>
    <name>yarn.resourcemanager.webapp.address</name>
    <value>node001:18088</value>
  </property>

</configuration>

配置datanode列表

1、在node001上做如下配置

vim workers(这个文件在/opt/bigData/hadoop-3.1.3/etc/hadoop目录下,此文件用于配置集群有多少个数据节点,
我们把node002,node003作为数据节点,node001集群管理节点)
    node002
    node003

2、把node001上配置好的hadoop分发到其他的节点

for i in {2..3};do scp -r /opt/bigData/hadoop-3.1.3/ node00$i:/opt/bigData/; done

3、远程复制.bash_profile

 scp .bash_profile root@node002:~
 scp .bash_profile root@node003:~

使其分别生效

source .bash_profile
#把root用户的环境变量文件复制并覆盖hadoop用户下的.bash_profile
[root@node001 ~]# cp .bash_profile /home/hadoop
[root@node001 ~]# su - hadoop
[hadoop@node001 ~]$ source .bash_profile 
[hadoop@node001 ~]$ hadoop version

4、在namenode中格式化文件系统(在一个节点上执行即可)

[root@node001 /]# su - hadoop
[hadoop@node001 ~]# hdfs namenode -format

5、开启分布式文件系统(/opt/bigData/hadoop/sbin)
发送键盘输入的所有会话

./start-all.sh

如果报异常:

node001: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

则执行如下命令(三个节点都要执行):

[hadoop@node001 ~]$ cd .ssh/
[hadoop@node001 .ssh]$ cat id_rsa.pub >> authorized_keys 

然后执行下面的命令查看

jps

出现如下,则成功
在这里插入图片描述
最后通过浏览器访问:
http://node001:9870/

运行mapreduce程序

#1.使用hdfs dfs -ls / 命令浏览hdfs文件系统
[hadoop@node001 ~]$ hdfs dfs -ls /
#2.创建测试目录
[hadoop@node001 ~]$ hdfs dfs -mkdir /test
#3.在此使用hdfs dfs -ls / 发现我们刚才创建的test目录
[hadoop@node001~]$ hdfs dfs -ls /
Found 1 items
drwxr-xr-x   - hadoop supergroup          0 2019-12-05 17:24 /test
#4.使用touch命令在linux本地目录创建一个words文件
[hadoop@node001 ~]$ touch words
#5.文件中输入如下内容
[hadoop@node001 ~]$ vim words
i love you
are you ok
#6.将创建的本地words文件上传到hdfs的test目录下
[hadoop@node001 ~]$ hdfs dfs -put words /test
#7.查看上传的文件是否成功
[hadoop@node001 ~]$ hdfs dfs -ls -r /test
#8./test/words是hdfs上的文件存储路径 /test/output是mapreduce程序的输出路径,这个输出路径
是不能已经存在的路径,mapreduce程序运行的过程中会自动创建输出路径,数据路径存在的话
会报错,这里需要注意下
#9.使用hadoop自带的例子
[hadoop@node002 mapreduce]$ hadoop jar /opt/bigData/hadoop/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /test/words /test/output
欢迎关注我的微信公众号,不定期更新文章和大家一起学习共勉在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值