1. 程式人生 > 其它 >Spring原始碼分析之Resource

Spring原始碼分析之Resource

幾年前搞過一段時間hadoop,現在又要開始搞了,發現環境都不會搭建了。寫個部落格記錄下搭建過程。

目錄

1、建立虛擬機器及規劃

下面是我本地的環境資訊

機器名 IP 作業系統
hadoop1 192.168.68.120 CentOS7
hadoop2 192.168.68.121 CentOS7
hadoop3 192.168.68.122 CentOS7
  • 修改機器名:
hostnamectl set-hostname [機器名]
# hostnamectl set-hostname   hadoop1
  • 修改IP資訊:

    /etc/sysconfig/network-scripts/ifcfg-ens33檔案中配置IP資訊。主要修改如下幾項。

IPADDR="192.168.68.120" # IP地址
PREFIX="24"             # 子網掩碼位數,也可以設定為 NETMASK=255.255.255.0
GATEWAY="192.168.68.1"  # 閘道器

規劃

hadoop1 hadoop2 hadoop3
HDFS NameNode、DataNode DataNode SecondaryNameNode、DataNode
YARN NodeManager NodeManager ResourceManager、NodeManager
other JobHistoryServer

我們首先建立個名的hadoop使用者,後續所有操作如無特別說明,均是在hadoop使用者下執行.

adduser hadoop   # 建立hadoop使用者
passwd hadoop    # 設定hadoop使用者密碼,回車後輸入hadoop使用者密碼

2、設定各主機之間免密登入

1、在每臺主機hosts檔案中新增IP與主機名的對映關係
  • 在每臺主機/etc/hosts檔案中新增如下內容。

    /etc/hosts檔案hadoop使用者沒有許可權,所以修改這個檔案要用root使用者操作。

    192.168.68.120  hadoop1
    192.168.68.121  hadoop2
    192.168.68.122  hadoop3
    
2、設定互信(每臺主機都執行)
  • 在每臺主機生成ssh公鑰私鑰,將公鑰拷貝到所有主機(包括自己)。

    ssh-keygen -t rsa   #這裡需要連續4個回車
    ssh-copy-id hadoop1
    ssh-copy-id hadoop2
    ssh-copy-id hadoop3
    

3、安裝JDK和hadoop

需要的軟體是jdk和hadoop,我本次使用的是jdk-11.0.10_linux-x64_bin.tar.gzhadoop-3.2.3.tar.gz

我本地軟體安裝位置在/home/hadoop/software

這裡的操作都是在hadoop1上執行,最後會拷貝到hadoop2、hadoop3上

1、上傳軟體包
  • 建立安裝目錄software目錄

    mkdir /home/hadoop/software
    
  • 上傳軟體包

    jdk-11.0.10_linux-x64_bin.tar.gzhadoop-3.2.3.tar.gz上傳到/home/hadoop/software目錄中

2、安裝Java,設定環境變數
  • 解壓java、hadoop
#在/home/hadoop/software目錄中執行
 tar -zxvf jdk-11.0.10_linux-x64_bin.tar.gz  # 解壓jdk
 tar -zxvf hadoop-3.2.3.tar.gz               # 解壓hadoop
  • 設定java環境變數

    ~/.bashrc檔案中新增如下內容

    JAVA_HOME=/home/hadoop/software/jdk-11.0.10
    CLASSPATH=.:$JAVA_HOME/lib
    PATH=$PATH:$JAVA_HOME/bin
    export JAVA_HOME CLASSPATH PATH
    
    
    export HADOOP_HOME=/home/hadoop/software/hadoop-3.2.3
    export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
    

    執行如下命令使環境變數生效

    source ~/.bashrc
    
3、配置檔案修改

3.1 修改/home/hadoop/software/hadoop-3.2.3/etc/hadoop/core-site.xml


        <!-- 指定HDFS中NameNode的地址,這裡也就是指定了NameNode在hadoop1這個節點上-->
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://hadoop1:9000</value>
        </property>

        <!-- 指定Hadoop執行時產生檔案的儲存目錄 -->
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/home/hadoop/software/hadoop-3.2.3/data/tmp</value>
        </property>

3.修改/home/hadoop/software/hadoop-3.2.3/etc/hadoop/hdfs-site.xml

		<!-- 指定HDFS中NameNode的web端訪問地址,這裡的節點要和core-site的節點對應起來-->
  		<property>
            <name>dfs.namenode.http-address</name>
			<value>hadoop1:9870</value>
		</property>
		<!-- 指定secondary節點主機配置 ,這裡也就是指定了secondary節點在hadoop3-->
        <property>
              <name>dfs.namenode.secondary.http-address</name>
              <value>hadoop3:50090</value>
        </property>

3.修改/home/hadoop/software/hadoop-3.2.3/etc/hadoop/yarn-site.xml

    	<property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>

        <!-- 指定YARN的ResourceManager的地址,也就是指定resourcemanager所在的節點 -->
        <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>hadoop3</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>
        <!-- 日誌聚集功能使能 -->
        <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.log.server.url</name> 
 			<value>http://hadoop1:19888/jobhistory/logs</value>
		</property>

修改/home/hadoop/software/hadoop-3.2.3/etc/hadoop/mapred-site.xml

	<property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <!-- 歷史伺服器端地址,也就是指定了歷史伺服器節點 -->
	<property>
 		<name>mapreduce.jobhistory.address</name>
 		<value>hadoop1:10020</value>
	</property>
	<!-- 歷史伺服器 web 端地址 -->
	<property>
 		<name>mapreduce.jobhistory.webapp.address</name>
 		<value>hadoop1:19888</value>
	</property>

修改/home/hadoop/software/hadoop-3.2.3/etc/hadoop/workers

hadoop1
hadoop2
hadoop3
4、將上述內容分別拷貝至hadoop2、hadoop3
scp -r /home/hadoop/software/jdk-11.0.10   hadoop2:/home/hadoop/software/
scp -r /home/hadoop/software/jdk-11.0.10   hadoop3:/home/hadoop/software/
scp -r /home/hadoop/software/hadoop-3.2.3   hadoop2:/home/hadoop/software/
scp -r /home/hadoop/software/hadoop-3.2.3   hadoop3:/home/hadoop/software/
scp ~/.bashrc hadoop2:~/
scp ~/.bashrc hadoop3:~/

如果在執行這一步之前已經使用hdoop使用者登入了hadoop2或者hadoop3,為了使上面拷貝的環境變數生效,需要在hadoop2,hadoop3上分別執行

source ~/.bashrc命令

4、啟動服務

1、執行初始化命令

hadoop1節點上執行

hdfs namenode -format #只在namenode節點執行

看到上面這句就表示執行成功。

2、啟動hadoop叢集

在hadoop1節點上執行如下命令

start-dfs.sh # 需要在namenode節點上執行

分別在每臺主機執行jps命令檢查程序是否啟動正常

同時也可以通過web介面進行訪問http://192.168.68.120:9870/dfshealth.html#tab-overview

3、啟動yarn。

在hadoop3 節點上實行如下命令

start-yarn.sh  #注意這個需要在yarn所在節點啟動(`yarn-site.xml`中`yarn.resourcemanager.hostname`屬性指定)。

再次通過檢查每臺主機程序是否啟動正常

也可以通過web介面進行訪問http://192.168.68.122:8088/cluster

4、啟動歷史伺服器.

在hadoop1節點上執行如下命令。(通過mapred-site.xml配置檔案中指定)

mapred --daemon start historyserver   

到這裡,整個hadoop叢集就已經搭建完成了。

各個服務元件逐一啟動/停止

(1)分別啟動/停止 HDFS 元件

hdfs --daemon start/stop namenode/datanode/secondarynamenode

(2)啟動/停止 YARN

yarn --daemon start/stop resourcemanager/nodemanager