Hadoop的伪分布式搭建,主要是方便自己👀
以上配置可根据自己电脑配置进行修改
虚拟机配置要求如下(本文Linux系统全部以CentOS-7.5-x86-1804为例)
shell[root@hadoop ~]# ping www.baidu.com PING www.baidu.com (14.215.177.39) 56(84) bytes of data. 64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=1 ttl=128 time=8.60 ms 64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=2 ttl=128 time=7.72 ms
相关信息
注:Extra Packages for Enterprise Linux是为“红帽系”的操作系统提供额外的软件包,适用于RHEL、CentOS和Scientific Linux。相当于是一个软件仓库,大多数rpm包在官方 repository 中是找不到的)
shellyum install -y epel-release
shell#net-tool:工具包集合,包含ifconfig等命令
yum install -y net-tools
#vim:编辑器
yum install -y vim
shellsystemctl stop firewalld #关闭防火墙 systemctl disable firewalld.service #禁止开机自启动
shell#以下命令均用root用户操作
useradd hadoop #创建hadoop用户
passwd hadoop #设置hadoop用户密码
shell[root@hadoop ~]# vim /etc/sudoers
#修改/etc/sudoers文件,在%wheel这行下面添加一行,如下所示:
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL #这一行下面添加
hadoop ALL=(ALL) NOPASSWD:ALL
注意
注意:hadoop这一行不要直接放到root行下面,因为所有用户都属于wheel组,你先配置了hadoop具有免密功能,但是程序执行到%wheel行时,该功能又被覆盖回需要密码。所以hadoop要放到%wheel这行下面。
shell[root@hadoop ~]# mkdir /opt/module [root@hadoop ~]# mkdir /opt/software
shell[root@hadoop ~]# chown hadoop:hadoop /opt/module [root@hadoop ~]# chown hadoop:hadoop /opt/software
shell[root@hadoop ~]# ll /opt
shell#注意:如果你的虚拟机是最小化安装不需要执行这一步。
[root@hadoop ~]# rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps
相关信息
相关信息
rpm -qa:查询所安装的所有rpm软件包
grep -i:忽略大小写
xargs -n1:表示每次只传递一个参数
rpm -e –nodeps:强制卸载软件
shell[root@hadoop ~]# reboot
shell[root@hadoop ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
#改成
DEVICE=ens33
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static #开启静态IP
NAME="ens33"
IPADDR=192.168.10.102 #IP地址
PREFIX=24 #子网掩码
GATEWAY=192.168.10.2 #网关
DNS1=192.168.10.2 #DNS
shell[root@hadoop100 ~]# vim /etc/hostname
#删除原来的,添加hadoop
hadoop
shell[root@hadoop ~]# vim /etc/hosts
#添加以下内容
192.168.10.100 hadoop
shell[root@hadoop ~]# reboot
shell[root@hadoop ~]# rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps
注意
注意:安装JDK前,一定确保提前删除了虚拟机自带的JDK
shell[hadoop@hadoop ~]$ ls /opt/software/
看到如下结果:
jdk-8u212-linux-x64.tar.gz
shell[hadoop@hadoop software]$ tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/
shell[hadoop@hadoop ~]$ sudo vim /etc/profile.d/my_env.sh
#添加如下内容
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin
Esc键 :wq
相关信息
相关信息:profile文件在运行时会加载profile.d目录下的所有 *.sh文件
shell[hadoop@hadoop ~]$ source /etc/profile
shell[hadoop@hadoop ~]$ java -version 如果能看到以下结果,则代表Java安装成功。 java version "1.8.0_212"
注意
注意:重启(如果java -version可以用就不用重启)
[hadoop@hadoop ~]$ sudo reboot
官网下载Hadopp:https://archive.apache.org/dist/hadoop/common/hadoop-3.1.3/
shell[hadoop@hadoop ~]$ cd /opt/software/
shell[hadoop@hadoop software]$ tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/
shell[hadoop@hadoop software]$ ls /opt/module/ hadoop-3.1.3
shell[hadoop@hadoop hadoop-3.1.3]$ pwd /opt/module/hadoop-3.1.3
shell[hadoop@hadoop hadoop-3.1.3]$ sudo vim /etc/profile.d/my_env.sh
#添加以下内容
#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
#保存并退出: :wq
shell[hadoop@hadoop hadoop-3.1.3]$ source /etc/profile
shell[hadoop@hadoop hadoop-3.1.3]$ hadoop version Hadoop 3.1.3
shell[hadoop@hadoop hadoop-3.1.3]$ ll 总用量 52 drwxr-xr-x. 2 hadoop hadoop 4096 5月 22 2017 bin drwxr-xr-x. 3 hadoop hadoop 4096 5月 22 2017 etc drwxr-xr-x. 2 hadoop hadoop 4096 5月 22 2017 include drwxr-xr-x. 3 hadoop hadoop 4096 5月 22 2017 lib drwxr-xr-x. 2 hadoop hadoop 4096 5月 22 2017 libexec -rw-r--r--. 1 hadoop hadoop 15429 5月 22 2017 LICENSE.txt -rw-r--r--. 1 hadoop hadoop 101 5月 22 2017 NOTICE.txt -rw-r--r--. 1 hadoop hadoop 1366 5月 22 2017 README.txt drwxr-xr-x. 2 hadoop hadoop 4096 5月 22 2017 sbin drwxr-xr-x. 4 hadoop hadoop 4096 5月 22 2017 share
shell[hadoop@hadoop .ssh]$ pwd /home/hadoop/.ssh [hadoop@hadoop .ssh]$ ssh-keygen -t rsa
然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
shell[hadoop@hadoop .ssh]$ ssh-copy-id hadoop
shell #配置core-site.xml
[hadoop@hadoop ~]$ cd $HADOOP_HOME/etc/hadoop
[hadoop@hadoop hadoop]$ vim core-site.xml
修改内容如下
xml<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 指定NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop:8020</value>
</property>
<!-- 指定hadoop数据的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-3.1.3/data</value>
</property>
<!-- 配置HDFS网页登录使用的静态用户为hadoop -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>hadoop</value>
</property>
</configuration>
shell#配置hdfs-site.xml
[hadoop@hadoop hadoop]$ vim hdfs-site.xml
文件内容如下:
xml<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- nameNode web端访问地址-->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop:9870</value>
</property>
<!-- 2nn web端访问地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop:9868</value>
</property>
<!-- 副本数量-->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
shell#配置yarn-site.xml
[hadoop@hadoop hadoop]$ vim yarn-site.xml
文件内容如下:
xml<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 指定MR走shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定ResourceManager的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop</value>
</property>
<!-- 环境变量的继承 -->
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
</configuration>
shell#配置mapred-site.xml
[hadoop@hadoop hadoop]$ vim mapred-site.xml
文件内容如下:
xml<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 指定MapReduce程序运行在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
shell[hadoop@hadoop hadoop-3.1.3]$ hdfs namenode -format
注意
注意:格式化NameNode,会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化NameNode的话,一定要先停止namenode和datanode进程,并且要删除所有机器的data和logs目录,然后再进行格式化。
shell[hadoop@hadoop hadoop-3.1.3]$ sbin/start-dfs.sh [hadoop@hadoop hadoop-3.1.3]$ sbin/start-yarn.sh
txtjps namenode secondarynamenode datanode resourcemanager nodemanager
上传小文件
shell[hadoop@hadoop ~]$ hadoop fs -mkdir /input [hadoop@hadoop ~]$ hadoop fs -put $HADOOP_HOME/wcinput/word.txt /input
shell[hadoop@hadoop ~]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input/word.txt /output
参考尚硅谷:【尚硅谷大数据Hadoop教程,hadoop3.x搭建到集群调优,百万播放】 https://www.bilibili.com/video/BV1Qp4y1n7EN/?p=57&share_source=copy_web&vd_source=89b9de79c8f374309c5791db6796b62f
本文作者:苏皓明
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!