280
汽車大全
Hdoop 2.7.3 分布式配置
學一門新技術,首先選擇官方文檔,如果英文水平不夠可以找一份中文教程相互印證。碰到疑惑請首先選擇google(用google是需要翻牆的,我用的是穿雲兔),然後再考慮百度,如果還是解決不了,請加個相關的QQ群,裏麵會有相關資料。而且可以向群友請教,但是要放寬心態,記住,有人幫忙解答是我的福氣,沒人幫忙解答是正常情況。
一.安裝虛擬機 CenterOS 7.2
本人使用的虛擬機是VMware。
資源規劃
m1: 1G 內存 10G 硬盤
s1:512M 內存 10G硬盤
s2:512M 內存 10G硬盤
二.準備好hadoop穩定版。2.7.3是hadoop 2.X的穩定版
https://www-eu.apache.org/dist/hadoop/common/stable/
準備好工具 xshell xftp
通過xftp將下載好的資源放在 /user 下
解壓:tar -zxvf hadoop-2.7.3.tar.gz
重命名: mv hadoop-2.7.3.tar.gz hadoop
刪除下載包:rm -rf hadoop-2.7.3.tar.gz
三.配置靜態IP(非必須)
查看網卡配置
ip add
進入網絡配置文件目錄
cd /etc/sysconfig/network-scripts
編輯配置文件,添加修改以下內容
vim ifcfg-eno16777736
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736
UUID=a33a7da0-6630-43c3-8b1b-135e2c00f29f
DEVICE=eno16777736
ONBOOT=yes
PEERDNS=yes
PEERROUTES=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPADDR0=192.168.1.111
NETMASK=255.255.255.0
PREFIX0=24
GATEWAY0=192.168.1.1
DNS1=8.8.8.8
修改主機名
hostnamectl set-hostname m1
網卡重啟
service network restart
同理配置s1機器跟s2機器,最後得到:
hostname | ip |
---|---|
m1 | 192.168.1.111 |
s2 | 192.168.1.112 |
s3 | 192.168.1.113 |
修改時區
timedatectl set-timezone Asia/Shanghai
配置局域網映射 x3( x3表示三個機器都要配置)
echo "192.168.1.111 m1" >> /etc/hosts
echo "192.168.1.112 s2" >> /etc/hosts
echo "192.168.1.113 s3" >> /etc/hosts
創建 hadoop 用戶以及 hadoop 用戶組 x3
groupadd hadoop
useradd -m -g hadoop hadoop
passwd hadoop
計算機網絡: IP地址,子網掩碼,網段表示法,默認網關,DNS服務器詳解
四.配置jdk。
因為hadoop是用java語言編寫的,想要讓hadhadoop跑起來,一定需要jdk這個環境變量的。我選擇的是jdk1.8。
查看當前係統是否安裝了jdk
卸載
rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.65-3.b17.el7.x86_64
rpm -e --nodeps java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64
rpm -e --nodeps java-1.7.0-openjdk-1.7.0.91-2.6.2.3.el7.x86_64
rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.91-2.6.2.3.el7.x86_64
下載jdk (去官網下載即可),下載好後將jdk放在/user目錄下
解壓縮
tar -zxvf jdk-8u131-linux-x64.tar.gz
刪除下載包
rm -rf jdk-8u131-linux-x64.tar.gz
配置環境變量
vim /etc/profile
在最下方加上這麼幾句
- export JAVA_HOME=/usr/jdk1.8.0_131/
- export JRE_HOME=/usr/jdk1.8.0_131/jre
- export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
- export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
使環境變量生效
source /etc/profile
查看是否生效
java -version
如果結果如圖表示環境變量配置已OK
五.SSH免密登錄
配置ssh環境變量(x3 表示三個節點都要做此動作)
echo 'eval $(ssh-agent)' >> /etc/profile
刷新環境變量(x3)
source /etc/profile
切換到hadoop用戶組(x3)
su hadoop
ssh初始化 (x3)
ssh localhost
進入hadoop用戶目錄(m1 表示隻有m1節點做此動作)
cd ~/.ssh
利用 ssh-keygen 生成密鑰 然後一直按回車(m1)
ssh-keygen -t rsa -P ""
將id_rsa.pub的內容追加到了authorized_keys的內容後麵 (m1)
cat id_rsa.pub >> authorized_keys
將公鑰copy到s2 會要輸入s2 hadoop用戶的登錄密碼(m1)
ssh-copy-id s2
將公鑰copy到s3 會要輸入s3 hadoop用戶的登錄密碼(m1)
ssh-copy-id s3
使用 ssh-agent 實現免密登錄(m1)
ssh-add ~/.ssh/id_rsa
修改權限 ~/.ssh/*目錄的權限(x3)
chmod 600 ~/.ssh/authorized_keys
檢查免密登錄是否成功(m1)
ssh s2
如圖,表示ssh免密登錄已成功。注意,免密登錄隻能是m1發起 不能有s2 和 s3發起。
六.安裝hadoop 2.7.3 (x3)
好了一切準備工作已就緒,終於可以開搞了。因為不管是主節點還是從節點他們的配置都是相同的,所以我先在主節點上做好配置,然後直接通過ssh複製到從節點。通過SSH我們可以十分方便的將我們的節點擴充到成百上千個。
選擇hadoop的安裝地址(x3)
cd /user
解壓
tar -zxvf hadoop-2.7.3.tar.gz
刪除包(x3)
cd hadoop
#####重命名(x3)mv hadoop-2.7.3/ hadoop
賦予權限 令hadoop用戶組下的hadoop用戶對/user/hadoop 及以下所有子目錄擁有管理員權限
chown -R hadoop:hadoop hadoop(x3)
在/user/hadoop目錄下創建幾個目錄,用來放臨時文件
- mkdir dfs
- mkdir dfs/name
- mkdir dfs/data
- mkdir tmp
配置配置文件 都在/usr/hadoop/etc/hadoop目錄下
- hadoop-env.sh
- yarn-env.sh
- slaves
- core-site.xml
- hdfs-site.xml
- mapred-site.xml
- yarn-site.xml
- hadoop-env.sh 配置hadoop的java環境變量 export JAVA_HOME=/usr/jdk1.8.0_131
- yarn-env.sh 配置yarm的java環境變量 export JAVA_HOME=/usr/jdk1.8.0_131
- slaves slaves下的所有機器都是當前name node 的data node 如果是偽分布式配置localhost,我這邊配置的是s2 和s3 s2 s3
- core-site.xml 配置hadoop的一些重要參數,包括緩存文件的保存路徑,hdfs文件係統的入口
key | value |
---|---|
hadoop.tmp.dir | file:/usr/hadoop/tmp |
fs.default.name | hdfs://m1:9000 |
dfs.permissions | false |
fs.file.impl | org.apache.hadoop.fs.LocalFileSystem |
- hdfs-site.xml 配置hdfs相關內容,包括備用節點,name node , data node的存儲文件的位置
key | value |
---|---|
dfs.namenode.secondary.http-address | m1:50090 |
dfs.replication | 1 |
dfs.namenode.name.dir | file:/usr/hadoop/tmp/dfs/name |
dfs.datanode.data.dir | file:/usr/hadoop/tmp/dfs/data |
dfs.permissions | false |
- mapred-site.xml 配置mapreduce相關的東西
key | value |
---|---|
mapreduce.framework.name | yarn |
mapreduce.jobhistory.address | m1:10020 |
mapreduce.jobhistory.webapp.address | m1:19888 |
- yarn-site.xml 配置yarn相關的東西
key | value |
---|---|
yarn.resourcemanager.hostname | m1 |
yarn.nodemanager.aux-services | mapreduce_shuffle |
配置hadoop環境變量(x3)
vim /etc/profile
#hadoop
export HADOOP_HOME=/user/hadoop
export PATH=$PATH:$HADOOP_HOME/sbin
export PATH=$PATH:$HADOOP_HOME/bin
使立即生效
source /etc/profile
到此,主節點已配置完全,從節點可參照主節點進行配置,下麵這個可以將主節點屬於hadoop的配置參數直接拷貝到從節點
scp -r /usr/hadoop/etc/hadoop/ root@s2:/usr/hadoop/etc
scp -r /usr/hadoop/etc/hadoop/ root@s3:/usr/hadoop/etc
hadoop初始化 (m1節點)
bin/hdfs namenode -format
啟動hadoop集群(m1節點)
start-all.sh
最後更新:2017-08-13 22:47:09