在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