搭建Hadoop3.3.6伪分布式
- IT业界
- 2025-08-24 17:54:01

搭建 Hadoop 3.3.6 伪分布式 IP 192.168.157.132 初始化操作 更改yum源 # 1_1.安装Wget yum install wget # 1_2.备份CentOS-Base.repo文件 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak # 2.下载阿里yum源配置 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun /repo/Centos-7.repo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163 /.help/CentOS7-Base-163.repo # 3.清除系统所有的yum缓存 yum clean all # 4.重新缓存 yum makecache # 5.更新yum源 yum update -y # 6.安装基础工具 sudo yum install -y wget epel-release vim net-tools 设置开机时关闭GUI # 用下面命令查看查看是哪个模式 systemctl get-default # 命令模式(生产环境推荐) systemctl set-default multi-user.target # 图形模式 systemctl set-default graphical.target 关闭防火墙 systemctl stop firewalld.service systemctl disable firewalld.service 创建专用账户 # 创建hadoop系统账户 sudo useradd -m hadoop -s /bin/bash echo "hadoop:your_password" | sudo chpasswd # 设置密码 # 配置sudo权限 sudo echo "hadoop ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/hadoop 1. 进入命令行模式
按 Ctrl + Alt + T 进入终端。
2. 创建 hadoop 用户使用 useradd 命令创建 hadoop 用户,并指定 bash 作为默认 shell:
sudo useradd -m hadoop -s /bin/bash 3. 设置 hadoop 用户密码使用 chpasswd 命令设置密码(请替换 your_password 为实际密码):
echo "hadoop:your_password" | sudo chpasswd 4. 配置 sudo 权限 方法 1:赋予 hadoop 用户 sudo 权限执行以下命令,将 hadoop 用户添加到 sudo 组:
sudo adduser hadoop sudo 方法 2:配置无密码 sudo 权限编辑 sudoers 文件,使 hadoop 用户在执行 sudo 命令时无需输入密码:
echo "hadoop ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/hadoop 5. 说明 如果使用 CentOS 7 并已创建 hadoop 用户,则无需执行第 2 和第 4 步。方法 1 和方法 2 任选其一,推荐使用方法 1,避免安全风险。 初始化文件路径 # 软件安装路径 mkdir /home/dolphin/module # 安装包存放路径 mkdir /home/dolphin/software # 修改文件夹所有者(hadoop用户) chown -R hadoop.hadoop /home/dolphin/module chown -R hadoop.hadoop /home/dolphin/software # 创建软链接 ln -s /home/dolphin/module /opt/module ln -s /home/dolphin/software /opt/software 配置 hosts 列表 vim /etc/hosts # 添加如下内容 -----------------------------------------------------Start 192.168.157.132 dolphin -----------------------------------------------------End 修改主机名 hostnamectl set-hostname dolphinhostnamectl set-hostname 主机名
配置ssh免密登录 ssh-keygen -t rsa # ssh-copy-id 用户名@主机名 ssh-copy-id root@dolphin # 或 ssh-copy-id dolphin 安装Java并配置环境变量 # 1.检测是否安装OpenJDK,存在则删除 rpm -qa | grep java rpm -e --nodeps java-1.8.0-openjdk rpm -e --nodeps java-1.8.0-openjdk-headless rpm -e --nodeps java-1.7.0-openjdk rpm -e --nodeps java-1.7.0-openjdk-headless # 2.下载JDK二进制安装包 cd /opt/software wget download.oracle /otn/java/jdk/8u221-b11/230deb18db3e4014bb8e3e8324f81b43/jdk-8u201-linux-x64.tar.gz # 3.解压jdk tar -zxf /opt/software/jdk-8u201-linux-x64.tar.gz -C /opt/module/ # 4.JDK环境变量配置 #==>修改环境变量 vim /etc/profile #==>profile追加文件内容 -----------------------------------------------------Start #JAVA_HOME JAVA_HOME=/opt/module/jdk1.8.0_201 export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin -----------------------------------------------------End #==>使配置文件生效 source /etc/profile 安装MySQL1.下载二进制Linux版的文件
# 1.解压 tar -zxf /opt/software/mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz -C /opt/module # 2.建立软链接 cd /opt/module ln -s mysql-5.7.25-linux-glibc2.12-x86_64 mysql # 3.配置环境变量 vim /etc/profile #==>profile追加文件内容 -----------------------------------------------------Start #MYSQL_HOME MYSQL_HOME=/opt/module/mysql-5.7.25-linux-glibc2.12-x86_64 export PATH=$PATH:$MYSQL_HOME/bin export PATH=$PATH:$MYSQL_HOME/support-files -----------------------------------------------------End #==>使配置文件生效 source /etc/profile # 4.创建初始化目录 cd /opt/module/mysql-5.7.25-linux-glibc2.12-x86_64 mkdir ./{data,log,sock,pids} mkdir ./{etc,run} chown -R hadoop.hadoop * chmod 755 {data,sock,pids} # 5.配置my f sudo vim /etc/my f #==>my g文件内容 ------------------------------------------------------Start [mysqld]#服务端基本设置 basedir=/opt/module/mysql #使用该目录作为根目录(安装目录) datadir=/opt/module/mysql/data #数据文件存放的目录 port=3306 #MySQL监听端口 socket=/opt/module/mysql/sock/mysql.sock #用于本地连接的socket套接字 bind-address = 0.0.0.0 server-id = 1 log-error=/opt/module/mysql/log/mysql.log user=hadoop #skip-grant-tables #mysql设置跳过密码登录 [mysqld_safe] log-error=/opt/module/mysql/log/logger.log pid-file=/opt/module/mysql/pids/mysqld.pid [client] default-character-set=utf8 socket=/opt/module/mysql/sock/mysql.sock #用于本地连接的socket套接字 [mysql] default-character-set=utf8 socket=/opt/module/mysql/sock/mysql.sock #用于本地连接的socket套接字 [mysqld_safe] !includedir /etc/my f.d ------------------------------------------------------End # 6.初始化数据库 mysqld --defaults-file=/etc/my f --initialize #(必须在创建my f之后) # 7.生成ssl(非必须) mysql_ssl_rsa_setup --basedir=/opt/module/mysql --datadir=/opt/module/mysql/data # 8.1启动MySQL mysql.server restart 或 ./support-files/mysql.server restart # 8.2查看mysql进程 ps -ef|grep mysql # 9.查看密码 grep 'temporary password' /opt/module/mysql/log/logger.log # 10.修改MySQL密码 use mysql; update mysql.user set authentication_string=password('root') where User="root" and Host="localhost"; # 11.配置MySQL远程访问 alter user user() identified by "root"; grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option; flush privileges; # 12.开放3306端口 firewall-cmd --permanent --add-port=3306/tcp *********************************************************** # 1.创建systemctl管理mysql的配置文件 vim /usr/lib/systemd/system/mysql.service which mysqld # (查找mysqld路径) #==>mysql.service文件内容 -----------------------------------------------------Start [Unit] Description=MySQL Server Documentation=man:mysqld(8) Documentation=http://dev.mysql /doc/refman/en/using-systemd.html After=network.target After=syslog.target [Install] WantedBy=multi-user.target [Service] # ExecStart=/opt/module/mysql-5.7.25-linux-glibc2.12-x86_64/bin/mysqld --defaults-file=/etc/my f #关键开头************ Type=forking ExecStart=/bin/bash /opt/module/mysql-5.7.25-linux-glibc2.12-x86_64/support-files/mysql.server start ExecStop=/bin/bash /opt/module/mysql-5.7.25-linux-glibc2.12-x86_64/support-files/mysql.server stop ExecRestart=/bin/bash /opt/module/mysql-5.7.25-linux-glibc2.12-x86_64/support-files/mysql.server restart #关键结尾************ LimitNOFILE = 5000 Restart=on-failure RestartPreventExitStatus=1 PrivateTmp=false -----------------------------------------------------End # 2_1.重新载入systemd systemctl daemon-reload # 2_2.激活mysql.serivce配置文件(用于systemctl控制) systemctl enable mysql.service # 3.通过systemctl来启动mysql systemctl start mysql Hadoop 3.3.6 伪分布式配置部署 下载并解压 Hadoop cd /opt/software wget dlcdn.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz #解压Hadoop tar -zxf /opt/software/hadoop-3.3.6.tar.gz -C /opt/module/ #初始化 cd /opt/module/hadoop-3.3.6 mkdir -p /opt/module/hadoop-3.3.6/hdfs/data /opt/module/hadoop-3.3.6/hdfs/name 配置 Hadoop 环境变量 #==>修改环境变量 vim /etc/profile #==>profile追加文件内容 -----------------------------------------------------Start #HADOOP_HOME HADOOP_HOME=/opt/module/hadoop-3.3.6 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop export HADOOP_COMMON_HOME=$HADOOP_HOME export HADOOP_HDFS_HOME=$HADOOP_HOME export HADOOP_MAPRED_HOME=$HADOOP_HOME export HADOOP_YARN_HOME=$HADOOP_HOME export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native" export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native -----------------------------------------------------End source /etc/profile 配置 core-site.xml vim $HADOOP_HOME/etc/hadoop/core-site.xml # 修改内容如下: <configuration> <!-- 指定HDFS中NameNode的地址 --> <!-- 注意: hadoop1.x时代默认端口是9000;hadoop2.x时代默认端口是8020; hadoop3.x时代默认端口是9820 --> <property> <name>fs.defaultFS</name> <description>配置hdfs NameNode的地址,9820是RPC通信的端口</description> </property> <!-- hdfs的基础路径,被其他属性所依赖的一个基础路径 --> <property> <name>hadoop.tmp.dir</name> <value>file:/opt/module/hadoop-3.3.6/tmp</value> <description>hadoop的临时目录</description> </property> <!-- 设置 Web UI 为静态用户 --> <property> <name>hadoop.http.staticuser.user</name> <value>root</value> </property> </configuration> 配置 hdfs-site.xml vim $HADOOP_HOME/etc/hadoop/hdfs-site.xml # 修改内容如下: <configuration> <!--指定HDFS储存数据的副本数目,默认情况下为3份--> <property> <name>dfs.replication</name> <value>1</value> <description>配置hdfs副本数量</description> </property> <!-- secondarynamenode守护进程的http地址:主机名和端口号。参考守护进程布局 --> <property> <name>dfs.namenode.secondary.http-address</name> <value>dolphin:9868</value> <description>配置secondarynamenode守护进程的http地址</description> </property> <!-- namenode web端访问地址 --> <property> <name>dfs.namenode.http-address</name> <value>dolphin:9870</value> </property> <!-- 表示本地磁盘目录,是存储 fs image 文件的地方 --> <property> <name>dfs.namenode.name.dir</name> <value>file:/opt/module/hadoop-3.3.6/hdfs/name</value> </property> <!-- 表示本地磁盘目录,HDSF数据存放block的的地方 --> <property> <name>dfs.datanode.data.dir</name> <value>file:/opt/module/hadoop-3.3.6/hdfs/data</value> <description>配置datanode节点存储block的目录位置</description> </property> </configuration> 配置 mapred-site.xml vim $HADOOP_HOME/etc/hadoop/mapred-site.xml # 修改内容如下: <configuration> <!-- 指定MR运行在yarn上 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <!---指定MapReduce任务运行所需依赖jar --> <property> <name>mapreduce.application.classpath</name> <value>$HADOOP_HOME/share/hadoop/mapreduce/*:$HADOOP_HOME/share/hadoop/mapreduce/lib/*:$HADOOP_HOME/share/hadoop/common/*:$HADOOP_HOME/share/hadoop/common/lib/*</value> </property> </configuration> 配置 yarn-site.xml vim $HADOOP_HOME/etc/hadoop/yarn-site.xml # 修改内容如下: <configuration> <!-- 指定YARN的ResourceManager的地址 --> <property> <name>yarn.resourcemanager.hostname</name> <value>dolphin</value> </property> <!-- 指定reduce获取数据的方式 --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!-- 指定shuffle服务的类 --> <property> <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> </configuration> 配置 workers vim $HADOOP_HOME/etc/hadoop/workers # 修改内容如下:(hosts中配置的dolphin名称) dolphin 配置 hadoop-env.sh vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh # 修改内容如下: # 配置 JAVA_HOME 和 HADOOP_HOME 环境变量 export JAVA_HOME=/opt/module/jdk1.8.0_201 export HADOOP_HOME=/opt/module/hadoop-3.3.6 # Hadoop3中,需要添加如下配置,设置启动集群⻆⾊的⽤户是哪个。 export HDFS_NAMENODE_USER=root export HDFS_DATANODE_USER=root export HDFS_SECONDARYNAMENODE_USER=root export YARN_RESOURCEMANAGER_USER=root export YARN_NODEMANAGER_USER=root 格式化 HDFS hdfs namenode -format注意:
在 core-site.xml中配置的hadoop.tmp.dir的路径,在集群格式化的时候,必须保证不存在! 如果之前存在数据,先将它删除,再进行格式化! 启动 Hadoop start-dfs.sh start-yarn.sh # 或 start-all.sh 验证 Hadoop 是否运行 jpsHadoop 进程包括:
NameNodeDataNodeSecondaryNameNodeResourceManagerNodeManager Hadoop环境测试 参考Web UI通过浏览器访问HDFS Web UI 界面 9870 端口和 YARN Web UI界面 8088 端口
测试 HDFS 和 Mapper Reduce 创建测试文件 hello.txt cat > hello.txt << 'EOF' hello world hadoop hdfs 张三 李四 王五 hello hadoop hello yarn hello hdfs hello spark EOF chown dolphin:dolphin /root/hello.txt 测试MR # HDFS 中创建 input 文件夹并上传 hello.txt 文件 hadoop fs -mkdir /input hadoop fs -put /root/hello.txt /input hadoop fs -ls /input hadoop fs -mkdir /output # 运行 wordcount 程序 hadoop jar /opt/module/hadoop-3.3.6/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount /input /output 解决Hadoop在浏览器中Browse Directory,无法下载文件的问题 解决办法
把你Linux中的hosts文件中的映射数据,复制到Windows下的hosts中
解决了搭建Hadoop3.3.6伪分布式由讯客互联IT业界栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“搭建Hadoop3.3.6伪分布式”