先給你們看看配置好的集羣截圖:java
注意(default是docker的,你們不用管,下面四臺纔是,其中Ubuntu_0是master,Ubuntu_1,2,3是slave節點)node
一.新建虛擬機,配置基礎java環境,配置網絡訪問linux
下載Ubuntu15.04,打開VirtualBox,新建Ubuntu虛擬機,用戶名linux1,不截圖了,內存選1G就夠了web
接下來,下載並安裝JDK:docker
下載:去官網下載對應版本的JDK,我這裏是jdk-8u60-linux-x64.tar.gzshell
新建安裝目錄:apache
sudo mkdir /usr/local/java
解壓JDK:編程
sudo tar xvf ~/Downloads/jdk-8u60-linux-x64.tar.gz -C /usr/local/java
設置全局環境變量:ubuntu
sudo gedit ~/.bashrc
文件末尾添加:windows
export JAVA_HOME=/usr/local/java/jdk1.8.0_60 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH
驗證:新開終端,輸入java驗證(當前終端內不生效)
接下來,配置網絡(爲啥要配置:由於你搭的是集羣,用的是集羣的服務,確定想除了集羣之外的機器能訪問,而不是像網上那些人省事,直接在master上安裝Eclipse,進行開發,這樣是不對的,舉個例子,個人宿主機是Windows,用VirtualBox搭的集羣,我想在windows上使用Eclipse進行編程,使用集羣的Hadoop服務,我可不想在master上安裝Eclipse開發,雖然會省掉很多錯誤解決的麻煩事,可是是不對的!服務就是要遠程調用的)
設置第一個網卡:NAT可使虛擬機使用宿主機的IP上網,這樣,你的虛擬機就能夠缺什麼軟件就安什麼了,方便!
接下來設置第二個網卡:這使得宿主機可以ping通虛擬機
二.克隆虛擬機
選中第一臺ubuntu_0(必定要關閉它),你會發現右側的綿羊(你應該知道爲啥是綿羊吧)圖標是能夠點擊的,我如今用着集羣呢,懶得關,索性找張別人的圖,點開後的樣子是這樣的:
注意要重置網卡設置,命名隨便了。我一共clone了3個虛擬機,名字分別是Ubuntu_1,Ubuntu_2,Ubuntu_3,「徹底複製」,一直點肯定。
三.設置虛擬機靜態IP
爲啥要設置呢?虛擬機默認是DHCP的,若是你搭建Hadoop集羣,不能老是讓Hadoop集羣所在的機器啓動一次就換一次IP吧,那麻煩了。因此,設置靜態IP頗有必要。
我對網絡這塊迷糊,我就說個人方法了。
下面的操做適用於全部4個虛擬機。
sudo gedit /etc/network/interfaces
在
auto lo iface lo inet loopback
下加入:
auto eth1 #這是第二塊網卡 iface eth1 inet static
address 192.168.99.101 #在終端輸入ifconfig查看下,而後每臺機器這個地址最後一段(共四段)自增1(這四臺機器是101(用做master),100,102,103(這三個用做slave)) netmask 255.255.255.0 #ifconfig gateway 10.0.2.2 # route查看,第一行就是
靜態IP弄好了,接下來,就是設置主機名了。
命令:
sudo gedit /etc/hostname
命令:
sudo gedit /etc/hosts
修改爲須要的主機名(我這裏是linux0-cloud,linux1-cloud,linux2-cloud,linux3-cloud),重啓?等下,還沒完事呢。
接下來修改hosts文件:
爲何要設置hosts,hosts是幹嗎的,個人理解是,根據主機名找IP,因此呢,
修改全部虛擬機的hosts文件, 命令:sudo gedit /etc/hosts。設置爲如圖所示:
以上操做四臺機器必須都應用!好了,重啓吧!
四.安裝SSH,使得master能夠無密碼登陸全部slave節點(不解釋緣由)
全部主機安裝ssh
命令:
sudo apt-get install ssh
在master節點上,
命令:
ssh-keygen -t rsa -P "" cat .ssh/id_rsa.pub >>.ssh/authorized_keys,
使用ssh localhost查看是否可以無密碼登陸
下面會進行master在無密碼狀況下ssh鏈接到slave節點
其餘全部節點執行命令:
ssh-keygen -t rsa -P ""
接下來,只要將master的公鑰放到其它slave節點便可使用無密碼登陸ssh節點
將master .ssh/authorized_keys使用scp命令拷貝到其它slave節點上,作到master訪問slave不須要密碼(若是slave訪問master,那麼過程相反)
在master上執行命令:
scp .ssh/authorized_keys linux1@linux1-cloud:~/.ssh/authorized_keys scp .ssh/authorized_keys linux1@linux2-cloud:~/.ssh/authorized_keys scp .ssh/authorized_keys linux1@linux3-cloud:~/.ssh/authorized_keys
五.安裝Hadoop2.7.1
下面先對master節點進行配置,而後將配置好的文件複製到其他機器上
在master上
新建目錄,命令:mkdir ~/hadoop
解壓hadoop,命令:tar xvf ~/Downloads/hadoop-2.7.1.tar.gz -C ~/hadoop
新建hdfs文件夾(不能使用sudo建立,權限問題):
mkdir ~/dfs mkdir ~/dfs/name mkdir ~/dfs/data mkdir ~/tmp
修改hadoop/hadoop-2.7.1/etc/hadoop/hadoop-env.sh配置文件 ,
export JAVA_HOME=/usr/local/java/jdk1.8.0_60
修改/etc/hadoop/slaves文件:
修改/etc/hadoop/core-site.xml文件,
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://linux0-cloud:8020</value> </property> <property> <name>io.file.buffer.size</name> <value>131072</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/linux1/tmp</value> <description>Abase for other temporary directories.</description> </property> </configuration>
修改/etc/hadoop/hdfs-site.xml文件,
<configuration> <property> <name>dfs.namenode.secondary.http-address</name> <value>linux0-cloud:9001</value> <description> 這裏使namenode同時做爲secondary namenode,實際應該設置其餘機器的好比linux1-cloud:9001 你能夠訪問linux0-cloud:50070也能夠訪問linux0-cloud:9001(或者其餘好比:linux1-cloud:8001)查看hadoop概況(namenode們狀態是同步的) </description> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/home/linux1/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/home/linux1/dfs/data</value> </property> <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> </configuration>
修改etc/hadoop/mapred-site.xml,
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>linux0-cloud:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>linux0-cloud:19888</value> </property> </configuration>
修改yarn-site.xml文件,
<configuration> <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.address</name> <value>linux0-cloud:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>linux0-cloud:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>linux0-cloud:8031</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>linux0-cloud:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>linux0-cloud:8088</value> </property> </configuration>
下面將hadoop複製到其它slave節點:
命令:
sudo scp -r ~/hadoop linux1@linux1-cloud:~/ sudo scp -r ~/hadoop linux1@linux2-cloud:~/ sudo scp -r ~/hadoop linux1@linux3-cloud:~/
設置全部節點環境變量:
gedit ~/.bashrc
添加:
export HADOOP_HOME=/home/linux1/hadoop/hadoop-2.7.1 export HADOOP_MAPRED_HOME=$HADOOP_HOME export HADOOP_COMMON_HOME=$HADOOP_HOME export HADOOP_HDFS_HOME=$HADOOP_HOME export YARN_HOME=$HADOOP_HOME export HADOOP_YARN_HOME=$HADOOP_HOME export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
應用環境變量:
source ~/.bashrc
六.啓動Hadoop
首先格式化:
hdfs namenode -format
啓動hdfs:
start-dfs.sh
啓動yarn:
start-yarn.sh
你也能夠輸入192.168.99.101:50070訪問,不給大家截圖,宿主機瀏覽器有很多標籤