一、Java環境搭建
1.1、下載JDK(操作系統為ubuntu16.04 ,這里使用1.8.0_101版本,jdk-8u101-linux-x64.tar.gz)
下載地址 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
1.2、解壓jdk文件至/usr/lib/jvm目錄
sudo tar zxvf jdk-8u101-linux-x64.tar.gz -C /usr/lib/jvm
1.3、設置環境變量
打開profile文件
sudo vim /etc/profile
插入java環境配置節
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_101 export JAVA_BIN=$JAVA_HOME/bin export JAVA_LIB=$JAVA_HOME/lib export CLASSPATH=.:$JAVA_LIB/tools.jar:$JAVA_LIB/dt.jar
打開environment 文件
sudo vim /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games“
在 environment中修改PATH,追加JDK路徑,添加CLASSPATH與JAVA_HOME后如下:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/jvm/jdk1.8.0_101/bin" CLASSPATH="/usr/lib/jvm/jdk1.8.0_101/lib" JAVA_HOME="/usr/lib/jvm/jdk1.8.0_101"
配置生效
source /etc/environment
1.4、告訴ubuntu系統,我們使用的sun的JDK,而非OpenJDK
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.8.0_101/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.8.0_101/bin/javac 300
sudo update-alternatives --config java
最后一步沒有顯示有多個jdk ,則配置到此結束。如果有顯示則如下:
sudo update-alternatives --config java 有 2 個候選項可用於替換 java (提供 /usr/bin/java)。 選擇 路徑 優先級 狀態------------------------------------------------------------* 0 /usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 自動模式 1
/usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 手動模式 2 /usr/lib/jvm/jdk1.8.0_05/bin/java 300 手動模式要維持當前值[*]請按回車鍵,或者鍵入選擇的編號:?
想用那個輸那個號碼,如上所示,這樣就設置好了要使用的java了。
1.5、驗證java環境是否配置成功
java -version
顯示如下信息,配置成功。
abc@ubuntu:/usr/local/hadoop$ java -version java version "1.8.0_101" Java(TM) SE Runtime Environment (build 1.8.0_101-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)
二、安裝SSH
sudo apt-get install openssh-server
啟動ssh
sudo /etc/init.d/ssh start
查看ssh服務是否啟動,如果有顯示相關ssh字樣則表示成功
ps -ef|grep ssh
root 913 1 0 09:11 ? 00:00:00 /usr/sbin/sshd -D
abc 8197 3837 0 14:57 pts/6 00:00:00 grep --color=auto ssh
設置免密碼登錄
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa $ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys $ export HADOOP\_PREFIX=/usr/local/hadoop
ssh localhost
如圖設置成功。
修改網卡
注釋掉127.0.1.1 ubuntu,添加新的映射127.0.0.1 ubuntu。這里必須修改,否則后面會遇到連接拒絕等問題。
abc@ubuntu:~$ sudo vim /etc/hosts

三、安裝hadoop
3.1、下載hadoop-2.7.3.tar.gz,解壓到/usr/local (單機模式搭建)
sudo tar zxvf hadoop-2.7.3.tar.gz -C /usr/local
給/usr/local/hadoop設置訪問權限
sudo chmod 777 /usr/local/hadoop
3.2、配置.bashrc文件
sudo vim ~/.bashrc
該命令會打開該文件的編輯窗口,在文件末尾追加下面內容,然后保存,關閉編輯窗口。
#HADOOP VARIABLES START export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_101 export HADOOP_INSTALL=/usr/local/hadoop export PATH=$PATH:$HADOOP_INSTALL/bin export PATH=$PATH:$HADOOP_INSTALL/sbin export HADOOP_MAPRED_HOME=$HADOOP_INSTALL export HADOOP_COMMON_HOME=$HADOOP_INSTALL export HADOOP_HDFS_HOME=$HADOOP_INSTALL export YARN_HOME=$HADOOP_INSTALL export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib" #HADOOP VARIABLES END
執行下面命令,使添加的環境變量生效:
source ~/.bashrc
3.3、hadoop配置 (偽分布模式搭建)
配置hadoop-env.sh
sudo vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh
# The java implementation to use. export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_101 export HADOOP=/usr/local/hadoop export PATH=$PATH:/usr/local/hadoop/bin
配置yarn-env.sh
sudo vim /usr/local/hadoop/etc/hadoop/yarn-env.sh
# export JAVA_HOME=/home/y/libexec/jdk1.6.0/ export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_101
配置core-site.xml,在home目錄地下創建 /home/abc/hadoop_tmp目錄
<configuration> <!-- 指定HDFS老大(namenode)的通信地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> <!-- 指定hadoop運行時產生文件的存儲目錄 --> <property> <name>hadoop.tmp.dir</name> <value>/home/abc/hadoop_tmp</value> </property> </configuration>
配置hdfs-site.xml
<configuration> <!-- 指定HDFS副本的數量 --> <property> <name>dfs.replication</name> <value>1</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>127.0.0.1:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>127.0.0.1:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>127.0.0.1:8031</value>
</property>
</configuration>
3.4、常用命令
格式化namenode
hdfs namenode -format
啟動集群
start-dfs.sh
這時候單節點偽分布就已經安裝成功了,輸入下面:http://localhost:50070/

輸入 http://localhost:8088/

四、wordcount案例運行
查看hdfs底下包含的文件目錄
hadoop dfs -ls /
hdfs創建一個文件目錄
hdfs dfs -mkdir /input
其他常用命令
hadoop fs -mkdir /tmp/input 在HDFS上新建文件夾
hadoop fs -put input1.txt /tmp/input 把本地文件input1.txt傳到HDFS的/tmp/input目錄下
hadoop fs -get input1.txt /tmp/input/input1.txt 把HDFS文件拉到本地
hadoop fs -ls /tmp/output 列出HDFS的某目錄
hadoop fs -cat /tmp/ouput/output1.txt 查看HDFS上的文件
hadoop fs -rmr /home/less/hadoop/tmp/output 刪除HDFS上的目錄
hadoop dfsadmin -report 查看HDFS狀態,比如有哪些datanode,每個datanode的情況
hadoop dfsadmin -safemode leave 離開安全模式
hadoop dfsadmin -safemode enter 進入安全模式
新建input文件夾,上傳readme.txt至input,執行命令
abc@ubuntu:/usr/local/hadoop$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /tmp/input /output1

執行成功后output1 目錄底下會生成兩個文件 _SUCCESS 成功標志的文件,里面沒有內容。 一個是 part-r-00000 ,通過hadoop fs -cat /output1/part-r-00000進行查看執行的結果。
