分析: 一台机器配置安装,其他机器分发修改
1 )准备 3 台客户机( 关闭防火墙、静态 ip 、主机名称 )
2 )安装 jdk: 配置环境变量
3 )安装 hadoop: 配置环境变量
4 )安装 ssh
5)编写xsync和xcall脚本
6 )配置集群
7 )启动测试集群
步骤:
选定一个台机器
1.在一台机器上安装jdk参考上面2
2.在一台机器上安装hadoop,参考上面2 .配置ssh:集群可以同时操作
这里我用于测试集群ip地址分别为192.169.1.102-104三台主机。对应的主机名为hadoop102-104
(1)进入到我的home目录
cd ~/.ssh 如何没有.ssh目录,可以新建.ssh目录,然后修改chown为当前用户
(2)生成公钥和私钥:
ssh-keygen -t rsa
然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
(3)将公钥拷贝到要免密登录的目标机器上
ssh-copy-id 192.168.1.102
4. 编写集群分发脚本 xsync
( 1 )在 /usr/local/bin 目录下创建 xsync 文件,文件内容如下:
#!/bin/bash #1 获取输入参数个数,如果没有参数,直接退出 pcount=$# if((pcount==0)); then echo no args; exit; fi #2 获取文件名称 p1=$1 fname=`basename $p1` echo fname=$fname #3 获取上级目录到绝对路径 pdir=`cd -P $(dirname $p1); pwd` echo pdir=$pdir #4 获取当前用户名称 user=`whoami` #5 循环 for(( host=102; host<105 ; host++)); do #echo $pdir/$fname $user@hadoop$host:$pdir echo --------------- hadoop$host ---------------- rsync -rvl $pdir/$fname $user@hadoop$host:$pdir done |
( 2 )修改脚本 xsync 具有执行权限
[root@hadoop102 bin]# chmod a+x xsync
( 3 )调用脚本形式: xsync 文件名称
5.编写脚本分发xcall
1 )需求分析:在所有主机上同时执行相同的命令
xcall + 命令
2 )具体实现
( 1 )在 /usr/local/bin 目录下创建 xcall 文件,文件内容如下:
#!/bin/bash pcount=$# if((pcount==0));then echo no args; exit; fi echo -------------localhost---------- $@ for(( host=101; host<=104; host++)); do echo ----------hadoop$host--------- ssh hadoop$host $@ done |
(2)修改脚本 xcall 具有执行权限
[root@hadoop102 bin]# chmod a+x xcall
(3)调用脚本形式: xcall 操作命令
[root@hadoop102 ~]# xcall rm -rf /opt/tmp/profile
6.集群配置
1 )集群部署规划
Hadoop102 | hadoop103 | hadoop104 | |
HDFS | NameNode DataNode | DataNode | SecondaryNameNode DataNode |
YARN | NodeManager | ResourceManager NodeManager | NodeManager |
2 )配置文件
( 1 ) core-site.xml
<!-- 指定 HDFS 中 NameNode 的地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop102:9000</value> </property> <!-- 指定 hadoop 运行时产生文件的存储目录 --> <property> <name>hadoop.tmp.dir</name> <value>/opt/module/hadoop-2.7.2/data/tmp</value> </property> |
( 2 ) Hdfs
hadoop-env.sh
export JAVA_HOME=/opt/module/jdk1.7.0_79 |
hdfs-site.xml
<configuration> <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>hadoop104:50090</value> </property> </configuration> |
slaves
hadoop102 hadoop103 hadoop104 |
( 3 ) yarn
yarn-env.sh
export JAVA_HOME=/opt/module/jdk1.7.0_79 |
yarn-site.xml
<configuration> <!-- Site specific YARN configuration properties --> <!-- reducer 获取数据的方式 --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!-- 指定 YARN 的 ResourceManager 的地址 --> <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop103</value> </property> </configuration> |
( 4 ) mapreduce
mapred-env.sh
export JAVA_HOME=/opt/modules/jdk1.7.0_79 |
mapred-site.xml
<configuration> <!-- 指定 mr 运行在 yarn 上 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration> |
3 )在集群上分发以上所有文件
cd /opt/module/hadoop-2.7.2/etc/hadoop
xsync /opt/module/hadoop-2.7.2/etc/hadoop/core-site.xml
xsync /opt/module/hadoop-2.7.2/etc/hadoop/yarn-site.xml
xsync /opt/module/hadoop-2.7.2/etc/hadoop/slaves
4 )查看文件分发情况
xcall cat /opt/module/hadoop-2.7.2/etc/hadoop/slaves
7集群启动及测试
1)启动集群
( 0 )如果集群是第一次启动,需要格式化 namenode (如果再次格式化重启,要把每个集群下的data都干掉,logs)
[root@hadoop102 hadoop-2.7.2]# bin/hdfs namenode -format
( 1 )启动 HDFS :
[root@hadoop102 hadoop-2.7.2]# sbin/start-dfs.sh
[root@hadoop102 hadoop-2.7.2]# jps
4166 NameNode
4482 Jps
4263 DataNode
[root@hadoop103 桌面 ]# jps
3218 DataNode
3288 Jps
[root@hadoop104 桌面 ]# jps
3221 DataNode
3283 SecondaryNameNode
3364 Jps
( 2 )启动 yarn
sbin/start-yarn.sh
注意: Namenode 和 ResourceManger 如果不是同一台机器,不能在 NameNode 上启动 yarn ,应该在 ResouceManager 所在的机器上启动 yarn 。
2 )集群基本测试
( 1 )上传文件到集群
上传小文件
bin/hdfs dfs -mkdir -p /user/ robot /tmp/conf
bin/hdfs dfs -put etc/hadoop/*-site.xml /user/ robot /tmp/conf
上传大文件
[ robot @hadoop102 hadoop-2.7.2]$ bin/hadoop fs -put /opt/software/hadoop-2.7.2.tar.gz /user/ robot /input
( 2 )上传文件后查看文件存放在什么位置
文件存储路径
[ robot @hadoop102 subdir0]$ pwd
/opt/module/hadoop-2.7.2/data/tmp/dfs/data/current/BP-938951106-192.168.10.107-1495462844069/current/finalized/subdir0/subdir0
查看文件内容
[ robot @hadoop102 subdir0]$ cat blk_1073741825
hadoop
robot
robot
( 3 )拼接
-rw-rw-r--. 1 robot robot 134217728 5 月 23 16:01 blk_1073741836
-rw-rw-r--. 1 robot robot 1048583 5 月 23 16:01 blk_1073741836_1012.meta
-rw-rw-r--. 1 robot robot 63439959 5 月 23 16:01 blk_1073741837
-rw-rw-r--. 1 robot robot 495635 5 月 23 16:01 blk_1073741837_1013.meta
[ robot @hadoop102 subdir0]$ cat blk_1073741836>>tmp.file
[ robot @hadoop102 subdir0]$ cat blk_1073741837>>tmp.file
[ robot @hadoop102 subdir0]$ tar -zxvf tmp.file
( 4 )下载
[ robot @hadoop102 hadoop-2.7.2]$ bin/hadoop fs -get /user/ robot /input/hadoop-2.7.2.tar.gz
3 )性能测试集群
写海量数据
读海量数据
Hadoop 启动停止方式
1 )各个服务组件逐一启动
( 1 )分别启动 hdfs 组件
hadoop-daemon.sh start|stop namenode|datanode|secondarynamenode
( 2 )启动 yarn
yarn-daemon.sh start|stop resourcemanager|nodemanager
2 )各个模块分开启动(配置 ssh 是前提) 常用
( 1 )整体启动 / 停止 hdfs
start-dfs.sh
stop-dfs.sh
( 2 )整体启动 / 停止 yarn
start-yarn.sh
stop-yarn.sh
3 )全部启动(不建议使用)
start-all.sh
stop-all.sh
作者:
链接:https://blog.csdn.net/qq_26442553/article/details/78695363
来源:CSDN
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。