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
还没有评论,来说两句吧...