Loading... # Hadoop 三种部署模式 ## 前置准备资料 百度网盘:https://pan.baidu.com/s/1dVpeexyk1s-eneMCBaIlng?pwd=wjex 提取码: wjex ## 单机模式搭建 ### CentOS修改静态ip地址 查看默认路由,和网卡号 ``` ip addr ``` 当前ip地址为`172.16.84.10` ,网卡号为`ens160`那么默认路由为`172.16.84.2` ![][1] **在安装时也可以查看默认路由** ![][2] 切换root用户,修改如下文件: ``` vi /etc/sysconfig/network-scripts/ifcfg-ens160 ``` ```xml TYPE=Ethernet BOOTPROTO=static //static静态IP地址,dhcp动态IP地址 DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no NAME=eno16777736 UUID=34bbe4fa-f0b9-4ced-828a-f7f7e1094e4a DEVICE=eno16777736 ONBOOT=yes //将ONBOOT="no"改为ONBOOT="yes",开启网卡自动连接 PEERDNS=yes PEERROUTES=yes IPV6_PEERDNS=yes IPV6_PEERROUTES=yes IPADDR=192.168.179.3 //ip地址 NETMASK=255.255.255.0 //子网掩码 GATEWAY=192.168.179.2 //网关 DNS1=8.8.8.8 //修改DNS服务器 ``` 修改完成后 `:wq!`保存退出(注意 在ipv4中 每一段最大只能0~255): ![][3] 重启 network 服务: ``` service network restart ``` 重新查看一下ip地址: ``` ip addr ``` ![][4] ### 使用sshl工具连接 ![][5] ![][6] ### 关闭防火墙 Centos7默认安装了firewalld,如果没有安装的话,可以使⽤如下命令进⾏安装: ``` yum install firewalld firewalld-config ``` #### 暂时启动/关闭防火墙: 启动防⽕墙: ``` systemctl start firewalld ``` 禁⽤防⽕墙 : ``` systemctl stop firewalld ``` #### 启动/关闭防火墙: 查看firewalld状态: ``` systemctl status firewalld #查看防火墙状态 ``` 显示`running`,既防火墙开启了 ![][7] 关闭防火墙,关闭后重新查看: ``` systemctl start firewalld #打开防火墙 systemctl stop firewalld #关闭防火墙 systemctl status firewalld #查看防火墙状态 systemctl disable firewalld.service #关闭开机启动防火墙 systemctl enable firewalld.service #开机启动防火墙 ``` ![][8] 常用端口放行 (放行8080端口,不需要则跳过): ``` firewall-cmd --zone=public --add-port=8080/tcp --permanent ``` 重启防火墙: ``` firewall-cmd --reload ``` ![][9] ### ssh免密登录 登录本机: ``` ssh localhost ``` ![][10] 按照以上的登陆方式:每次登陆都需要输入密码,很不方便,因此我们需要配置成SSH无密码登陆,更方便一点。具体操作如下: 输入 `exit` 命令退出之前的 ssh,回到我们原先的终端窗口,然后利用 ssh-keygen 生成密钥,并将密钥加入到授权中 ``` exit # 退出之前的 ssh localhost cd ~/.ssh/ # 若没有该目录,请先执行一次ssh localhost ssh-keygen -t rsa # 会有提示,一直按回车即可 cat ./id_rsa.pub >> ./authorized_keys # 加入授权 chmod 600 authorized_keys # 更改文件权限 ``` ![][11] ### 安装Java环境 连接`SFTP`: ![][12] 将下载好的`JDK`、`Hadoop`上传至`/opt` ![][13] 切换`/opt` ``` cd /opt ``` 将`JDK`解压到`/opt/softWare` ``` tar -zxvf jdk-8u202-linux-arm64-vfp-hflt.tar.gz -C /opt/softWare ``` 配置Java环境变量: ``` cd ~ vi ~/.bash_profile ``` 打开文件后,在文件末尾处添加以下内容( jdk 版本根据个人安装版本进行填写),保存并退出: ```xml export JAVA_HOME=/usr/jdk1.8.0_202 #替换为自己的JDK目录 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/bil/dt.jar:$JAVA_HOME/lib/tools.jar ``` ![][14] 使配置生效: ``` source ~/.bash_profile ``` 查看Java版本: ``` java -version ``` ![][15] ### 安装Hadoop环境 切换目录`/opt`: ``` cd /opt ``` 将Hadoop解压到`/opt/softWare` ``` tar -zxvf hadoop-3.1.3.tar.gz -C /opt/softWare ``` ![][16] 配置Hadoop文件: ``` vi ~/.bash_profile ``` 在后面添加如下内容: ```xml export HADOOP_HOME=/opt/softWare/hadoop-3.1.3 #替换成自己的hadoop目录 export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH 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 ``` ![][17] 完成后保存退出`:wq!` 使配置生效: ``` source ~/.bash_profile ``` 查看Hadoop版本: ``` hadoop version ``` ![][18] ### 单机模式搭建 - Hadoop 默认模式为非分布式模式(本地模式),无需进行其他配置即可运行。即 Hadoop 安装成功后即可使用。我们可以执行一些例子来感受一下 Hadoop 的运行。Hadoop 附带了丰富的例子,运行以下命令可以看到所有例子,包括 wordcount、terasort、join、grep 等: - 我们选择运行 grep 例子,我们将 input 文件夹中的所有文件作为输入,筛选其中符合正则表达式 dfs[a-z.]+ 的单词并统计单词出现的次数,然后将结果输出到 output 文件夹中,具体执行命令如下: 切换到hadoop目录: ``` cd /usr/local/hadoop-3.1.3 ``` 在当前目录下,创建input目录: ``` mkdir ./input ``` 将配置文件作为输入复制到input目录下 ``` cp ./etc/hadoop/*.xml ./input ``` 运行实例: ``` ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar grep ./input/ ./output 'dfs[a-z.]+' ``` ![][19] ![][20] 查看运行结果: ``` cat ./output/* ``` ![][21] ### 在本地运行MapReduce 切换目录到`/usr/local/hadoop-3.1.3` 使HDFS目录成为执行MapReduce作业所需的目录: ``` bin/hdfs dfs -mkdir /user bin/hdfs dfs -mkdir /user/<username> ``` 将输入文件复制到分布式文件系统中: ``` bin/hdfs dfs -mkdir input bin/hdfs dfs -put etc/hadoop/*.xml input ``` 运行提供的一些示例: ``` bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.4.jar grep input output 'dfs[a-z.]+' ``` 检查输出文件:将输出文件从分布式文件系统复制到本地文件系统并检查它们: ``` bin/hdfs dfs -get output output cat output/* ``` ![][22] `或` 查看分布式文件系统上的输出文件: ``` bin/hdfs dfs -cat output/* ``` ![][23] 完成后,使用以下命令停止守护程序: ``` sbin/stop-dfs.sh ``` ## 伪分布式搭建 接单机配置的文件 ### 修改Hadoop文件 - Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode,同时,其读取的是 HDFS 中的文件。 - Hadoop 的配置文件位于 `/hadoop-3.1.3/etc/hadoop/` 中,伪分布式需要修改 2 个配置文件 `core-site.xml` 和 `hdfs-site.xml` 。Hadoop的配置文件是 xml 格式,每个配置以声明 property 的 name 和 value 的方式来实现。 切换目录: ``` cd /opt/softWare/hadoop-3.1.3/ ``` ### 修改配置文件 core-site.xml 修改core-site文件: ``` vi ./etc/hadoop/core-site.xml ``` 添加内容: ```xml <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>file:/opt/softWare/hadoop-3.1.3/tmp</value> </property> </configuration> ``` 注: - 首先,hadoop.tmp.dir 是 hadoop文件系统依赖的基本配置,很多配置路径都依赖它,它的默认位置是在 /tmp/user下面,注意这是个临时目录!!! - 因此,它的持久化配置很重要的! 如果选择默认,一旦因为断电等外在因素影响,/tmp/{$user}下的所有东西都会丢失,哇咔咔。。。趟过坑的应该知道多么酸爽。。。` 配置 hadoop.tmp.dir 路径到持久化目录` ### 修改配置文件 hdfs-site.xml 修改hdfs-site.xml: ``` vi ./etc/hadoop/hdfs-site.xml ``` 添加内容: ``` <configuration> <!--测试环境指定HDFS刮本的数量1--> <property> <name>dfs.replication</name> <value>1</value> </property> <!--任何⽤户都可以在 HDFS 中的任何位置创建/删除⽂件/⽬录--> <property> <name>dfs.permissions</name> <value>false</value> </property> <!--是保存FsImage镜像的⽬录--> <property> <name>dfs.namenode.name.dir</name> <value>file:/opt/softWare/hadoop-3.1.3/tmp/dfs/name</value> </property> <!--是存放HDFS⽂件系统数据⽂件的⽬录--> <property> <name>dfs.datanode.data.dir</name> <value>file:/opt/softWare/hadoop-3.1.3/tmp/dfs/data</value> </property> </configuration> ``` 注: - 这是一个hadoop 权限问题hdfs-site.xml,dfs.permissions 是可用于启用/禁用 HDFS ACL(简单权限)的属性。将 dfs.permission 设置为 false 后,任何用户都可以在 HDFS 中的任何位置创建/删除文件/目录。 - dfs.namenode.name.dir是保存FsImage镜像的目录,作用是存放hadoop的名称节点namenode里的metadata - dfs.datanode.data.dir是存放HDFS文件系统数据文件的目录,作用是存放hadoop的数据节点datanode里的多个数据块。 ### 修改配置文件 hadoop-env.sh 修改 hadoop-env.sh: 添加JDK目录路径,大概54行左右 ``` vi ./etc/hadoop/hadoop-env.sh ``` ![][24] ### 配置完之后,执行 NameNode 格式化 注意当前目录是`/opt/softWare/hadoop-3.1.3` 格式化文件系统: ``` ./bin/hdfs namenode -format ``` 看到`successfuly formatted`,即成功格式化 ![][25] 启动 NameNode 守护程序和 DataNode 守护程序: ``` ./sbin/start-dfs.sh ``` Hadoop守护程序日志输出被写入`$HADOOP_LOG_DIR`目录(默认为`$HADOOP_HOME/logs`) ![][26] 浏览 NameNode 的 Web 界面;默认情况下,它位于: - 名称节点 `http://localhost:9870/` - localhost 替换成ip地址也可以访问 ![][27] ### 在单机伪分布式中运行MapReduce 方法是设置一些参数并另外运行 ResourceManager 守护程序和 NodeManager 守护进程。 切换目录`/opt/softWare/hadoop-3.1.3` 设置mapred: ``` vi etc/hadoop/mapred-site.xml ``` 添加: ```xml <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.application.classpath</name> <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value> </property> </configuration> ``` 设置yarn: ``` vi etc/hadoop/yarn-site.xml ``` 添加: ```xml <configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</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_HOME,PATH,LANG,TZ,HADOOP_MAPRED_HOME</value> </property> </configuration> ``` 启动资源管理器守护程序和节点管理器守护程序: ``` sbin/start-yarn.sh ``` 浏览资源管理器的 Web 界面;默认情况下,它位于: ``` http://localhost:8088/ ``` `将localhost`替换成ip地址: 运行 MapReduce 作业,完成后,使用以下命令停止守护程序: ``` sbin/stop-yarn.sh ``` 至此伪分布式已经搭建完成 参考地址:https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html#YARN_on_a_Single_Node ![][28] ## 分布式搭建 [1]: https://a-hxin.cn/usr/uploads/2023/01/2898339342.png [2]: https://a-hxin.cn/usr/uploads/2023/01/2200555391.png [3]: https://a-hxin.cn/usr/uploads/2023/01/1388221400.png [4]: https://a-hxin.cn/usr/uploads/2023/01/4065340117.png [5]: https://a-hxin.cn/usr/uploads/2023/01/1502301703.png [6]: https://a-hxin.cn/usr/uploads/2023/01/1655083972.png [7]: https://a-hxin.cn/usr/uploads/2023/01/1581235977.png [8]: https://a-hxin.cn/usr/uploads/2023/01/2622106062.png [9]: https://a-hxin.cn/usr/uploads/2023/01/3043048653.png [10]: https://a-hxin.cn/usr/uploads/2023/01/2548922445.png [11]: https://a-hxin.cn/usr/uploads/2023/01/408251812.png [12]: https://a-hxin.cn/usr/uploads/2023/01/3033173174.png [13]: https://a-hxin.cn/usr/uploads/2023/01/698592556.png [14]: https://a-hxin.cn/usr/uploads/2023/01/2926208242.png [15]: https://a-hxin.cn/usr/uploads/2023/01/2637797742.png [16]: https://a-hxin.cn/usr/uploads/2023/01/2477467433.png [17]: https://a-hxin.cn/usr/uploads/2023/01/29525501.png [18]: https://a-hxin.cn/usr/uploads/2023/01/1643289128.png [19]: https://a-hxin.cn/usr/uploads/2023/01/3915281514.png [20]: https://a-hxin.cn/usr/uploads/2023/01/3098266591.png [21]: https://a-hxin.cn/usr/uploads/2023/01/8194856.png [22]: https://a-hxin.cn/usr/uploads/2023/01/2392353901.png [23]: https://a-hxin.cn/usr/uploads/2023/01/3361991238.png [24]: https://a-hxin.cn/usr/uploads/2023/01/3331179475.png [25]: https://a-hxin.cn/usr/uploads/2023/01/4170933202.png [26]: https://a-hxin.cn/usr/uploads/2023/01/1813144762.png [27]: https://a-hxin.cn/usr/uploads/2023/01/178465587.png [28]: https://a-hxin.cn/usr/uploads/2023/01/278346986.png 最后修改:2024 年 01 月 24 日 © 允许规范转载 打赏 赞赏作者 赞 咱们谁跟谁,用不着~