普通用户部署hadoop全分布式集群(平台)部署

Hadoop2.7.2全分布式平台部署+Hive2.3.3+Spark2.4.3

基础配置

注意:全部服务器都需要执行以下操作

创建用户和用户组
sudo groupadd hadoop
mkdir -p /home/hadoop
sudo useradd hadoop -d /home/hadoop/hadoop -g hadoop -s /bin/bash
echo 'hadoop:hadoop' | chpasswd
为普通用户设置权限
chmod u+w /etc/sudoers
echo "hadoop ALL=(ALL) ALL" >> /etc/sudoers
echo "hadoop ALL=(ALL:ALL) NOPASSWD: NOPASSWD: ALL" >> /etc/sudoers
chmod u-w /etc/sudoers

设置主机名
vi /etc/hostname 
master
保存退出
bash

关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service

更改时区
echo "TZ='Asia/Shanghai'; export TZ" >> /etc/profile && source /etc/profile

yum install -y ntp
vi /etc/ntp.conf

#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server 127.127.1.0
fudge 127.127.1.0 stratum 10

systemctl start ntpd.service

添加映射
vi /etc/hosts
master_ip master
slave1_ip slave1
slave2_ip slave2

宿主机互相免密通信
ssh-keygen -t rsa
cat .ssh/id_rsa.pub >> .ssh/authorized_keys
将三台宿主机的的公钥相互复制
chmod 700 .ssh && chmod 600 .ssh/authorized_keys 

设置文件权限

sudo chown -R hadoop:hadoop /opt

注意:以下全部操作默认hadoop用户下执行,如需root用户操作时,会有提示

配置java

mkdir -p /opt/java
解压
tar -zxvf jdk-8u221-linux-x64.tar.gz -C /opt/java
环境变量(root用户下执行)
vi /etc/profile
export JAVA_HOME=/opt/java/jdk1.8.0_221
export CLASSPATH=$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH

source /etc/profile

检查java是否配置成功

java -version

查看Java版本信息

安装Hadoop2.7.2

注意:只需主服务器需要执行以下操作

解压
tar -zxvf hadoop-2.7.2.tar.gz -C /opt/hadoop/
环境变量(root用户下执行)
vi /etc/profile
export HADOOP_HOME=/opt/hadoop/hadoop-2.7.2
export CLASSPATH=$CLASSPATH:$HADOOP_HOME/lib
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

source /etc/profile
配置hadoop-env.sh文件
echo "export JAVA_HOME=/opt/java/jdk1.8.0_221" >> hadoop-env.sh
配置core-site.xml文件
<!--默认的主机名和端口号-->
<property>
    <name>fs.default.name</name>
    <value>hdfs://master:9000</value>
</property>
<!--临时数据的目录-->
<property>
    <name>hadoop.tmp.dir</name>
    <value>file:/opt/hadoop/hadoop-2.7.2/tmp</value>
</property>
<!--SNN检查NN日志时间间隔(单位为秒)-->
<property>
    <name>fs.checkpoint.period</name>
    <value>60</value>
</property>
<!--缓冲区大小-->
<property>
    <name>io.file.buffer.size</name>
    <value>131072</value>
</property>
<!--设置日志文件大小为64M-->
<property>
    <name>fs.checkpoint.size</name>
    <value>67108864</value>
</property>
配置hdfs-site.xml文件
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <property>
        <name>dfs.permissions.enabled</name>
        <value>false</value>
    </property>
    <property>
        <name>dfs.namenode.http.address</name>
        <value>master:50070</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/opt/hadoop/hadoop-2.7.2/tmp/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/opt/hadoop/hadoop-2.7.2/tmp/dfs/data</value>
    </property>
    <!--定义HDFS对应的HTTP服务器地址和端口-->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>slave1:9031</value>
    </property>
    <!--开启webhdfs,允许文件的访问修改等操作-->
    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>
配置mapred-site.xml文件
cp mapred-site.xml.template mapred-site.xml && vi mapred-site.xml
    
<property> 
	<name>mapreduce.framework.name</name> 
	<value>yarn</value> 
</property>
配置yarn-site.xml文件
    <property> 
        <name>yarn.nodemanager.aux-services</name> 
        <value>mapreduce_shuffle</value> 
    </property> 
    <!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是true -->
    <property>
        <name>yarn.nodemanager.pmem-check-enabled</name>
        <value>false</value>
    </property>
    <!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true -->
    <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
    </property>
    <property> 
        <name>yarn.resourcemanager.hostname</name> 
        <value>master</value> 
    </property>
    <property>
        <name>yarn.nodemanager.resource.detect-hardware-capabilities</name>
        <value>true</value>
    </property>
    <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>32768</value>
    </property>
    <property>
        <name>yarn.scheduler.maximum-allocation-mb</name>
        <value>8192</value>
    </property>
    <property>
        <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
    <!--RM提供的管理员访问地址,向RM发送管理命令等-->
    <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>master:8033</value>
    </property>
    <!-- 指定ResourceManager的地址-->
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>master:8040</value>
    </property>
    <!--RM提供给ApplicationMster的访问地址,AM通过该地址向RM申请资源、释放资源等-->
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>master:8030</value>
    </property>
    <!--RM对web服务提供地址-->
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>0.0.0.0:8088</value>
    </property>
    <!--RM提供NodeManager地址, 通过该地址向RM心跳、领取任务等-->
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>master:8031</value>
    </property>
    <property>
        <name>yarn.nodemanager.disk-health-checker.min-healthy-disks</name>
        <value>0.0</value>
    </property>
    <property>
        <name>yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage</name>
        <value>80.0</value>
    </property>
配置yarn-env.sh文件
echo "export JAVA_HOME=/opt/java/jdk1.8.0_221" >> yarn-env.sh
配置msater、slaves文件
echo master >> master && echo slave1 >> slaves && echo slave2 >> slaves
传输-格式化-启动
将安装目录传输到从节点

scp -r /opt/hadoop/hadoop-2.7.2 hadoop@slave1:/opt/hadoop/
scp -r /opt/hadoop/hadoop-2.7.2 hadoop@slave2:/opt/hadoop/

在主节点执行格式化
hdfs namenode -format

在主节点执行启动
start-all.sh
stop-all.sh

jps

在这里插入图片描述

slave2节点图片

注意:以下所有相关内容全部都是在主节点配置

安装mysql

下载安装(root用户下)
yum -y install epel-release && yum -y install wget
wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
rpm -ivh mysql57-community-release-el7-9.noarch.rpm
yum -y install mysql-community-client --nogpgcheck              
yum -y install mysql-community-common --nogpgcheck                        
yum -y install mysql-community-libs --nogpgcheck                                          
yum -y install numactl-libs --nogpgcheck
yum -y install mysql-community-server --nogpgcheck
yum -y install  mariadb-server

sudo systemctl daemon-reload
sudo systemctl start mysqld
sudo systemctl status mysqld
配置mysql信息
grep 'password' /var/log/mysqld.log

mysql -u root -p
修改密码
set global validate_password_policy=0;
set global validate_password_length=1;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';

设置hadoop用户权限

create user 'hadoop'@'localhost' identified by 'hadoop'; 
grant all privileges on *.* to 'hadoop'@'localhost' with grant option;
grant all privileges on *.* to 'hadoop'@'localhost' identified by 'hadoop' with grant option;
flush privileges; 

部署Hive2.3.3

基础配置
mkdir -p /opt/hive/
解压
tar -zxvf apache-hive-2.3.4-bin.tar.gz -C /opt/hive/
配置环境变量(root下)
vi /etc/profile
export HIVE_HOME=/opt/hive/apache-hive-2.3.3-bin
export PATH=$PATH:$HIVE_HOME/bin

source /etc/profile
复制文件
cp mysql-connector-java-5.1.47-bin.jar /opt/hive/apache-hive-2.3.3-bin/lib
配置hive-site.xml
vi hive-site.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true&amp;useSSL=false</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>hadoop</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>hadoop</value>
    </property>
    <property>
        <name>system:java.io.tmpdir</name>
        <value>/opt/hive/iotmp</value>
    <description/>
    </property>
    <property>
        <name>hive.files.umask.value</name>
        <value>0002</value>
    </property>
    <property>
        <name>hive.metastore.authorization.storage.checks</name>
        <value>true</value>
    </property>
    <property>
        <name>hive.metastore.execute.setugi</name>
        <value>false</value>
    </property>
    <property>
        <name>hive.security.authorization.enabled</name>
        <value>false</value>
    </property>
    <property>
        <name>hive.security.authorization.task.factory</name>
        <value>org.apache.hadoop.hive.ql.parse.authorization.HiveAuthorizationTaskFactoryImpl</value>
    </property>
    <property>
        <name>hive.security.authorization.createtable.owner.grants</name>
        <value>ALL</value>
    </property>
    <property>
        <name>hive.users.in.admin.role</name>
        <value>hadoop</value>
    </property>
    <property>
        <name>datanucleus.shcema.autoCreateAll</name>
        <value>true</value>
    </property>
    <property>
        <name>hive.server2.thrift.bind.host</name>
        <value>localhost</value>
    </property>
    <property>
        <name>hive.server2.thrift.port</name>
        <value>10000</value>
    </property>
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://master:9083</value>
    </property>
</configuration>
编译-启动
schematool -dbType mysql -initSchema

mkdir -p /opt/hive/apache-hive-2.3.3-bin/logs
后台启动
nohup hive --service metastore > /opt/hive/apache-hive-2.3.3-bin/logs/meta.log 2>&1 &
nohup hive --service  hiveserver2 > /opt/hive/apache-hive-2.3.3-bin/logs/hiveserver2.log 2>&1 &

查看运行情况
jps

部署Spark2.4.3

基础配置
mkdir -p /opt/spark/
解压
tar -zxvf spark-2.4.3-bin-hadoop2.7.tgz -C /opt/spark/
配置环境变量(root下)
vi /etc/profile
export SPARK_HOME=/opts/spark/spark-2.4.3-bin-hadoop2.7
export PATH=$PATH:$SPARK_HOME/bin

source /etc/profile
配置spark-env.sh文件
export JAVA_HOME=/opt/java/jdk1.8.0_221
export HADOOP_CONF_DIR=/opt/hadoop/hadoop-2.7.2/etc/hadoop
export SPARK_DIST_CLASSPATH=$(/opt/hadoop/hadoop-2.7.2/bin/hadoop classpath)
export SPARK_MASTER_HOST=spark
修改yarn-site.xml
   <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle,spark_shuffle</value>
    </property>
    <property>
    	<name>yarn.nodemanager.aux-services.spark_shuffle.class</name>
    	<value>org.apache.spark.network.yarn.YarnShuffleService</value>
    </property>
    <property>
   	 <name>spark.shuffle.service.port</name>
    	 <value>7337</value>
    </property>
    <!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是true -->
    <property>
     	<name>yarn.nodemanager.pmem-check-enabled</name>
     	<value>false</value>
    </property>
    <!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true -->
    <property>
    	 <name>yarn.nodemanager.vmem-check-enabled</name>
     	<value>false</value>
    </property>
传输jar包
cp /opt/spark/spark-2.4.3-bin-hadoop2.7/yarn/spark-2.4.3-yarn-shuffle.jar /opt/hadoop/hadoop-2.7.2/share/hadoop/yarn/lib/
启动spark
chmod +x bin/*
chmod +x sbin/*
    
在spark2.3.4下

sh sbin/start-all.sh
sh sbin/stop-all.sh
运行结果如下:

在这里插入图片描述

部署Sprk on Hive(参考一下内容)

1.hive-site.xml添加一下信息
<property>
    <name>hive.metastore.uris</name>
    <value>thrift://master:9083</value>
</property>
2.hive-site.xml拷贝至spark的conf目录
3.hadoop目录下的core-site.xml与hdfs-site.xml拷贝至spark下的conf
4.hive的lib目录下的mysql-connector-java-5.1.47-bin.jar拷贝至spark的jars

关闭hive和spark服务重新启动
5.nohup hive --service metastore > /opt/hive/apache-hive-2.3.3-bin/logs/meta.log 2>&1 &
nohup hive --service  hiveserver2 > /opt/hive/apache-hive-2.3.3-bin/logs/hiveserver2.log 2>&1 &
6.spark-sql

### 解决 Linux 下 Hadoop分布式配置缺失 Java 包的问题 在部署 Hadoop 的伪分布式环境时,如果遇到缺少 Java 包的情况,可以按照以下方法解决问题。 #### 环境准备 Hadoop 运行基于 Java,因此需要确保机器上安装有兼容版本的 JDK。根据引用说明[^1],建议使用 OpenJDK 1.8 或更高版本,或者从 Oracle 官方下载合适的 JDK 版本。对于 CentOS 用户来说,OpenJDK 是默认可用的选择。 可以通过以下命令安装 OpenJDK: ```bash sudo yum install -y java-1.8.0-openjdk-devel ``` 确认已成功安装并设置好 Java 路径后,可通过 `java -version` 命令验证当前使用的 Java 版本是否满足需求。 #### 配置 JAVA_HOME 变量 如果通过 `.rpm` 包形式安装了 Java,则无需手动配置环境变量;否则需将 `JAVA_HOME` 添加至系统的 Profile 配置文件中。编辑 `/etc/profile` 文件或用户家目录下的 `.bashrc` 文件,添加如下内容: ```bash export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk export PATH=$JAVA_HOME/bin:$PATH ``` 执行以下命令使更改生效: ```bash source /etc/profile ``` #### 默认模式调整 Hadoop 初始状态是以单机非分布模式运行的,这有助于调试目的[^2]。然而,在伪分布式环境下,需要对核心配置文件进行适当修改以支持多进程协作工作流。主要涉及以下几个关键文件的更新: - **core-site.xml**: 设置 HDFS 名称节点地址。 - **hdfs-site.xml**: 指定副本数量及其他存储参数。 - **mapred-site.xml**: 映射 Reduce 工作框架位置。 - **yarn-site.xml**: YARN 相关资源配置。 具体操作可参考官方文档完成相应字段填写。 #### 关于 $HADOOP_CLASSPATH 使用注意事项 当某些 MapReduce 应用程序报告找不到特定类库时,切勿轻易向 `$HADOOP_CLASSPATH` 中追加额外路径[^3]。推荐利用 Hadoop 提供的功能组件——DistributedCache 来分发必要的 JAR 文件给各个节点上的任务实例。这样不仅能够保持服务端稳定性和独立性,还能减少因频繁变更全局 CLASSPATH 所带来的维护成本以及潜在风险。 #### 总结 综上所述,解决 Linux 平台Hadoop分布式集群部署期间出现的 Java 类丢失现象的关键在于正确初始化 JVM 支持环境,并合理规划资源加载策略。遵循上述指导原则即可有效规避常见错误源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值