大数据运维2--MapReduce的配置,简单的词频分析,hadoop节点的管理,搭建NFS挂载HDFS系统

目录

MapReduce的配置(主要是给开发用的,程序呢)

hadoop统计词频

移除节点

NFS配置


 

MapReduce的配置(主要是给开发用的,程序呢)

需要修改两个配置文件 mapred-site.xml和yarn-site.xml,在nn01节点安装之后,需要同步到其他的主机上.

 

大数据运维2--MapReduce的配置,简单的词频分析,hadoop节点的管理,搭建NFS挂载HDFS系统_第1张图片

 

 

[root@nn01 hadoop]# cd /usr/local/hadoop/etc/hadoop/
[root@nn01 hadoop]# cp mapred-site.xml.template  mapred-site.xml
[root@nn01 hadoop]# vim mapred-site.xml

 20
 21         mapreduce.framework.name  ---指定资源管理的的套件是什么,我们指定是yarn
 22         yarn
 23    

解析:分布式计算框架mapred-site.xml只支持local和yarn两种,单机使用local,集群使用yaml

[root@nn01 hadoop]# vim yarn-site.xml

 18
 19         yarn.resourcemanager.hostname  ----指定那台主机安装resourcemanager
 20         nn01
 21    

 22    
 23         yarn.nodemanager.aux-services  ---使用哪种计算框架,是开发写的j计算框架的jar包
 24         mapreduce_shuffle
 25    

 

[root@nn01 ~]# for i in {61..63}; do scp -r  /usr/local/hadoop/ 192.168.1.$i:/usr/local/hadoop/ ; done

[root@nn01 hadoop]# ./sbin/start-yarn.sh    ---启动resourcemanager和nodemanager两个节点
starting yarn daemons
starting resourcemanager, logging to /usr/local/hadoop/logs/yarn-root-resourcemanager-nn01.out
node3: starting nodemanager, logging to /usr/local/hadoop/logs/yarn-root-nodemanager-node3.out
node1: starting nodemanager, logging to /usr/local/hadoop/logs/yarn-root-nodemanager-node1.out
node2: starting nodemanager, logging to /usr/local/hadoop/logs/yarn-root-nodemanager-node2.out
[root@nn01 hadoop]# jps
2647 ResourceManager
1256 NameNode
2906 Jps
1439 SecondaryNameNode
[root@nn01 hadoop]# ssh node1 jps
1315 NodeManager
1411 Jps
1018 DataNode
[root@nn01 hadoop]# ssh node2 jps
983 DataNode
1279 NodeManager
1375 Jps
[root@nn01 hadoop]# ssh node3 jps
1280 NodeManager
1376 Jps
984 DataNode

验证
[root@nn01 hadoop]# /usr/local/hadoop/bin/yarn node -list
20/06/19 20:35:25 INFO client.RMProxy: Connecting to ResourceManager at nn01/192.168.1.60:8032
Total Nodes:3
         Node-Id         Node-State    Node-Http-Address    Number-of-Running-Containers
     node1:43208            RUNNING           node1:8042                               0
     node3:40913            RUNNING           node3:8042                               0
     node2:36472            RUNNING           node2:8042                               0
 

 

hadoop统计词频

 

[root@nn01 hadoop]# /usr/local/hadoop/bin/hadoop --help  #查看hadoop的一些操作

[root@nn01 hadoop]# /usr/local/hadoop/bin/hadoop fs    #查看命令的一些参数
Usage: hadoop fs [generic options]
    [-appendToFile ... ]

[root@nn01 hadoop]# /usr/local/hadoop/bin/hadoop fs -ls /
[root@nn01 hadoop]# /usr/local/hadoop/bin/hadoop fs -mkdir /input
[root@nn01 hadoop]# /usr/local/hadoop/bin/hadoop fs -ls /
Found 1 items
drwxr-xr-x   - root supergroup          0 2020-06-19 20:37 /input
 

 

大数据运维2--MapReduce的配置,简单的词频分析,hadoop节点的管理,搭建NFS挂载HDFS系统_第2张图片


[root@nn01 hadoop]# /usr/local/hadoop/bin/hadoop fs  -ls /    #看文件系统里面的/目录里面用什么
Found 2 items
-rw-r--r--   2 root supergroup          0 2020-06-19 20:43 /file1
drwxr-xr-x   - root supergroup          0 2020-06-19 20:37 /input
[root@nn01 hadoop]# ls
bin  etc  include  lib  libexec  LICENSE.txt  logs  NOTICE.txt  README.txt  sbin  share  zhy  zhy1
[root@nn01 hadoop]# /usr/local/hadoop/bin/hadoop fs  -put *.txt /input/  #将本地的*.txt的文件上传的hadoop的文件系统中
[root@nn01 hadoop]# /usr/local/hadoop/bin/hadoop fs  -get /input  /tmp/  #将hadoop的文件系统下载到本地的/tmp/
[root@nn01 hadoop]# cd /tmp/
[root@nn01 tmp]# ls
firefox_root                       input                                 systemd-private-76f2aeadd70b469a8cc6143e521f002a-chronyd.service-OA3zeG
hadoop-root                        Jetty_nn01_50070_hdfs____.g8rurc      systemd-private-c4b2b65a9c924fc19c10511b54b16054-chronyd.service-i7iO6z
hadoop-root-namenode.pid           Jetty_nn01_50090_secondary____qe27dn  systemd-private-ea72bc68d88548e7a5ce9e5e8c9f6031-chronyd.service-xlIB1q
hadoop-root-secondarynamenode.pid  Jetty_nn01_8088_cluster____.bwtsq9    yarn-root-resourcemanager.pid
hsperfdata_root                    sh-thd-27940862161
 

[root@nn01 hadoop]# ./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount /input /ouput   #分析数据,将hadoop分布式文件系统的中的/input的数据进行单词频率的统计,统计完毕之后放到/output

[root@nn01 hadoop]# /usr/local/hadoop/bin/hadoop fs  -cat /ouput/part-r-00000  查看分析出来的数据

 

配置node4 

[root@node4 ~]#  yum -y install java-1.8.0-openjdk-devel

[root@node4 ~]# mkdir /var/hadoop

[root@nn01 ~]# ssh-copy-id 192.168.1.64

[root@nn01 ~]# scp /etc/hosts 192.168.1.64:/etc/
hosts                                                                                                                                                              100%  226   137.3KB/s   00:00    
[root@nn01 ~]# cd /usr/local/hadoop/
[root@nn01 hadoop]# vim ./etc/hadoop/slaves 
[root@nn01 hadoop]# cat ./etc/hadoop/slaves 
node1
node2
node3
node4

[root@nn01 hadoop]# scp -r  /usr/local/hadoop/ 192.168.1.64:/usr/local/hadoop/ 

[root@nn01 hadoop]# for i in node{1..3}; do scp /usr/local/hadoop/etc/hadoop/slaves root@$i:/usr/local/hadoop/etc/hadoop/ ; done

[root@node4 hadoop]#  ./bin/hdfs dfsadmin -setBalancerBandwidth 60000000  #设置同步宽带的信息
Balancer bandwidth is set to 60000000
[root@node4 hadoop]# ./sbin/start-balancer.sh  #启动服务,让节点自动扩容
starting balancer, logging to /usr/local/hadoop/logs/hadoop-root-balancer-node4.out
Time Stamp               Iteration#  Bytes Already Moved  Bytes Left To Move  Bytes Being Moved

 

.

[root@node4 hadoop]# cd /usr/local/hadoop/
[root@node4 hadoop]# ./sbin/hadoop-daemon.sh start datanode   #开启datanode节点

[root@node4 hadoop]# /usr/local/hadoop/sbin/yarn-daemon.sh start nodemanager   #开启nodemanager节点
starting nodemanager, logging to /usr/local/hadoop/logs/yarn-root-nodemanager-node4.out
[root@node4 hadoop]# jps
1605 Jps
1256 DataNode
1503 NodeManager
starting datanode, logging to /usr/local/hadoop/logs/hadoop-root-datanode-node4.out #启动

[root@node2 hadoop]# ./sbin/start-dfs.sh  ---可以选择重新启动HDFS集群,如果集群中显示另外的节点信息的时候

[root@nn01 hadoop]#  ./bin/hdfs dfsadmin -report   ---可以看到出现新的节点

[root@nn01 hadoop]# ./sbin/start-yarn.sh  ----可以选择重新启动mapreduce集群,如果集群中显示另外的节点信息的时候

[root@nn01 hadoop]# /usr/local/hadoop/bin/yarn node -list   --可以看到新的节点信息

[root@node4 ~]# jps
24704 Jps
1256 DataNode
1503 NodeManager

 

移除节点

基本操作思路:在移除节点的时候,需要先把对应的节点的数据,移除到其他的节点.假设要移除node4节点的数据,我们需要从查node4的DFS数据量,如果这个节点的数据量被移到其他的记得,则可以下线node4节点,下线节点需要在主节点nn01上的配置文件上配置下线节点的信息,在此刷新节点的时候,会读取下线节点的信息从而执行.如果需要将节点彻底移除节点外,这个时候需要将有关配置的node4节点的信息清楚掉,再次刷新,需要等3-4个小时的时候,主要,如果数据量比较大的时候,在迁移节点信息的时候,会化比较多的时间.如果迁移之后的数据,相差几十K,这个可以忽略不计.

[root@nn01 hadoop]# ls
bin  etc  include  lib  libexec  LICENSE.txt  logs  NOTICE.txt  README.txt  sbin  share  zhy  zhy1

[root@nn01 hadoop]# ./bin/hdfs dfsadmin -report 

Name: 192.168.1.64:50010 (node4)

DFS Used: 8192 (8 KB)

Name: 192.168.1.61:50010 (node1)

DFS Used: 200704 (196 KB)

Name: 192.168.1.63:50010 (node3)
DFS Used: 172032 (168 KB)

Name: 192.168.1.62:50010 (node2)

DFS Used: 364544 (356 KB)

[root@nn01 hadoop]# vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml

 33    
 34     dfs.hosts.exclude    #声明要移除的hadoop的节点信息路径
 35     /usr/local/hadoop/etc/hadoop/exclude
 36    

[root@nn01 hadoop]# cat /usr/local/hadoop/etc/hadoop/exclude  #创建该文件,文件写名需要移除那台节点
node4
 

[root@nn01 hadoop]# ./bin/hdfs dfsadmin -refreshNodes   #刷新节点
Refresh nodes successful
[root@nn01 hadoop]# ./bin/hdfs dfsadmin -report  #查看node4状态,如果是Decommissioned,则表示同步成功,同时也可以观察其他节点的存储数据量在增加,增加的量为node4的量,这个时候node4节点则可以下线了.

Name: 192.168.1.64:50010 (node4)
Decommission Status : Decommissioned

下线节点:dnf节点和yarn节点

[root@node4 ~]# /usr/local/hadoop/sbin/hadoop-daemon.sh stop datanode
stopping datanode

[root@nn01 hadoop]# cat  /usr/local/hadoop/etc/hadoop/slaves 
node1
node2
node3

[root@nn01 hadoop]# vim /usr/local/hadoop/etc/hadoop/slaves 
[root@nn01 hadoop]# > /usr/local/hadoop/etc/hadoop/exclude 
[root@nn01 hadoop]# /usr/local/hadoop/bin/hdfs dfsadmin -refreshNodes
Refresh nodes successful
[root@nn01 hadoop]# /usr/local/hadoop/bin/hdfs dfsadmin -report  #需要3-4个小时下线

[root@node4 ~]# /usr/local/hadoop/sbin/yarn-daemon.sh stop nodemanager  #需要3-4个小时下线
stopping nodemanager
[root@node4 ~]# /usr/local/hadoop/bin/yarn node -list

 

 

NFS配置

概念:当使用hadoop的文件系统操作的时候,对于目录文件有些太过于繁琐,这个时候如果可以将hadoop的文件系统挂载到NFS上去操作,这个时候的操作步骤相当于会比较的简单.

NFS网关用途:用户可以通过操作系统兼容的本地NFSv3客户端来浏览HDFS文件系统,用户可以从HDFS文件系统下载文档到本地文件系统,用户可以通过挂载点直接流化数据,支持文件附加,但是不支持随机写,NFS网关支持NFSv3和容许HDFS作为客户端文件系统的一部分被挂载.

 

大数据运维2--MapReduce的配置,简单的词频分析,hadoop节点的管理,搭建NFS挂载HDFS系统_第3张图片

 

配置

[root@nn01 hadoop]# cat /etc/hosts
# ::1        localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1    localhost localhost.localdomain localhost4 localhost4.localdomain4
192.168.1.60 nn01
192.168.1.61 node1
192.168.1.62 node2
192.168.1.63 node3
192.168.1.64 node4
192.168.1.65 nfsgw

 

 

 

 

 

[root@nfsgw ~]# yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel

[root@nfsgw ~]# cat /etc/hosts
# ::1        localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1    localhost localhost.localdomain localhost4 localhost4.localdomain4
192.168.1.60 nn01
192.168.1.61 node1
192.168.1.62 node2
192.168.1.63 node3
192.168.1.65 nfsgw
配置代理用户NameNode和NFSGW上添加代理用户,代理用户的UID,GID,用户名必须完全相同.如果因特殊原因客户端的用户和NFS网关的用户UID不能保持一致,需要我们配置nfs.map的静态映射关系.为了不是那么麻烦,我们可以在两台机器上创建新的用户即可.
[root@nfsgw ~]# groupadd -g 800 nfsuser
[root@nfsgw ~]# useradd -u 800 -g 800 -r -d /var/hadoop nfsuser

[root@nn01 hadoop]# groupadd -g 800 nfsuser
[root@nn01 hadoop]#  useradd -u 800 -g 800 -r -d /var/hadoop nfsuser
 

在集群中授权,在集群的nno1管理节点上

1.停止集群

[root@nn01 hadoop]# /usr/local/hadoop/sbin/stop-all.sh

2.配置文件,添加授权信息core-site.xml

[root@nn01 hadoop]# vim /usr/local/hadoop/etc/hadoop/core-site.xml 

 28      
 29         hadoop.proxyuser.nfsuser.groups
 30         *
 31    

 32    
 33         hadoop.proxyuser.nfsuser.hosts
 34         *
 35    

 

3.同步配置文件到所有集群机器

[root@nn01 ~]# cd /root/.ssh
[root@nn01 .ssh]#  ssh-copy-id 192.168.1.65

[root@nn01 hadoop]# for i in node{1..3}
> do
> scp /usr/local/hadoop/etc/hadoop/core-site.xml root@$i:/usr/local/hadoop/etc/hadoop/core-site.xml
> done
core-site.xml                                                                  100% 1199   651.0KB/s   00:00    
core-site.xml                                                                  100% 1199   874.4KB/s   00:00    
core-site.xml                                                                  100% 1199     2.3MB/s   00:00 
4.启动集群,验证

[root@nn01 ~]# /usr/local/hadoop/sbin/start-dfs.sh 
 

[root@nn01 ~]# jps
20899 Jps
20596 NameNode
20790 SecondaryNameNode
[root@nn01 ~]# ssh node1 jps
5856 DataNode
5934 Jps
[root@nn01 ~]# ssh node2 jps
6220 Jps
6142 DataNode
[root@nn01 ~]# ssh node3 jps
5641 Jps
5563 DataNode
 

[root@nn01 ~]# /usr/local/hadoop/bin/hdfs dfsadmin -report
Live datanodes (3):
 

配置NFS网关

配置步骤启动一个新的系统,卸载rpcbind,nfs-utils

配置/etc/hosts,添加所有NameNode和DataNode的主机名和ip对应关系

安装JAVA运行环境(java-1.8.0-openjdk-devel)

同步NameNode的/usr/local/hadoop到本机

[root@nfsgw ~]#  mkdir /var/hadoop

[root@nn01 hadoop]# scp -r /usr/local/hadoop/ 192.168.1.65:/usr/local/hadoop/

配置hdfs-site.xml

[root@nfsgw ~]# cd /usr/local/hadoop/etc/hadoop/

[root@nfsgw hadoop]# vim hdfs-site.xml

 38    
 39         nfs.exports.allowed.hosts
 40         * rw
 41    

 42    
 43         nfs.dump.dir
 44         /var/nfstmp
 45    

 

解析:nfs.exports.allowed.hosts默认情况下,export可以被任何客户端挂载,为了更好的控制访问,可以设置属性,值和字符串对应机器名和访问策略,通过空格来分割.机器名的格式可以是单一的主机,java的正则表达式或者IPV4地址.

使用rw或ro可以指定导出目录的读写或只读权限.如果访问策略没被提供,默认为只读.每个条目使用;来分割

nfs.dump.dir

用户需要更新文件转储目录参数.NFS客户端经常重新安排写操作,顺序的写操作会随机到达NFS网关.这个目录常用于临时存储无序的写操作.对于每个文件,无序的写操作会在他们积累在内存中超过一定值,(如1M)时被转储.需要确保有足够的空间的目录..

如:应用上传10个100M,那么这个转储目录推荐1GB左右的空间,以便每个文件都发生最坏的情况.只有NFS网关需要在设置该属性后重启

启动服务

[root@nfsgw hadoop]# mkdir /var/nfstmp   #创建hadoop,并给他设置权限
[root@nfsgw hadoop]# chown nfsuser.nfsuser /var/nfstmp

[root@nfsgw hadoop]# cd /usr/local/hadoop/

[root@nfsgw hadoop]# ll
drwxr-xr-x 2 root root  4096 6月  22 16:12 logs

[root@nfsgw hadoop]# setfacl -m u:nfsuser:rwx logs  #给logs目录设置对应的权限
[root@nfsgw hadoop]# getfacl logs
# file: logs
# owner: root
# group: root
user::rwx
user:nfsuser:rwx
group::r-x
mask::rwx
other::r-x
 

[root@nfsgw hadoop]# cd /usr/local/hadoop/
[root@nfsgw hadoop]# jps
25303 Jps
[root@nfsgw hadoop]# /usr/local/hadoop/sbin/hadoop-daemon.sh --script ./bin/hdfs start portmap

#一定要要先启动portmap.因为nfs是在portmap的时候起来的,如果portmap重启了,需要将
starting portmap, logging to /usr/local/hadoop/logs/hadoop-root-portmap-nfsgw.out
[root@nfsgw hadoop]# jps
25376 Jps
25332 Portmap

[root@nfsgw hadoop]# sudo -u nfsuser id   ##一定要采用nfsuser
uid=800(nfsuser) gid=800(nfsuser) 组=800(nfsuser)        
[root@nfsgw hadoop]# sudo -u nfsuser /usr/local/hadoop/sbin/hadoop-daemon.sh --script ./bin/hdfs start nfs3
starting nfs3, logging to /usr/local/hadoop/logs/hadoop-nfsuser-nfs3-nfsgw.out

[root@nfsgw hadoop]# sudo -u nfsuser jps
25432 Nfs3
25484 Jps

 

用客户端访问

注意:目前NFS只能使用v3版本vers=3,只使用TCP作为传输协议,proto=tcp,不支持NLM所以使用nolock.禁用access time的时间更新noatime.禁用acl扩展权限.强烈建议使用安装选项sync,它可以最小化避免重排序写入造成不可预测的吞吐量,未指定同步选项可能会导致上传大文件时出现不可靠行为.

[root@node4 ~]# yum -y install nfs-utils

[root@node4 ~]# showmount -e 192.168.1.65
Export list for 192.168.1.65:
/ *
[root@node4 ~]# mount -t nfs -o vers=3,proto=tcp,nolock,noacl,noatime,sync 192.168.1.65:/ /mnt
[root@node4 ~]# cd /mnt/
[root@node4 mnt]# ls
file1  input  ouput  system  tmp  ---HDFS文件系统

实现开机自动挂载

[root@node4 mnt]# vim /etc/fstab 
/dev/vda1    /    xfs    defaults    0 0
192.168.1.65:/  /mnt/ nfs  vers=3,proto=tcp,nolock,noatime,sync,noacl,_netdev 0 0


 

 

 

 

你可能感兴趣的:(大数据运维2--MapReduce的配置,简单的词频分析,hadoop节点的管理,搭建NFS挂载HDFS系统)