您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關如何在騰訊云上搭建hadoop3.x偽集群,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
一、環境準備
CentOS Linux release 7.5.1804 (Core) 系統下
安裝
創建文件夾
$ cd /home/centos $ mkdir software $ mkdir module
將安裝包導入software文件夾
$ cd software # 然后把文件拖進去即可
這里使用的安裝包是
/home/centos/software/hadoop-3.1.3.tar.gz
/home/centos/software/jdk-8u212-linux-x64.tar.gz
$ tar -zxvf jdk-8u212-linux-x64.tar.gz -C ../module $ tar -zxvf hadoop-3.1.3.tar.gz -C ../module
配置環境變量
$ cd /etc/profile.d/ $ vim my_env.sh
為了不污染系統變量,我們自己創建一個環境變量的腳本,配置內容如下
#JAVA_HOME,PATH # export 提升為全局變量,如果你的路徑和我不同,記得這里要使用自己的路徑哦 export JAVA_HOME=/home/centos/module/jdk1.8.0_212 export PATH=$PATH:$JAVA_HOME/bin #HADOOP_HOME export HADOOP_HOME=/home/centos/module/hadoop-3.1.3 export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin
然后保存退出(這里不會的話可以看下vim基礎使用,不再贅述了)。
我們source一下,使環境變量生效
$ source /etc/profile
測試一下,看看是否成功
$ hadoop version
$ java
出現以上界面就是沒問題了,如果還沒成功可以做以下兩項檢查:
ssh免密
雖然是偽集群,但是本機連接本機的時候還是會需要密碼的,所以要設置一下ssh免密
$ ssh-keygen -t rsa
出現提示就不停的按回車即可,生成完秘鑰后
$ ssh-copy-id 本機hostname
配置host文件
vi /etc/hosts #這里我保留的配置為,其中master配置的是騰訊云的內網, 如果配置外網會導致eclipse客戶端連不上hadoop ::1 localhost.localdomain localhost ::1 localhost6.localdomain6 localhost6 172.16.0.3 master 127.0.0.1 localhost
修改主機名
vi /etc/sysconfig/network #修改HOSTNAME為master HOSTNAME=master
修改hostname
$ hostnamectl --static set-hostname master
關閉防火墻
$ systemctl disable firewalld #永久
二、配置hadoop
配置文件
進入hadoop的配置文件專區,所有配置文件都在這個文件夾
$ cd /home/centos/module/hadoop-3.1.3/etc/hadoop
我們要配置的文件主要有
core-site.xml
hdfs-site.xml
yarn-site.xml
mapred-site.xml
hadoop-env.sh
那接下來就按照步驟操作吧!
$ vim core-site.xml
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://騰訊云內網ip地址:9820</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/centos/module/hadoop-3.1.3/data/tmp</value> </property> <!-- 通過web界面操作hdfs的權限 --> <property> <name>hadoop.http.staticuser.user</name> <value>root</value> </property> <!-- 后面hive的兼容性配置 --> <property> <name>hadoop.proxyuser.root.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.root.groups</name> <value>*</value> </property> </configuration>
$ vim hdfs-site.xml
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>騰訊云內網ip地址:9868</value> </property> </configuration>
$ vim hadoop-env.sh
export JAVA_HOME=/home/centos/module/jdk1.8.0_212
$ vim yarn-site.xml
<configuration> <!-- Reducer獲取數據的方式--> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!-- 指定YARN的ResourceManager的地址--> <property> <name>yarn.resourcemanager.hostname</name> <value>master</value> </property> <!-- 環境變量通過從NodeManagers的容器繼承的環境屬性,對于mapreduce應用程序,除了默認值 hadoop op_mapred_home應該被添加外。屬性值 還有如下--> <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> <!-- 解決Yarn在執行程序遇到超出虛擬內存限制,Container被kill --> <property> <name>yarn.nodemanager.pmem-check-enabled</name> <value>false</value> </property> <property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value> </property> <!-- 后面hive的兼容性配置 --> <property> <name>yarn.scheduler.minimum-allocation-mb</name> <value>512</value> </property> <property> <name>yarn.scheduler.maximum-allocation-mb</name> <value>4096</value> </property> <property> <name>yarn.nodemanager.resource.memory-mb</name> <value>4096</value> </property> <!-- 開啟日志聚集 --> <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <!-- 訪問路徑--> <property> <name>yarn.log.server.url</name> <value>http://172.17.0.13:19888/jobhistory/logs</value> </property> <!-- 保存的時間7天 --> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>604800</value> </property> </configuration>
配置歷史服務器
$ vim mapred-site.xml
<!-- 歷史服務器端地址 --> <property> <name>mapreduce.jobhistory.address</name> <value>騰訊云內網ip:10020</value> </property> <!-- 歷史服務器web端地址 --> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>騰訊云內網ip:19888</value> </property>
初始化
第一次啟動需要格式化NameNode,后面就不需要啦
$ hdfs namenode -format
初始化后,可以看到hadoop安裝文件夾中,出現了data和logs兩個文件夾,這樣就是初始化成功了
接下來看下啟動集群
$ start-dfs.sh
啟動完畢,沒有異常信息,查看一下進程
[root@VM_0_13_centos hadoop]# jps 20032 Jps 30900 DataNode 31355 SecondaryNameNode 30559 NameNode
全部啟動成功~!
一鍵啟動
上面都沒問題后,可以做一個腳本一鍵啟動集群,在bin目錄下新建
$ vim mycluster
添加如下內容
#!/bin/bash case $1 in "start") #dfs yarn history start-dfs.sh start-yarn.sh mapred --daemon start historyserver ;; "stop") # dfs yarn history stop-dfs.sh stop-yarn.sh mapred --daemon stop historyserver ;; *) echo "args is error! please input start or stop" ;; esac
配置腳本的權限
$ chmod u+x mycluster
使用腳本啟動
$ mycluster start $ jps 23680 NodeManager 24129 JobHistoryServer 22417 DataNode 24420 Jps 22023 NameNode 23384 ResourceManager 22891 SecondaryNameNode
三、查看hdfs
配置安全組規則
在進行以下操作前,現在安全組規則中的協議端口中,加入以下要使用的端口
端口號:
hadoop web頁面
在瀏覽器輸入:騰訊云公網地址:端口號
,即可進入對應的web界面
這是我們發現Secondary NameNode的界面顯示不太正常,這是由于hadoop3中dfs-dust.js的時間函數使用有誤。我們手動改正一下。
首先關閉集群
$ mycluster stop
修改文件
$ vim /home/centos/module/hadoop-3.1.3/share/hadoop/hdfs/webapps/static/dfs-dust.js
約61行的位置,如圖所示,更改為:
return new Date(Number(v)).toLocaleString();
此時我們再啟動集群
$ mycluster start
可以看到Secondary NameNode的web界面已經正常了
測試hdfs
那我們來上傳文件玩一玩吧
在hadoop目錄下新建一個文件夾
$ mkdir temdatas
進入文件夾,新建一個測試文件
$ vim text.txt
內容隨便寫吧,寫好保存,我們開始上傳文件
$ hdfs dfs -put text.txt /
查看一下web頁面,上傳成功了~
再嘗試把這個文件down下來
$ hdfs dfs -get /text.txt ./text1.txt
成功~
至此hadoop集群搭建完畢,可以自己耍一些好玩的事啦~!
WordCount案例實操
在web端新建文件夾 input
在其中上傳一個自己寫的各種單詞的文件,做單詞統計
#或者自己在vim中寫好上傳也可 $ hdfs dfs -put wordcount.txt /input
然后測試一下wordcount案例,注意輸出文件夾不能存在
$ hadoop jar /home/centos/module/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output
運行完之后,我們看一下結果
#拉取hdfs文件 [root@master mydata]# hdfs dfs -get /output ./ #查看結果 [root@master output]# cat part-r-00000 a 2 b 3 c 2 d 1 e 1 f 1
至此,你已經可以自由的玩耍hadoop啦。
當然,如果你已經嘗試了的話,會發現,還有一個小問題沒有解決,就是在web端點擊文件查看head或tail時,會發生無法查看的情況,download也是不可以的。這個在虛擬機安裝時并沒有發生過,我還在研究怎么回事。如果有大神知道怎么回事,可以留言說一下哈
關于如何在騰訊云上搭建hadoop3.x偽集群就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。