基础数据仓库环境搭建(二) Hadoop的环境搭建
Apache Hadoop -分布式處理框架。集成了MapReduce(并行計算)、YARN(作業調度)和HDFS(分布式文件系統)。
1. 前期準備
1.準備3個虛擬機節點
2.Linux鏈接工具Xshell或者MobaXterm
3.三臺節點配置了免密登錄
2. Hadoop下載
鏈接:
https://pan.baidu.com/s/1iaKxgeQHE66OJaOs0gUKYQ提取碼:8520
3.配置說明
主要是在虛擬機上搭建模擬生產環境的偽分布模式
偽分布模式(Pseudo-Distributed Mode)
Hadoop的守護進程運行在本機機器,模擬一個小規模的集群。
在一臺主機模擬一個小規模的集群,在這種模式下Hadoop使用的是分布式文件系統,一般用于程序調試與測試。也可以說 偽分布式 是 完全分布式 的一個特例。
在這種模式下,Hadoop使用的是分布式文件系統。在單機模式之上增加了代碼調試功能,允許檢查內存使用情況,HDFS輸入輸出,以及守護進程交互。Hadoop啟動NameNode、DataNode、SecondaryNameNode、ResourceManager、NodeManager,這些守護進程都在同一臺機器上運行,是相互獨立的Java進程。
需要修改配置文件:core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml。
格式化文件系統
4.集群規劃
集群節點分配 主機名 主機IP node01 192.168.100.101 node02 192.168.100.102 node03 192.168.100.103 軟件名稱 版本號 Java 1.8.0_291 CentOS CentOS-7-x64-2009 Hadoop 3.2.2 各軟件安裝路徑 Hadoop /opt/apps/hadoop-3.2.2 Java /opt/apps/jdk1.8.0_291 節點進程 node01 NameNode,DataNode,NodeManager node02 ResourceManager,DataNode,NodeManager node03 SecondaryNameNode,DataNode,NodeManager5.基本工具安裝
安裝同步時間工具–每臺節點都需要執行此操作
yum -y install ntp ntpdate設置與網絡時間同步
ntpdate cn.pool.ntp.org#!系統時間寫入硬件時間【將硬件時鐘調整為與目前的系統時鐘一致】
hwclock --systohc每臺節點安裝 vim 編輯器
每臺節點均安裝 vim 編輯器,不使用默認的vi編輯器
yum -y install vim文件上傳(rz)下載(sz)工具
可以在Xshell工具中通過rz調出上傳文件的窗口進行文件上傳,也可以通過sz文件名下載某一個文件,上傳文件時可以通過拖拽文件到Shell面板直接上傳。【在 node01 上安裝即可】
yum -y install lrzsz安裝網絡下載工具 wget其中一臺安裝即可【在node01上安裝即可】
yum -y install wget關閉防火墻
每臺節點均需要執行關閉防火墻和禁止開機啟動防火墻的操作
查看防火墻開啟狀態
systemctl status firewalld關閉防火墻
systemctl stop firewalld禁止開機啟動防火墻
systemctl disable firewalld6.修改hosts文件
vim /etc/hosts #127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 #::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.100.101 node01 192.168.100.102 node02 192.168.100.103 node037.配置SSH免密碼登錄
配置免密碼登錄的目的是為了能夠讓主機之間相互信任,不需要密碼即可訪問
#! 每臺節點先使用ssh執行以下,以在主目錄產生一個.ssh 文件夾 [root@node01 ~]# ssh 192.168.100.101 #! 然后輸入no即可 The authenticity of host '192.168.100.101 (192.168.100.101)' can't be established. ECDSA key fingerprint is SHA256:PamSi9sKideQkXQWm9stSYkf85oydA+TUbwiBtXkf4E. ECDSA key fingerprint is MD5:5b:17:f8:7c:ae:49:27:f8:2a:24:30:65:a6:f3:4a:49. Are you sure you want to continue connecting (yes/no)? no Host key verification failed. #! 每臺機器均進入~/.ssh 目錄進行操作 [root@node01 ~]# cd ~/.ssh #! 輸入以下命令,一路回車,用以產生公鑰和秘鑰 [root@node01 .ssh]# ssh-keygen -t rsa -P '' #! 出現以下信息說明生成成功 Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:KU0Z/kXpvREFPvkq6wBwog8NLjZ6fSQDyM+747BtUsA root@node01 The key's randomart image is: +---[RSA 2048]----+ | . ...o.| |.. . o ..... | |o.. . o = ...+. | | Eoo + * o .. oo | | =o* + S . o.| | o =.* . . .. | |..o.. o . . . | | o+o.. . o | | .++. .o | +----[SHA256]-----+ #! 將所有的id_rsa.pub文件進行合并(最簡單的方法是將所有節點的文件內容追加到node01主機上) [root@node01 .ssh]# cat ~/.ssh/id_rsa.pub | ssh root@node01 'cat >> ~/.ssh/authorized_keys' [root@node02 .ssh]# cat ~/.ssh/id_rsa.pub | ssh root@node01 'cat >> ~/.ssh/authorized_keys' [root@node03 .ssh]# cat ~/.ssh/id_rsa.pub | ssh root@node01 'cat >> ~/.ssh/authorized_keys' #! 查看node01上的authorized_keys文件內容,類似如下即可 [root@node01 .ssh]# more authorized_keys ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCqJi/Q061hGWv91WkRl+fpvoiQ6OyqLSc4lu5KR0FLmWmRxu/Bp1AeuBzf1V8YyjK+UNapYQMgX2/0RPjDWdCKfchrfhvQz9rOX7w8bqmcYGS44EFvy0kxBxPRUd0q/X/cm6J9tvOHsgKJEXIzTG1HD+arjUBmgbP6MOr1mH3UgjJqkhRS5SYP+RcbrRDnTVH+9IE2bKBBHadxK2r8GlP6DL/CtjjYAQSms9x9b9YR9rk/hDUmRO6piq+upy2Gmp4br1EnRTk3LLgIe5sJZQiBQOaoULL7tj6J7D2LXbC0z+a9p8s/PfE/G/7jhxBAoYpzB30JV5BPZmz702JOQjRn root@node01 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDLeDS5mF/PwxExo++I99A3BfK8gyaLUYC8mZGLT4q0H8Skb/7jN1qIjb8MfwubluoIKiHWrA2h/4iEkb2rBzEfUy/JxP+5a+zpi5NIOcVCX1PcNb7mPmWm1X42Zp6/hOZVXnAHfQv4ZuEZRZrp49GmOnZR8g5mz8Gpr0rl9hk0c1m50qpfY6I8EYjQ200suo/9vkd941Qquk3aX4A+6huAZq1Lu8B1EyTTDoV6cWS1eN4AbEdN4nedYN1NqfN5KxYs9ujCfCNfmF41l7HS8vgPc4Yu0aI4LmZnmFhLei0FdK6HSE03nptm7YJ45oDux5iehxXT8M0nvwC2JcK26aoD root@node02 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDTpPnqphGbBH3vqFFdI0oxq1EmI0zWbrl/52qIy6ysvJ+cqib34XzFHs4N61P4pyXwzL7tgMaYrAw0YfVMbZwmK3AAlpxlLTpfWLii/dBTazGcXaHhR0J3s6qKIwu3ZEaeAUGWyGO4KU1uMWM9foLWeAQthTJhYj4HmE2YNmHV5M39uw+F0j2JXMiWZBLEaklu/IpuWY0IgYVvj/uACowmeFUHHWsYezH0GbxcHPpLnenSfcWxUAXNNaVYURKV6WnXqmsxV/9k8rWQ49Apk5AjHsAKpdWRXEzGVr0FBBydoGkCCNvgrr1ORAAiUnFOp0ZEx/Pq9T8cQVdCjk0pILwv root@node03 #! 將node01上的authorized_keys文件分發到其他主機上 [root@node01 .ssh]# scp ~/.ssh/authorized_keys root@node02:~/.ssh/ [root@node01 .ssh]# scp ~/.ssh/authorized_keys root@node03:~/.ssh/ #! 每臺機器之間進行ssh免密碼登錄操作,包括自己與自己 [root@node01 ~]# ssh node01 [root@node01 ~]# ssh node02 [root@node02 ~]# ssh node01 [root@node01 ~]# ssh node03 [root@node03 ~]# ssh node01 [root@node01 ~]# ssh node02 [root@node02 ~]# ssh node02 [root@node02 ~]# ssh node03 [root@node03 ~]# ssh node02 [root@node02 ~]# ssh node03 [root@node03 ~]# ssh node03SSH 免密碼配置結束后建議創建快照。
8.下載Java
Hadoop 的運行需要Java環境,因此必須在所有節點上安裝Java,并且對Java版本有如下要求:
Hadoop 3.3 以上支持Java 8 and Java 11,但是編譯時只支持Java 8 Hadoop 3.0 — 3.2 只支持Java 8 Hadoop 2.7.x — 2.x 支持Java 7 and Java 8
#! 在node01主節點上創建指定目錄 [root@node01 ~]# mkdir -p /opt/apps #! 進入到apps目錄 [root@node01 ~]# cd /opt/apps/ #! 使用rz命令從Windows主機上傳jdk壓縮包到node01節點,也可以直接拖拽至xshell命令窗口 [root@node01 apps]# rz #! 解壓到當前目錄 [root@node01 apps]# tar -zxvf jdk-8u281-linux-x64.tar.gz [root@node01 apps]# vim /etc/profile #! 在該文件后面追加一下內容 export JAVA_HOME=/opt/apps/jdk1.8.0_291 export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib/rt.jar export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin #! 使剛才的設置生效 [root@node01 apps]# source /etc/profile #! 檢測是否配置成功 [root@node01 apps]# java -version java version "1.8.0_291" Java(TM) SE Runtime Environment (build 1.8.0_261-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode)9.下載 Hadoop 安裝包
下載完成后上傳至node01節點,其他節點可以先不配置,最后統一遠程拷貝即可。
#上傳
[root@node01 ~]# cd /opt/apps
[root@node01 apps]# rz
解壓
10.修改配置文件
hadoop-env.sh
此配置文件是Hadoop一些核心腳本的配置文件,要指定JAVA_HOME。
[root@node01 apps]# cd hadoop-3.2.2/ [root@node01 hadoop-3.2.2]# vim etc/hadoop/hadoop-env.sh export JAVA_HOME=/opt/apps/jdk1.8.0_291core-site.xml
此配置文件是Hadoop核心的配置文件,對應于Common模塊在此配置文件中配置文件系統的訪問端口和訪問權限等。
[root@node01 hadoop-3.2.2]# vim etc/hadoop/core-site.xml <!--在<configuration></configuration>中間添加一下內容--> <property><name>fs.defaultFS</name><!--定義Hadoop HDFS中 namenode 的URI和端口【必須配置】--><value>hdfs://node01:9000</value> </property> <property><name>hadoop.tmp.dir</name><!--Hadoop運行時臨時的存儲目錄【必須配置】--><value>file:/opt/apps/hadoop-3.2.2/tmp</value> </property> <property><name>io.file.buffer.size</name><!--用作序列化文件處理時讀寫buffer的大小【可以不配置】--><value>131702</value> </property> <property><name>hadoop.http.staticuser.user</name><value>root</value> </property> <!--以下兩個配置暫時用不上【可以不必配置】實際需要的時候注意修改hadoopuser為Hadoop的用戶這里應該是root--> <property><name>hadoop.proxyuser.root.hosts</name><value>*</value> </property> <property><name>hadoop.proxyuser.root.groups</name><value>*</value> </property>hdfs-site.xml
此配置文件是HDFS核心的配置文件,對應于HDFS模塊,在此配置文件中配置文件系統數據存儲路徑和SecondaryNameNode地址等。
[root@node01 hadoop-3.2.2]# vim etc/hadoop/hdfs-site.xml <!--在<configuration></configuration>中間添加一下內容--> <property><!--namenode節點 元數據存儲目錄【必須配置】--><name>dfs.namenode.name.dir</name><value>file:/opt/apps/hadoop-3.2.2/dfs/name</value> </property> <property><!--datanode 真正的數據存儲目錄【必須配置】--><name>dfs.datanode.data.dir</name><value>file:/opt/apps/hadoop-3.2.2/dfs/data</value> </property> <property><!--指定DataNode存儲block的副本數量,不大于DataNode的個數就行,默認為3【必須】--><name>dfs.replication</name><value>2</value> </property> <property><!--指定SecondaryNamenode的工作目錄【必須配置】--><name>dfs.namenode.checkpoint.dir</name><value>file:/opt/apps/hadoop-3.2.2/dfs/namesecondary</value> </property> <property><!--指定SecondaryNamenode的http協議訪問地址【必須配置】--><name>dfs.namenode.secondary.http-address</name><value>node03:9868</value> </property> <property><!--指定SecondaryNamenode的https協議訪問地址:【可以不進行配置】--><name>dfs.namenode.secondary.https-address</name><value>node03:9869</value> </property>yarn-site.xml
此配置文件是Yarn核心的配置文件,對應于Yarn模塊,在此配置文件中配置ResourceManager主機名和NodeManager內存大小等。
[root@node01 hadoop-3.2.2]# vim etc/hadoop/yarn-site.xml <!--在<configuration></configuration>中間添加一下內容--> <property><!--Reducer獲取數據的方式【必須配置】--><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value> </property> <property><!--Reducer獲取數據的方式中shuffle過程對應的類,可以自定義,【可以不配置】,這是默認的--><name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name><value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> <property><!--ResourceManager主機名,配置后其他的address就不用配置了,除非需要自定義端口【必須配置】--><name>yarn.resourcemanager.hostname</name><value>node02</value> </property> <property><!--NodeManager節點的內存大小,單位為MB【必須配置】--><name>yarn.nodemanager.resource.memory-mb</name><value>2048</value> </property> <property><!--NodeManager節點硬件的自動探測,主要為修正CPU個數,開啟后不影響前面內存的配置--><name>yarn.nodemanager.resource.detect-hardware-capabilities</name><value>true</value> </property> <!-- 日志聚集功能【暫時不需要配置】 --> <property><name>yarn.log-aggregation-enable</name><value>true</value> </property> <!-- 日志保留時間設置7天 【暫時不需要配置】--> <property><name>yarn.log-aggregation.retain-seconds</name><value>604800</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>mapred-site.xml
此配置文件是MapReduce核心的配置文件,對應于MapReduce模塊,
[root@node01 hadoop-3.2.2]# vim etc/hadoop/mapred-site.xmlmapreduce.framework.name MapReduce程序運行的框架,默認為local,集群模式配置為yarn
<!--使用yarn運行mapreduce程序【必須配置】--> <property><name>mapreduce.framework.name</name><value>yarn</value> </property> <!--配置歷史服務器【暫時不需要配置】--> <property><!--MapReduce JobHistory Server地址--><name>mapreduce.jobhistory.address</name><value>node01:10020</value> </property> <!--MapReduce JobHistory Server Web界面地址--> <property><name>mapreduce.jobhistory.webapp.address</name><value>node01:19888</value> </property>workers
該文件中配置所有DataNode節點的主機名
[root@node01 hadoop-3.2.2]# vim etc/hadoop/workers #添加以下內容:這里添加的是所有的數據節點,注意刪除原來的localhost【必須配置】 node01 node02 node0311.文件分發
將node01節點上的apps目錄遠程拷貝到其他節點
scp -r /opt/apps root@node02:/opt/ scp -r /opt/apps root@node03:/opt/12 設置環境變量
#! 所有各節點均編輯/etc/profile文件 [root@node01 hadoop-3.2.2]# vi /etc/profile #! 添加以下內容 ##Hadoop export HADOOP_HOME=/opt/apps/hadoop-3.2.2 export HADOOP_LOG_DIR=$HADOOP_HOME/logs export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin ##Hadoop User export HADOOP_USERNAME=root export HDFS_NAMENODE_USER=$HADOOP_USERNAME export HDFS_DATANODE_USER=$HADOOP_USERNAME export HDFS_SECONDARYNAMENODE_USER=$HADOOP_USERNAME export YARN_RESOURCEMANAGER_USER=$HADOOP_USERNAME export YARN_NODEMANAGER_USER=$HADOOP_USERNAME #! 使設置立即生效 [root@node01 hadoop-3.2.2]# source /etc/profile13.格式化Hadoop
hdfs namenode -format總結
以上是生活随笔為你收集整理的基础数据仓库环境搭建(二) Hadoop的环境搭建的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基础数据仓库环境搭建(一)数据仓库概述
- 下一篇: Echarts开源可视化库学习(三)主题