Hadoop系列之hdfs(分佈式文件系統)安裝配置
環境介紹:
ip 節點
192.168.3.10 hdfs-master
192.168.3.11 hdfs-slave1
192.168.3.12 hdfs-slave2
1.在所有機器添加hosts
192.168.3.10 hdfs-master
192.168.3.11 hdfs-slave1
192.168.3.12 hdfs-slave2
#說明
//主機名不能帶有下劃線及一些特殊符號,不然將會有很多錯誤。
2.配置ssh無密碼登錄機器
在192.168.3.10操作如下:
/usr/bin/ssh-keygen -t rsa
ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.3.10 #輸入yes及輸入192.168.3.10的root密碼
ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.3.11 #輸入yes及輸入192.168.3.11的root密碼
ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.3.12 #輸入yes及輸入192.168.3.12的root密碼
ssh 192.168.3.10 #測試進入192.168.3.10是否不需要輸入密碼進去,如果不需要則表示無密碼登陸成功.
ssh 192.168.3.11 #測試進入192.168.3.11是否不需要輸入密碼進去,如果不需要則表示無密碼登陸成功.
ssh 192.168.3.12 #測試進入192.168.3.12是否不需要輸入密碼進去,如果不需要則表示無密碼登陸成功.
3.在所有機器安裝jdk軟件及配置jdk環境
cd /root/soft
rpm -ihv jdk-7u51-linux-x64.rpm
3.1打開/etc/profile文件增加下面內容
export JAVA_HOME=/usr/java/default
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
3.2刷新環境變量
source /etc/profile
java -version #查看是否安裝成功
4.在所有機器安裝hadoop軟件
4.1hadoop安裝
mv /root/soft/hadoop-2.4.0.tar.gz /usr/local/
cd /usr/local/
tar zxvf hadoop-2.4.0.tar.gz
mv hadoop-2.4.0 hadoop
4.2打開/etc/profile文件增加下面內容環境變量
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
4.3刷新環境變量
source /etc/profile
4.4配置文件目錄創建
mkdir -p /data/hadoop/{tmp,name,data,var}
5.在192.168.3.10配置hadoop
5.1配置hadoop-env.sh
vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh
修改export JAVA_HOME=${JAVA_HOME} 爲export JAVA_HOME=/usr/java/default
5.2配置slaves文件
vim /usr/local/hadoop/etc/hadoop/slaves
#添加下面內容
hdfs-slave1
hdfs-slave2
5.3配置core-site.xml文件
vim /usr/local/hadoop/etc/hadoop/core-site.xml
#添加下面內容
<configuration> <property> <name>fs.default.name</name> <value>hdfs://hdfs-master:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/data/hadoop/tmp</value> </property> </configuration>
#說明
//fs.default.name是NameNode的URI。hdfs://主機名:端口/
//hadoop.tmp.dir:hadoop的默認臨時路徑,這個最好配置,如果在新增節點或者其他情況下莫名其妙的DataNode啓動不了,就刪除此文件中的tmp目錄即可。
//不過如果刪除了NameNode機器的此目錄,那麼就需要重新執行NameNode格式化的命令。
5.4配置hdfs-site.xml文件
vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml
#添加下面內容
<configuration> <property> <name>dfs.name.dir</name> <value>/data/hadoop/name</value> <description> </description> </property> <property> <name>dfs.data.dir</name> <value>/data/hadoop/data</value> <description> </description> </property> <property> <name>dfs.replication</name> <value>2</value> </property> </configuration>
#說明
//dfs.name.dir是NameNode持久存儲名字空間及事務日誌的本地文件系統路徑。 當這個值是一個逗號分割的目錄列表時,nametable數據將會被複制到所有目錄中做冗餘備份。
//dfs.replication是數據需要備份的數量,默認是3,如果此數大於集羣的機器數會出錯.(我這裏只有2個datanode所以修改爲2)
5.5配置mapred-site.xml文件
cp /usr/local/hadoop/etc/hadoop/mapred-site.xml.template /usr/local/hadoop/etc/hadoop/mapred-site.xml
vim /usr/local/hadoop/etc/hadoop/mapred-site.xml
#添加下面內容
<configuration> <property> <name>mapred.job.tracker</name> <value>hdfs-master:9001</value> </property> <property> <name>mapred.local.dir</name> <value>/data/hadoop/var</value> </property> </configuration>
#說明
//mapred.job.tracker是JobTracker的主機(或者IP)和端口。主機:端口。其中/data/hadoop/var目錄需要提前創建,並且注意用chown -R 命令來修改目錄權限。
5.6配置yarn-site.xml文件
vim /usr/local/hadoop/etc/hadoop/yarn-site.xml
#添加下面內容
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>
5.7同步hadoop配置文件到hdfs-slave1和hdfs-slave2
scp -r /usr/local/hadoop [email protected]:/usr/local/
scp -r /usr/local/hadoop [email protected]:/usr/local/
6.格式化分佈式文件系統
#在192.168.3.10格式化hadoop
hdfs namenode -format
7.啓動Hadoop集羣
#在192.168.3.10啓動hadoop
/usr/local/hadoop/sbin/start-all.sh
8.查看Master和slave進程狀態
#在192.168.3.10查看Java進程情況:
[root@hdfs-master hadoop]# jps
8030 NameNode
8213 SecondaryNameNode
8615 Jps
8356 ResourceManager
#在其它幾臺DataNode從節點上,查看Java進程情況:
[root@hdfs-slave1 hadoop]# jps
2821 Jps
2702 NodeManager
2586 DataNode
注:各節點上進程都在的話,說明集羣部署成功。
9.簡單驗證hdfs
#在192.168.3.10測試hdfs分佈式存儲:
//建立目錄
hdfs dfs -mkdir /test
hdfs dfs -mkdir /test/01
//査看目錄
[root@hdfs-master sbin]# hdfs dfs -ls /
drwxr-xr-x - root supergroup 0 2014-09-12 16:49 /test
//査看目錄包括子目錄
[root@hdfs-master sbin]# hdfs dfs -ls -R /
drwxr-xr-x - root supergroup 0 2014-09-12 17:01 /test
drwxr-xr-x - root supergroup 0 2014-09-12 17:01 /test/01
//添加文件
hdfs dfs -put /root/soft/aa.txt /test
[root@hdfs-master sbin]# hdfs dfs -ls -R /test
drwxr-xr-x - root supergroup 0 2014-09-12 17:01 /test/01
-rw-r--r-- 2 root supergroup 4 2014-09-12 17:07 /test/aa.txt
//獲取文件
hdfs dfs -get /test/aa.txt /tmp/
[root@hdfs-master sbin]# ls /tmp/aa.txt
/tmp/aa.txt
//刪除文件
hdfs dfs -rm /test/aa.txt
[root@hdfs-master sbin]# hdfs dfs -ls -R /test
drwxr-xr-x - root supergroup 0 2014-09-12 17:01 /test/01
//刪除目錄
hdfs dfs -rm -r /test/01
[root@hdfs-master sbin]# hdfs dfs -ls -R /
drwxr-xr-x - root supergroup 0 2014-09-12 17:13 /test
//修改文件所有者
hdfs dfs -chown -R root /test
//修改權限
hdfs dfs -chmod -R 700 /test
//通過網頁查看整個集羣的狀態
http://192.168.3.10:50070
//通過命令查看整個集羣的狀態
10.關閉hadoop集羣
#在192.168.3.10關閉hadoop
/usr/local/hadoop/sbin/stop-all.sh
注:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 這個警告一直沒有解決,不過hdfs現在可以正常上傳和下載,如果知道怎麼解決的,可以跟我留言哈。