栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

ubuntu安装hadoop集群

ubuntu安装hadoop集群

文章目录
  • 0.前置条件
  • 1. 安装JDK
  • 2. 安装hadoop
    • 2.1 安装
    • 2.2 hadoop修改配置文件
    • 2.3启动hadoop服务
    • 2.4 可能报错
  • 3. hadoop集群的增删改查
    • 3.1 增加节点
    • 3.2 删除节点

0.前置条件

在/etc/hosts里面配置节点和别名(master,node1.node2)
三个节点配置免密登陆的ssh

1. 安装JDK

JDK就是java和java的开发环境的合称
官网:
https://www.java.com/zh-CN/download/help/index_installing.html

wget https://download.java.net/openjdk/jdk8u41/ri/openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz

mkdir /usr/java
tar zxvf openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz -C /usr/java
sudo vim /etc/profile

export JAVA_HOME=/usr/java/java-se-8u41-ri
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

source /etc/profile

java -version
jps

安装好java后,在/etc/profile或者 ~/.bashrc下添加环境变量,后source /etc/profile 或者 source ~/.bashrc 即可

/etc/profile和~/.bashrc的区别是 /etc/profile 是全局的,也就是你在任何一个用户下执行都可以, ~/.bashrc 这个是某个用户所单独拥有的,像java这样的每个用户都需要的 写在 /etc/profile下即可
jre是运行环境,只是运行java的,不包含工具包
开发包是jdk,包含工具包和运行环境

安装完成之后,按照同样的方式在node节点上都安装上jdk

2. 安装hadoop 2.1 安装

https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/

wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz

tar zxvf hadoop-3.3.0.tar.gz -C /usr/local/
cd /usr/local/
mv hadoop-3.3.0 hadoop

vim ~/.bashrc
export HADOOP_HOME=/usr/local/hadoop
export CLASSPATH=$($HADOOP_HOME/bin/hadoop classpath):$CLASSPATH
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native
source  ~/.bashrc

hadoop version

Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode,同时,读取的是 HDFS 中的文件。Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中,伪分布式需要修改2个配置文件 core-site.xml 和 hdfs-site.xml 。Hadoop的配置文件是 xml 格式,每个配置以声明 property 的 name 和 value 的方式来实现。首先将jdk1.7的路径添(export JAVA_HOME=/usr/lib/jvm/java )加到hadoop-env.sh文件

2.2 hadoop修改配置文件

添加环境变量

vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh

export JAVA_HOME=/usr/java/java-se-8u41-ri
source ~/.bashrc

修改core-site.xml文件:


    
        fs.defaultFS
        hdfs://master:8020
    

    
        hadoop.tmp.dir
        /usr/local/hadoop/hadoopDatas/tempDatas
    

    
    
        io.file.buffer.size
        1024
    

    
        fs.trash.interval
        10080
        检查点被删除后的分钟数。 如果为零,垃圾桶功能将被禁用。
        该选项可以在服务器和客户端上配置。 如果垃圾箱被禁用服务器端,则检查客户端配置。
        如果在服务器端启用垃圾箱,则会使用服务器上配置的值,并忽略客户端配置值。
    

    
        fs.trash.checkpoint.interval
        0
        垃圾检查点之间的分钟数。 应该小于或等于fs.trash.interval。
        如果为零,则将该值设置为fs.trash.interval的值。 每次检查指针运行时,
        它都会从当前创建一个新的检查点,并删除比fs.trash.interval更早创建的检查点。
    

接下来修改配置文件 hdfs-site.xml


    
        dfs.hosts
        /usr/local/hadoop/etc/hadoop/accept_host
    

    
        dfs.hosts.exclude
        /usr/local/hadoop/etc/hadoop/deny_host
    


    
        dfs.namenode.secondary.http-address
        master:50090
    

    
        dfs.namenode.http-address
        master:50070
    

    
        dfs.namenode.name.dir
        file:///usr/local/hadoop/hadoopDatas/namenodeDatas
    

    
        dfs.datanode.data.dir
        file:///usr/local/hadoop/hadoopDatas/datanodeDatas
    

    
        dfs.namenode.edits.dir
        file:///usr/local/hadoop/hadoopDatas/dfs/nn/edits
    

    
        dfs.namenode.checkpoint.dir
        file:///usr/local/hadoop/hadoopDatas/dfs/snn/name
    

    
        dfs.namenode.checkpoint.edits.dir
        file:///usr/local/hadoop/hadoopDatas/dfs/nn/snn/edits
    

    
        dfs.replication
        2
    

    
        dfs.permissions
        false
    

    
        dfs.blocksize
        134217728
    


接下来修改配置文件 yarn-site.xml



    
        yarn.resourcemanager.hostname
        master
    

    
        yarn.nodemanager.aux-services
        mapreduce_shuffle
    

    
        yarn.log-aggregation-enable
        true
    

    
        yarn.log.server.url
        http://master:19888/jobhistory/logs
    

    
    
        yarn.log-aggregation.retain-seconds
        2592000
    

    
    
        yarn.nodemanager.log.retain-seconds
        604800
    

    
    
        yarn.nodemanager.log-aggregation.compression-type
        gz
    

    
    
        yarn.nodemanager.local-dirs
        /usr/local/hadoop/hadoopDatas/yarn/local
    

    
    
        yarn.resourcemanager.max-completed-applications
        1000
    

接下来修改配置文件 mapred-site.xml



    
        mapreduce.framework.name
        yarn
    

    
        mapreduce.job.ubertask.enable
        true
    

    
        mapreduce.jobhistory.address
        master:10020
    

    
        mapreduce.jobhistory.webapp.address
        master:19888
    


创建上面配置文件中声明的data路径

cd /usr/local/hadoop
mkdir -p hadoopDatas/{tempDatas,namenodeDatas,datanodeDatas,dfs/nn/edits,dfs/snn/name,dfs/nn/snn/edits}

声明node节点
hadoop3.0 slaves改为works

vim /usr/local/hadoop/etc/hadoop/workers

master
node1

复制hadoop目录到node节点服务器(slaves服务器)
这里注意,需要添加java的环境和hadoop的路径到node节点的/etc/profile文件中,并通过source生效,相当于全拷贝一份到节点服务器

scp -r /usr/local/hadoop node2:/usr/local/

如果你是root用户配置和运行的hadoop,则需要配置下面的文件
在/hadoop/sbin路径下:
将start-dfs.sh,stop-dfs.sh两个文件顶部添加以下参数

#!/usr/bin/env bash
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

还有,start-yarn.sh,stop-yarn.sh顶部也需添加以下:

#!/usr/bin/env bash
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

Hadoop 的运行方式是由配置文件决定的(运行 Hadoop 时会读取配置文件),因此如果需要从伪分布式模式切换回非分布式模式,需要删除 core-site.xml 中的配置项。此外,伪分布式虽然只需要配置 fs.defaultFS 和 dfs.replication 就可以运行(可参考官方教程),不过若没有配置 hadoop.tmp.dir 参数,则默认使用的临时目录为 /tmp/hadoo-hadoop,而这个目录在重启时有可能被系统清理掉,导致必须重新执行 format 才行。所以我们进行了设置,同时也指定 dfs.namenode.name.dir 和 dfs.datanode.data.dir,否则在接下来的步骤中可能会出错。

2.3启动hadoop服务

配置完成后,执行 NameNode 的格式化

./bin/hdfs namenode -format

启动namenode和datanode进程,并查看启动结果

 ./sbin/start-dfs.sh
 jps

启动完成后,可以通过命令 jps 来判断是否成功启动,若成功启动则会列出如下进程: “NameNode”、”DataNode” 和 “SecondaryNameNode”

2.4 可能报错
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform

解决思路:https://blog.csdn.net/qq_41541801/article/details/82413776

hadoop ERROR: Attempting to operate on hdfs namenode as root ERROR: but there is no HDFS_NAMENODE_US

解决思路:https://blog.csdn.net/lglglgl/article/details/80553828

Permission denied

解决思路:

cd ~/.ssh
mkdir backup && mv id_rsa* backup
ssh-keygen -t rsa
#注意不要输入密码,即免密登陆
cat id_rsa.pub >> authorized_keys

登陆被管理的服务器,进入需要远程登陆的用户目录,把公钥放到用户目录的 .ssh 这个目录下(如果目录不存在,需要创建~/.ssh目录,并把目录权限设置为700),把公钥改名为authorized_keys,并且把它的用户权限设成600

put: File /home/wget-log._COPYING_ could only be written to 0 of the 1 minReplication nodes. There are 0 datanode(s) running and 0 node(s) are excluded in this operation.

解决思路
解决办法是:找到hadoop安装目录下 hadoop-2.4.1/data/dfs/data里面的current文件夹删除,然后从新执行一下 hadoop namenode -format,再使用start-dfs.sh和start-yarn.sh 重启一下hadoop
用jps命令看一下就可以看见datanode已经启动了

3. hadoop集群的增删改查 3.1 增加节点

比如增加节点node2,前置的条件都是一样的:
1.配置JDK和hadoop,并且加到环境中
2.所有节点设置/etc/hosts,并且设置成ssh免密登陆
3.在master主机添加新节点到workers文件中
上面的前置条件完成后,开始执行下面的步骤
hadoop系统正处于运行之中,要将新添加的节点动态加入到系统中,只需要在此节点上启动datanode和nodemanager

cd /usr/local/hadoop
sbin/hadoop-daemon.sh start datanode

重启所有的节点

hdfs --daemon stop datanode
hdfs --daemon start datanode
jps

查看节点有没有加进来

hdfs dfsadmin -report

因为HDFS里面都是有数据的,增加节点会导致数据分布不均衡,所有需要进行自动均衡操作。默认的数据传输带宽比较低,可以设置为64M,目录如下:

hdfs dfsadmin -setBalancerBandwidth 67108864

默认balancer的threshold为10%,即各个节点与集群总的存储使用率相差不超过10%,我们在均衡时可以指定该值为5%:

start-balancer.sh -threshold 5

在新增的节点启动nodemanager进程
Hadoop 从2.X引入了YARN框架,所以对于每个计算节点都可以通过NodeManager进行管理,同理启动NodeManager进程后,即可将其加入集群。

yarn-daemon.sh start nodemanager
yarn --daemon stop nodemanager
yarn --daemon start nodemanager
jps
yarn node -list

新增的节点 slaves 启动了 DataNode 和 NodeManager,实现了动态向集群添加了节点,至此Hadoop 动态添加节点操作完成。

3.2 删除节点

在删除的节点上关闭进程

yarn-daemon.sh stop nodemanager

hadoop-daemon.sh stop datanode

在主节点刷新

hdfs dfsadmin -refreshNodes

查看节点状态(可以看到节点的状态变成了Decommissioned,过一段时间后变成Died)

hdfs dfsadmin -report
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/487145.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号