1. 程式人生 > >在Ubuntu進行Hadoop安裝與配置

在Ubuntu進行Hadoop安裝與配置

騰訊雲 ubuntu 16.04.1 LTS 64位

Linux操作

修改root的密碼 

sudo passwd root

將使用者登出

logout

關閉防火牆

ufw disable

解除安裝iptables元件

apt-get remove iptables

下載vim元件(用於文字編輯)

apt-get install vim

進行文字的改變

sudo dpkg-reconfigure console-setup

linux遠端連線

  •  第一:linux上有ssh服務
  • 第二:使用ssh客戶端工具

為系統中安裝ssh工具

apt-get install openssh-server

啟動ssh服務

/etc/init.d/ssh start

檢視程序,是否已經已經啟動指定服務

ps -e | grep sshd

有了程序才可以有ssh的使用

ubuntu預設情況不允許root使用者登陸 使用vim開啟/etc/ssh/sshd_config檔案

vim /etc/ssh/sshd_config

隨後進行PermitRootLogin的內容修改,將內容設定為yes

配置ftp服務

安裝ftp元件

apt-get install vsftpd

修改ftp使用者密碼

passwd ftp

ftp服務安裝完成之後,會自動建立一個目錄:/srv/ftp cd /srv/ftp 設定此目錄為完全許可權

chmod 777 /srv/ftp

若要ftp可以正常工作,需要進行一些配置檔案的修改"/etc/vsftpd.conf"

vim /etc/vsftpd.conf

設定如下配置: 設定不允許匿名登陸(必須正確使用者名稱和密碼) anonymous_enable=NO #配置使用者具有寫許可權 write_enable=YES 允許本地使用者登陸 local_enable=YES 是否將所有使用者限制在主目錄(去掉註釋#) chroot_local_user=YES 是否啟動限制使用者的名單 chroot_list_enable=YES 定義名單設定的目錄(因為名單中可以設定多個賬號) chroot_list_file=/etc/vsftpd.chroot_list 增加一個服務配置 pam_service_name=vsftpd

進入配置檔案 vim /etc/vsftpd.chroot_list 新增一個ftp使用者,輸入完成儲存退出 修改/etc/pam.d/vsftpd vim /etc/pam.d/vsftpd 註釋掉以下內容 auth   required        pam_shells.so

啟動ftp服務

service vsftpd start
service vsftpd restart           //重新啟動

檢視是否已經啟動ftp服務

ps -e | grep vsftpd

hadoop安裝與配置

jdk安裝與配置

下載jdk或直接ftp傳入

wget http://download.oracle.com/otn-pub/java/jdk/8u191-b12-demos/2787e4a523244c269598db4e85c51e0c/jdk-8u191-linux-x64-demos.tar.gz

解壓縮並儲存在/usr/local目錄

tar xzvf jdk-8u191-linux-x64-demos.tar.gz -C /usr/local

改名

mv jdk1.8.0_191/ jdk

進入環境檔案進行配置

vim /etc/profile

export JAVA_HOME=/usr/local/jdk export PATH=$PATH:$JAVA_HOME/bin: export CLASS_PATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

#預設情況下修改環境變數的內容後,需要重新啟動系統才可以讀取新的配置,但也可以用source使配置立刻生效:

source /etc/profile

linux中安裝hadoop

tar xzvf hadoop-2.8.5-src -C /usr/local

#進入環境變數的配置

export HADOOP_HOME=/usr/local/hadoop export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:

讓配置生效

source /etc/profile

hadoop依賴於JDK支援,所以要在hadoop一個資原始檔裡面定義要使用的JDK路徑

vim hadoop-env.sh 

確定Hadoop中將要使用到的jdk設定

export JAVA_HOME=/usr/local/jdk

#測試hadoop是否已經安裝完成可用,可用hadoop自帶測試程式     進行單詞統計資訊,首先指定一個單詞檔案 #在Hadoop的目錄下建立一個input目錄: [email protected]:/usr/local/hadoop# mkdir input #編寫一個檔案 [email protected]:/usr/local/hadoop# echo hello 6jj hello nihaoa > input/info.txt 每個單詞中使用" "進行拆分

基於分散式的hadoop配置

配置ssh

ip不可變更,否則需要重新配置

為了配置方便,為每臺電腦設定主機名稱

vim /etc/hostname

將裡面的localhost修改為"Hadoopm"

還需修改主機的對映配置,修改"/etc/hosts"檔案,裡面追加IP地址與hadoopm主機名稱的對映

vim /etc/hosts

172.16.0.3 hadoopm

為了可以讓生效起作用,建議重新啟動輸入reboot重新啟動Linux

在在整個Hadoop的處理過程中,都是利用ssh實現通訊,所以即使是在本機,也建議使用ssh進行通訊處理,也必須在電腦上配置ssh免登陸處理     由於電腦可能已經出現了ssh的相關配置,所以建議刪除根目錄下的".ssh"資料夾

cd ~
rm -rf ~/.ssh

在Hadoop的主機上生成ssh Key:

ssh-keygen -t rsa

此時程式若要進行登陸依然需要密碼,需要將公鑰資訊儲存在授權認證的檔案之中"authorized_key"檔案裡面

cd ~
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

以後可進行免登陸處理

隨後登陸

ssh [email protected]

登陸之後變成遠端連線,那麼可以使用exit退出當前的連線

hadoop的相關配置

所有的配置檔案都在"/usr/local/hadoop/etc/hadoop/"目錄

配置:"core-site.xml"

確定Hadoop的核心資訊,包括臨時目錄,訪問地址

<property>

      <name>hadoop.tmp.dir</name>
      <value>/home/root/hadoop_tmp</value>
</property> 
<property> 
      <name>fs.defaultFS</name>
      <value>hdfs://hadoopm:9000</value>
</property>
  • 本文配置的"hdfs://hadoopm:9000"資訊,描述的是日後開啟的頁面管理器的路徑,Hadoop版本2.X預設埠為9000
  • 在本配置之中最為重要的就是"/home/root/hadoop_tmp",這個檔案路徑配置的臨時檔案資訊,若不配置,就會在hadoop的資料夾中生成"tmp"檔案("/usr/local/hadoop/tmp"),如果這樣配置,當重新啟動,所有的資訊都會被清空, 也就是說Hadoop的環境就失效了,為保證不出錯,可先直接建立一個"/home/root/hadoop_tmp"目錄 mkdir ~/root/hadoop_tmp

配置:"yarn-site.xml"

可以簡單的理解為配置相關的job的處理


<property>
	<name>yarn.resourcemanager.admin.address</name>
	<value>hadoopm:8033</value>
</property>
<property>
	<name>yarn.nodemanager.aux-services</name>
	<value>mapreduce_shuffle</value>
</property>
<property>
	<name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
	<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
	<name>yarn.resourcemanager.resource-tracker.address</name>
	<value>hadoopm:8025</value>
</property>
<property>
	<name>yarn.resourcemanager.scheduler.address</name>
	<value>hadoopm:8030</value>
</property>
<property>
	<name>yarn.resourcemanager.address</name>
	<value>hadoopm:8050</value>
</property>
<property>
	<name>yarn.resourcemanager.scheduler.address</name>
	<value>hadoopm:8030</value>
</property>
<property>
	<name>yarn.resourcemanager.webapp.address</name>
	<value>hadoopm:8088</value>
</property>
<property>
	<name>yarn.resourcemanager.webapp.https.address</name>
	<value>hadoopm:8090</value>
</property>

配置:"hdfs-site.xml"

可以確定檔案的備份個數以及資料資料夾的路徑


<property>

    <name>dfs.replication</name>

    <value>1</value>

</property>
<property>

    <name>dfs.namenode.name.dir</name>

    <value>file:///usr/local/hadoop/dfs/name</value>

</property>
<property>

    <name>dfs.datanode.data.dir</name>

    <value>file:///usr/local/hadoop/dfs/data</value>

</property>
<property>

    <name>dfs.namenode.http-address</name>

    <value>hadoopm:50070</value>

</property>
<property>

    <name>dfs.namenode.secondary.http-address</name>

    <value>hadoopm:50090</value>

</property>
<property>

    <name>dfs.permissions</name>

    <value>false</value>

</property>
  • "replication":檔案的副本數,一般情況下一個檔案備份3份
  • "dfs.namenode.name.dir":定義名稱節點路徑
  • "dfs.datanode.data.dir":定義資料檔案節點路徑
  • "dfs.namenode.http-address":名稱服務的http路徑訪問
  • "dfs.namenode.secondary.http-address":第二名稱節點
  • "dfs.permissions":許可權的訪問,為避免無法進入的問題,設為false

由於Hadoop屬於分散式的開發環境,考慮到日後要進行叢集的搭建 建議在"/usr/local/hadoop/etc/hadoop/"目錄中建立master檔案,裡面寫上主機名稱,內容就是hadoopm(之前在host檔案裡面定義的主機名稱),若是的單機環境,不寫也可以

vim masters

hadoopm

修改從節點檔案(slaves),增加hadoopm

vim slaves 

由於此時是將所有的namenode,datanode路徑儲存在hadoop目錄中,如果為了保險起見,可以自己建立,在hadoop目錄下

mkdir dfs dfs/name dfs/data

若Hadoop出現了問題,需要重新配置,要將這兩個資料夾清除掉

格式化檔案系統

hdfs namenode -format

若格式化正常,就會出現"INFO util.ExitUtil:Exiting with status 0"資訊 若出現錯誤就會出現"INFO util.ExitUtil:Exiting with status 1"資訊

隨後可以進行簡單的處理,啟動Hadoop:

隨後可利用JDK提供的jps命令檢視,所有Java程序若返回6個程序,表示配置成功了 

jsp

隨後可以測試HDFS是否可以正常使用

如需關閉服務:stop-all.sh命令

start-all.sh