(1) 安裝vimhtml
yum install vimjava
(2) 更改hostname爲hadoop_masternode
sudo vim /etc/hostnamelinux
(3) 關閉防火牆web
sudo ufw disableubuntu
(4) 安裝rz sz用於服務器文件與本地文件交互vim
apt-get install lrzszbash
(5) 安裝 vm tools服務器
(6) 將 tar.gz 包複製到其餘目錄,解壓後,網絡
1 Java下載的jdk包放到root用戶下的 /usr/local/java下
解壓包tar xvf jdk1.8.*
2 配置JAVA環境變量
(1) Root用戶權限下,在 /etc/profile.d 文件夾下建立java.sh
(2) 在java.sh裏寫入如下內容,保存後用 source java.sh 刷新配置文件是配置文件生效:
注:不少網上資料是說在 /etc/profile 文件裏直接加如下設置,但比較新的Ubuntu版本里,系統會先讀 profile 文件,而後由 profile 文件遍歷 profile.d 文件夾下全部 *.sh 文件, 這樣就比把全部配置都寫在一個 profile 文件裏容易管理。
(3) 上一步是在root 下配置,接下來在 Hadoop 用戶下將環境變量寫入 ~/.bashrc 裏,一樣,保存後用 source ~/.bashrc刷新。
注:每一個用戶根目錄有獨立的 ~/.bashrc 文件
若是還不成功,能夠root帳號下試試如下命令:
執行賦權語句便可:
chmod 777 /etc/java/jdk1.8
備註:chmod是賦權限命令,777表示賦值全部權限對本用戶,本組用戶、其餘用戶。
設置完成後,能夠用 java –version 測試是否成功。
sudo apt-get install openssh-server
測試:ssh localhost
此時,要輸入密碼,還要按一次確認 yes
(1),避免輸入密碼
ssh-keygen -t rsa
一路回車,最後在 home/hadoop/.ssh 下有兩個文件
運行:cat id_rsa.pub >> authorized_keys
這樣就能夠避免輸入密碼了。等克隆玩從機,使用一樣的操做,而且將主機的 id_rsa.pub 追加到從機的 authorized_keys 中,這樣,主機能夠無密碼訪問從機了。
(2) 避免須要輸入yes
在文件 /etc/ssh/ssh_config 添加如下兩行
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
sudo apt-get install rsync
由於以前更新了Ubuntu系統,已是最新的了
修改網卡
原先的ip信息
查看host信息
鍵入命令:
vi hosts
註釋掉 127.0.1.1 ubuntu
新增一行 10.0.0.81 ubuntu
(這裏必須改,不然後面會遇到鏈接拒絕問題)
添加一個hadoop組
sudo addgroup hadoop
將當前用戶hadoop 加入到Hadoop組
sudo usermod -a -G hadoop hadoop
將hadoop組加入到sudoer
sudo vi etc/sudoers
在root ALL=(ALL) ALL後 hadoop ALL=(ALL) ALL
(1) 修改 ~/.bashrc 文件
添加如下這些行到 ~/.bashrc 文件的末尾,內容以下所示:
#Set HADOOP_HOME
export HADOOP_HOME=/usr/local/hadoop
# Add bin/ directory of Hadoop to PATH
export PATH=$PATH:$HADOOP_HOME/bin
(2) 配置關聯HDFS
設置 JAVA_HOME 在文件 /usr/local/hadoop/etc/hadoop/hadoop-env.sh 中,使用如下行代替,即寫上完整的 Java 安裝路徑。以下所示:
(3) core-site.xml 配置
在 $HADOOP_HOME/etc/hadoop/core-site.xml 文件中還有兩個參數須要設置:
1. 'hadoop.tmp.dir' - 用於指定目錄讓 Hadoop 來存儲其數據文件。
2. 'fs.default.name' - 指定默認的文件系統
爲了設置兩個參數,打開文件 core-site.xml
<configuration> <property> <name>hadoop.tmp.dir</name> <value>/usr/local/hadoop/dfs/tmp</value> <description>Parent directory for other temporary directories.</description> </property> <property> <name>fs.defaultFS </name> <value>hdfs://master:9000</value> <description>The name of the default file system. </description> </property> </configuration>
如今建立一個目錄,如上面配置 core-site.xml 中使用的目錄:/usr/local/hadoop/dfs/tmp
sudo mkdir -p /usr/local/hadoop/dfs/tmp
授予權限目錄 /app/hadoop/tmp,執行以下的命令:
sudo chown -R hadoop:hadoop /usr/local/hadoop/dfs/tmp
sudo chmod 750 /usr/local/hadoop/dfs/tmp
(4) Map Reduce 配置
在設置這個配置以前, 咱們須要設置 HADOOP_HOME 的路徑,執行如下命令:
sudo vi /etc/profile.d/hadoop.sh
而後輸入如下一行,
export HADOOP_HOME=/usr/local/hadoop
再執行如下命令:
hadoop@ubuntu: sudo chmod +x /etc/profile.d/hadoop.sh
退出命令行終端再次進入,並輸入如下命令:echo $HADOOP_HOME 以驗證 hadoop 的路徑:
hadoop@ubuntu: echo $HADOOP_HOME
/usr/local/hadoop
如今複製文件,執行如下命令:
sudo cp $HADOOP_HOME/etc/hadoop/mapred-site.xml.template $HADOOP_HOME/etc/hadoop/mapred-site.xml
使用vi 打開文件 mapred-site.xml
sudo vi $HADOOP_HOME/etc/hadoop/mapred-site.xml
添加如下的設置內容到標籤<configuration> 和 </configuration> 中,以下圖所示:
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>master:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>master:19888</value> </property> </configuration>
hdfs-site.xml配置
打開 $HADOOP_HOME/etc/hadoop/hdfs-site.xml 文件以下:
sudo vi $HADOOP_HOME/etc/hadoop/hdfs-site.xml
添加如下的設置內容到標籤<configuration> 和 </configuration> 中,以下圖所示:
<configuration> <property> <name>dfs.namenode.name.dir</name> <value>/usr/local/hadoop/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/usr/local/hadoop/dfs/data</value> </property> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>master:9001</value> </property> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> </configuration>
建立以上配置指定的目錄並受權目錄給用戶,使用如下命令:
sudo mkdir -p /usr/local/hadoop/dfs/name sudo mkdir -p /usr/local/hadoop/dfs/data sudo chown -R hadoop:hadoop /usr/local/hadoop/dfs/name sudo chown -R hadoop:hadoop /usr/local/hadoop/dfs/data sudo chmod 750 /usr/local/hadoop/dfs/name sudo chmod 750 /usr/local/hadoop/dfs/data
(5) 格式化HDFS
在第一使用 Hadoop 以前,須要先格式化 HDFS,使用下面的命令
hadoop namenode -format
輸入:y,繼往下..
(6) 啓動/中止 Hadoop 的單節點集羣
$HADOOP_HOME/sbin/start-dfs.sh
$HADOOP_HOME/sbin/start-yarn.sh
如今使用 'jps' 工具/命令, 驗證是否全部 Hadoop 相關的進程正在運行。
若是 Hadoop 成功啓動,那麼 jps 輸出應顯示: NameNode, NodeManager, ResourceManager, SecondaryNameNode, DataNode.
中止 Hadoop 的單節點集羣
$HADOOP_HOME/sbin/stop-dfs.sh $HADOOP_HOME/sbin/stop-yarn.sh
或
$HADOOP_HOME/sbin/stop-all.sh
上述步驟只是安裝測試虛擬機使用,實際生產環境中,這幾個配置文件都還要根據實際需求作不少調優設置。特別是cpu,內存,日誌路徑等等都須要調
前三步是single模式的環境,接下來是作徹底分佈式環境,添加從機。
*本來是直接在複製粘貼兩份虛擬機做爲slave1和slave2,但後來發現不能上網,會出現連不上網絡的問題,用克隆出來的虛擬機能夠避免這個問題。
VMware ==》 虛擬機 ==》 管理 ==》 克隆
克隆出 Hadoop_slave1 Hadoop_slave2
修改 etc/hostname ,分別將ubuntu 改成 master , slave1, slave2
*千萬別設置成有下劃線格式的如: hadoop_master ,會致使啓動namenode時出錯。
經過命令 ifconfig 查看三個虛擬機的ip4 地址
而後在三個虛擬機裏都添加三行ip hostname映射,以下:
添加完後,三個虛擬機就能夠互相用hostname Ping通了,
master機ping slave2結果:
無密碼登錄,效果也就是在master上經過 ssh slave1或 ssh slave2 就能夠登錄到對方計算機上。並且不用輸入密碼。
3臺虛擬機上,使用 ssh-keygen -t rsa 一路按回車就好了。
剛纔都做甚了呢?主要是設置ssh的密鑰和密鑰的存放路徑。 路徑爲~/.ssh下。
打開~/.ssh 下面有三個文件,輸入命令 ls -la
authorized_keys,已認證的keys
id_rsa,私鑰
id_rsa.pub,公鑰 三個文件。
下面就是關鍵的地方了,(咱們要作ssh認證。進行下面操做前,能夠先搜關於認證和加密區別以及各自的過程。)
(1)在master上將公鑰放到authorized_keys 裏。命令:sudo cat id_rsa.pub >> authorized_keys,在slave機上也一樣操做,這一步使本機能夠無密碼操做。
(2) 將master上的authorized_keys放到其餘linux的~/.ssh目錄下。
sudo scp authorized_keys hadoop@slave1:~/.ssh sudo scp authorized_keys hadoop@slave2:~/.ssh
sudo scp authorized_keys 遠程主機用戶名@遠程主機名或ip:存放路徑。
slave機上,一個master的,一個本機的
master機上,只有master的
(3)修改authorized_keys權限,命令:chmod 644 authorized_keys
(4)測試是否成功
ssh slave1輸入用戶名密碼,而後重啓master虛擬機,再次ssh slave1不用密碼,直接進入系統。這就表示成功了。
配置/usr/local/hadoop/etc/hadoop目錄下的slaves
刪除默認的localhost,增長2從節點,
192.168.159.132
192.168.159.133
http://192.168.159.129:50070/dfshealth.html#tab-datanode
http://192.168.159.130:8088/cluster/scheduler
集羣上個服務器時間上可能不一樣步,這會致使不少麻煩事,要同步集羣時間。
(未裝成功,先跳過,可是Hbase對時間同步有要求)
(1)安裝ntpdate工具
sudo apt-get install ntpdate
(2)設置系統時間與網絡時間同步
sudo ntpdate cn.pool.ntp.org
(3)將系統時間寫入硬件時間
sudo hwclock --systohc
安裝lrzsz,使用rz或sz命令能夠方便地上傳和下載文件
下載地址:
http://pan.baidu.com/s/1qWyoFhU?errno=0&errmsg=Auth%20Login%20Sucess&&bduss=&ssnerror=0
執行:
解壓後
sudo mv zookeeper-3.4.5.tar.gz /usr/local/zookeeper
cd /usr/local/zookeeper/conf
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
修改:dataDir=/usr/local/zookeeper/data
添加:
server.0=master:2888:3888
server.1=slave1:2888:3888
server.2=slave2:2888:3888
建立/usr/local/zookeeper/data 文件夾,並建立myid文件
並設置第一臺server爲0
echo 0 > myid
複製zookeeper目錄至其他兩臺服務器中:
scp -r /usr/local/zookeeper slave1:/usr/local/
scp –r /usr/local/zookeeper slave2:/usr/local/
scp –r /usr/local/zookeeper slave3:/usr/local/
若是沒權限,就先複製到 /tmp 文件夾,而後在 mv 到/usr/local
或者修改 /usr/local 權限,添加寫權限
複製環境變量配置文件至其他兩臺服務器中:
scp /etc/profile.d/zookeeper.sh hadoop@slave1:/etc
scp /etc/profile.d/zookeeper.sh hadoop@slave2:/etc
scp /etc/profile.d/zookeeper.sh hadoop@slave3:/etc
在其他幾臺服務器中修改myid文件:設置爲1和2,3;
啓動ZooKeeper,分別在每一個節點中執行命令:zkServer.sh start
查看狀態 /usr/local/zookeeper/bin/zkServer.sh status
(11)可使用如下命令來鏈接一個zk集羣:
/usr/local/zookeeper/bin/zkCli.sh -server master:2181,slave1:2181,slave2:2181,slave3:2181