Linux Hadoop集群搭建


免密钥配置


SSH是什么?
SSH为Secure Shell的缩写,是为建立在应用层和传输层基础上的安全协议。SSH专为远程登录会话和其他网络服务提供安全性的协议,常用于远程登录。也就是说,SSH是用来远程操作Linux系统下的服务器的。
接下来我们进行安装SSH:
在终端命令行执行:rpm -qa | grep “ssh”,执行结果请看下图,说明已经安装;其实在安装linux操作系统的时候默认就会安装上的。
在这里插入图片描述
如果SSH服务没有安装怎么办?找到操作系统镜像文件解压,找到ssh相关的包,上传到服务器然后执行如下安装命令安装即可rpm -ivh rpm包名如果服务器挂载了镜像,可以直接采用如下命令安装也可以yum install ssh
这里因为小编的linux服务器已经安装SSH,就不在做安装操作了。
启动命令service sshd start
停止命令service sshd stop
重启命令service sshd restart
首先我们来看看SSH服务是否启动了,请执行如下命令即可service sshd status
怎么查看SSH端口是多少?
执行如下命令more /etc/ssh/sshd_config就可以查看到有说明,默认端口为22
另外端口是可以修改的

配置免密钥
在192.168.1.191上执行ls -l命令
ssh root@192.168.1.191 ‘ls -l’
可以看到需要输入password,下面进行免密钥配置
下面配置免密钥
在主机上配置,生成公钥和私钥
ssh-keygen -t rsa -P ‘’ -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys 这里看实际情况可以不写
将公钥拷贝到其他机器,如果其他机器没有.ssh目录。 ssh localhost 便会出来
scp id_rsa.pub node02:/root/.ssh/node01.pub
在其他机器的 authorized_keys中追加公钥
cat node01.pub >> authorized_keys
再次ssh root@192.168.1.191 ‘ls -l’ 变不需要密码

hadoop集群搭建

  1. 配置java环境,上篇中有配置方法,验证java使用 jps 。追加配置信息在/etc/profile中
export PATH	
export JAVA_HOME=/usr/java/jdk-11.0.3
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export HADOOP_HOME=/opt/hadoop-3.1.2
export PATH=$JAVA_HOME/bin:$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:

(注意:PATH使用:英文冒号分割)

  1. 配置hadoop java环境,配置绝对路径
hadoop.env.sh 
	export JAVA_HOME=/usr/java/jdk-11.0.3
mapred-env.sh 
	export JAVA_HOME=/usr/java/jdk-11.0.3
yarn-env.sh 
	export JAVA_HOME=/usr/java/jdk-11.0.3
  1. 配置xml文件
在hadoop中的/etc下
core -site.xml  

  <property>
        <name>fs.defaultFS</name>
        <value>hdfs://node01:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/hadoop-3.1.2/tmp</value>
    </property>

(注意:hadoop3.X以前使用)
slaves
	node02
	node03
	node04
(注意:hadoop3.X以后使用)
workers
	node02
	node03
	node04
	
hdfs-site.xml

    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>node02:50090</value>
    </property>
    <property>
        <name>dfs.name.dir</name>
        <value>/opt/hadoop-3.1.2/tmp/dfs/name</value>
    </property>
    <property>
        <name>dfs.data.dir</name>
        <value>/opt/hadoop-3.1.2/tmp/dfs/data</value>
    </property>
    <property>
         <name>dfs.permissions</name>
        <value>false</value>
    </property>

yarn-site.xml
   <property>
        <description>指定YARN的老大(ResourceManager)的地址</description>
        <name>yarn.resourcemanager.hostname</name>
        <value>192.168.1.190</value>
   </property>
 
<!-- NodeManager上运行的附属服务。需要配置成mapreduce_shfffle,才可运行MapReduce程序默认值 -->
   <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
   </property>
 
   <property>
        <discription>每个节点可用内存,单位MB,默认8182MB</discription>
        <name>yarn.scheduler.maximum-allocation-mb</name>
        <value>2048</value>
   </property>
 
   <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
   </property>

mapred-site.xml
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>

在hadoop中sbin下
start-dfs.sh

	HDFS_DATANODE_USER=root
	HADOOP_SECURE_DN_USER=hdfs
	HDFS_NAMENODE_USER=root
	HDFS_SECONDARYNAMENODE_USER=root 
	HDFS_ZKFC_USER=root
	HDFS_JOURNALNODE_USER=root


start-yarn.sh

	YARN_RESOURCEMANAGER_USER=root
	HADOOP_SECURE_DN_USER=yarn
	YARN_NODEMANAGER_USER=root
  1. 将hadoop复制到其他机器: scp -r ./hadoop-3.1.2/ node02:/opt/
  2. 格式化:hdfs namenode -format
  3. 启动:start-dfs.sh
  4. 启动yarn
    ${HADOOP_HOME}/sbin/yarn-daemon.sh start resourcemanager
    ${HADOOP_HOME}/sbin/yarn-daemon.sh start nodemanager
    (注意,每次格式化清空tmp文件:保证id一致,否则手动更改name下id和data下id样子hi)
    重新format需要清空缓存
    rm -rf /opt/hadoop-3.1.2/tmp/dfs/name/
    rm -rf /opt/hadoop-3.1.2/tmp/dfs/data/
    mkdir /opt/hadoop-3.1.2/tmp/dfs/name/
    mkdir /opt/hadoop-3.1.2/tmp/dfs/data

附加:

创建目录:hdfs dfs -mkdir -p /user/root
上传文件:hdfs dfs -put /root/test.txt /user/root
上传文件指定大小切片:hdfs dfs -D dfs.blocksize=1048576 -put /root/hadooptestdata.txt
阿里云linux sftp连接不上

  1. 重启sshd: /etc/init.d/sshd reload 或者service sshd restart
  2. vi /etc/ssh/sshd_config 去掉Subsystem sftp /usr/libexec/openssh/sftp-server前面#
    注释掉
    UsePAM yes
    Match User test
    ChrootDirectory /opt/download/
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no
    在重启sshd

hadoop3.X后的坑

  1. hdfs的web页面默认端口是9870 yarn的web页面端口是8088
  2. 配置文件中的slaves文件没了,变成了workers文件,在里面配置datanode节点
  3. 在进行namenode格式化是有几个Fail,不要因此怀疑自己,只要common.Storage: Storage directory /usr/local/hadoop-3.0.2/hdfs/name has been successfully formatted. 这个提醒是存在的就没有问题
  4. 在启动时,start-dfs.sh start-yarn.sh时报错
Starting namenodes on [namenode]
ERROR: Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
Starting datanodes
ERROR: Attempting to operate on hdfs datanode as root
ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.
Starting secondary namenodes [datanode1]
ERROR: Attempting to operate on hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.
Starting resourcemanager
ERROR: Attempting to operate on yarn resourcemanager as root
ERROR: but there is no YARN_RESOURCEMANAGER_USER defined. Aborting operation.
Starting nodemanagers
ERROR: Attempting to operate on yarn nodemanager as root
ERROR: but there is no YARN_NODEMANAGER_USER defined. Aborting operation

注意是在文件开始空白处
start-dfs.sh
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
HDFS_ZKFC_USER=root
HDFS_JOURNALNODE_USER=root

start-yarn.sh
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

  1. 注意jdk版本,一定不要使用jdk11,最好是jdk8,否则即使hadoop集群全部启动,namenode和datanode都没有错误,但是在上传读取文件时候都不能发现datanode,如下图
    在这里插入图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值