linux版本是centos7
我这里下的是这个版本hadoop-2.10.2.tar.gz. 去清华镜像 或者阿里华为都可以
我这里有12台机,其中2台要部署hive.这里一定要使用hostname来进行配置,只通过ip来配置的话,总有一些奇奇怪怪的问题.
涉及的hadoop服务集群如下
hadoop98
hadoop99
hadoop100
hadoop102
hadoop103
hadoop104
hadoop105
hadoop106
hadoop107
hadoop108
hive97
hive101
------以上服务器 都是hadoop节点
涉及hive服务器
hive97 主要用这个 ,这台配置了mysql
hive101
需要提前安装好jdk 并配置好java_home
然后把hadoop的压缩包扔到服务器 tar -zxvf 解压就行.解压后,我是放置在/usr/local目录下面
接下来配置一下hadoop的环境变量
/etc/profile
export HADOOP_HOME=/usr/local/hadoop-2.10.2
export PATH=$PATH:$REDIS_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
记得 source /etc/profile
<configuration>
<property>
<name>fs.defaultFSname>
<value>hdfs://hadoop98:9000value>
property>
<property>
<name>hadoop.tmp.dirname>
<value>/usr/local/hadoop-2.10.2/tmpvalue>
property>
<property>
<name>fs.trash.intervalname>
<value>1440value>
property>
configuration>
<configuration>
<property>
<name>dfs.namenode.http-addressname>
<value>hadoop98:50070value>
property>
<property>
<name>dfs.namenode.secondary.http-addressname>
<value>hadoop98:50090value>
property>
<property>
<name>dfs.namenode.name.dirname>
<value>file:/opt/hadoop/dfs/namevalue>
property>
<property>
<name>dfs.datanode.data.dirname>
<value>file:/opt/hadoop/dfs/datavalue>
property>
<property>
<name>dfs.webhdfs.enabledname>
<value>truevalue>
property>
<property>
<name>dfs.replicationname>
<value>1value>
property>
<property>
<name>dfs.permissionsname>
<value>falsevalue>
property>
configuration>
<configuration>
<property>
<name>yarn.resourcemanager.hostnamename>
<value>hadoop98value>
property>
<property>
<name>yarn.nodemanager.aux-servicesname>
<value>mapreduce_shufflevalue>
property>
<property>
<name>yarn.log-aggregation-enablename>
<value>truevalue>
property>
<property>
<name>yarn.log-aggregation.retain-secondsname>
<value>604800value>
property>
<property>
<name>yarn.nodemanager.resource.memory-mbname>
<value>20480value>
property>
<property>
<name>yarn.scheduler.minimum-allocation-mbname>
<value>2048value>
property>
<property>
<name>yarn.nodemanager.vmem-pmem-rationame>
<value>2.1value>
property>
configuration>
<configuration>
<property>
<name>mapreduce.framework.namename>
<value>yarnvalue>
property>
<property>
<name>mapreduce.jobhistory.addressname>
<value>hadoop98:10020value>
property>
<property>
<name>mapreduce.jobhistory.webapp.addressname>
<value>hadoop98:19888value>
property>
configuration>
export HADOOP_IDENT_STRING=$USER
export JAVA_HOME=/usr/local/jdk1.8.0_281
[root@hadoop98 hadoop]# cat slaves
hadoop98
hadoop99
hadoop100
hadoop102
hadoop103
hadoop104
hadoop105
hadoop106
hadoop107
hadoop108
hive97
hive101
[root@hadoop98 hadoop]#
先到 ~/.ssh目录下 生产密钥对
ssh-keygen -t rsa
然后路径会生成公钥(id_rsa.pub)和私钥(id_rsa)
然后通过ssh-copy-id 服务器名(ip),将公钥分发给其他集群中的服务器.然后就可以ssh 免密登录了
通过指令
cat ~/.ssh/id_*.pub|ssh root@待访问的主机IP 'cat>>.ssh/authorized_keys'
解释
但是,在执行上述之前,要确保待访问的主机的~目录下有.ssh文件夹,如果报错要提前执行以下
ssh 待访问的主机 'mkdir .ssh'
xsync这里就是一个名称, 你想改成什么都可以.
他的原理就是通过 使用 rsync同步增量覆盖分发而已
这里测试 hadoop98-100 3台机器,要全部分发的话自行修改 for的循环即可
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
#2. 遍历集群所有机器
for host in hadoop98 hadoop99 hadoop100
do
echo ==================== $host ====================
#3. 遍历所有目录,挨个发送
for file in $@
do
#4. 判断文件是否存在
if [ -e $file ]
then
#5. 获取父目录
pdir=$(cd -P $(dirname $file); pwd)
#6. 获取当前文件的名称
fname=$(basename $file)
ssh $host "mkdir -p $pdir"
rsync -av $pdir/$fname $host:$pdir
else
echo $file does not exists!
fi
done
done
同步hadoop xsync /usr/local/hadoop
同步环境变量 xsync /etc/profile
这里在集群机器上,还要执行source /etc/profile .这里直接通过ssh 服务器来 远程执行也是可以的
----以下 看自己的需求------------
当前,也需要同步jdk xsync /usr/local/jdk
这里意识hadoop98作为主服务器,在这上面执行 start-all.sh即可(这里没有这个命令的话,检查一下环境变量是否配置)
或者执行 start-dfs.sh
hadoop dfsadmin -report