hadoop--01(hadoop叢集搭建)
1.什麼是HADOOP?
HADOOP是apache旗下的一套開源軟體平臺,HADOOP提供的功能:利用伺服器叢集,根據使用者的自定義業務邏輯,對海量資料進行分散式處理
- HADOOP的核心元件有
- HDFS(分散式檔案系統)
- YARN(運算資源排程系統)
- MAPREDUCE(分散式運算程式設計框架)
- 廣義上來說,HADOOP通常是指一個更廣泛的概念——HADOOP生態圈
2.HADOOP在大資料、雲端計算中的位置和關係
雲端計算是分散式計算、平行計算、網格計算、多核計算、網路儲存、虛擬化、負載均衡等傳統計算機技術和網際網路技術融合發展的產物。藉助IaaS(基礎設施即服務)、PaaS(平臺即服務)、SaaS(軟體即服務)等業務模式,把強大的計算能力提供給終端使用者。現階段,雲端計算的兩大底層支撐技術
3.重點組建
HDFS:分散式檔案系統
MAPREDUCE:分散式運算程式開發框架
HIVE:基於大資料技術(檔案系統+運算框架)的SQL資料倉庫工具
HBASE:基於HADOOP的分散式海量資料庫
ZOOKEEPER:分散式協調服務基礎元件
Mahout:基於mapreduce/spark/flink等分散式運算框架的機器學習演算法庫
Oozie:工作流排程框架
Sqoop:資料匯入匯出工具
Flume:日誌資料採集框架
4.hadoop叢集搭建
三臺虛擬機器:系統centos6.5 hadoop2.6.4 jdk1.7
1.準備Linux環境
1.0先將虛擬機器的網路模式選為NAT
1.1修改主機名:vi /etc/sysconfig/network
1.2修改IP:vim /etc/sysconfig/network-scripts/ifcfg-eth0 不修改也行
1.3修改主機名和IP的對映關係:vim /etc/hosts
192.168.25.139 hadoop1
192.168.25.140 hadoop2
192.168.25.141 hadoop3
1.4關閉防火牆
#檢視防火牆狀態
service iptables status
#關閉防火牆
service iptables stop
#檢視防火牆開機啟動狀態
chkconfig iptables --list
#關閉防火牆開機啟動
chkconfig iptables off
1.5 新增普通使用者hadoop
useradd hadoop
#為storm使用者新增密碼:
echo 123456| passwd --stdin hadoop
#將hadoop新增到sudoers,這是重新建立一個使用者組,他有著自己的home/ hadoop目錄
echo "hadoop ALL = (root) NOPASSWD:ALL" | tee /etc/sudoers.d/ hadoop
chmod 0440 /etc/sudoers.d/ hadoop
#修改配置檔案sudo vim /etc/sudoers
root ALL=(ALL) ALL
hadoop ALL=(ALL) ALL
給hadoop使用者新增執行的許可權然後強制儲存
2.安裝jdk,
JAVA_HOME=/usr/local/jdk1.7.0_71
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
這些處理好了開始安裝hadoop
1.上傳編譯好的hadoop壓縮包,並且解壓
tar -zxvf cenos-6.5-hadoop-2.6.4.tar.gz -C apps/
配置配置檔案hadoop-env.sh 主要配置環境變數
export JAVA_HOME=/usr/local/jdk1.7.0_71
配置配置檔案 core-site.xml 主要指定hadoop的檔案系統用哪個(fdfs),指定namenode是誰,埠是多少,配置叢集裡面每個程序工作的資料目錄
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hdpdata</value>
</property>
</configuration>
配置hdfs-site.xml 配置hdfs的副本的數量
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/hdfs/data</value>
</property>
</configuration>
配置mapred-site.xml.template 並改名字為mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
配置yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop1</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
2.配置hadoop環境變數:
export HADOOP_HOME=/home/hadoop/apps/hadoop-2.6.4
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_PREFIX}/lib/native
export HADOOP_OPTS=-Djava.library.path=$HADOOP_PREFIX/lib
3.分發apps資料夾到其他機器,配置環境變數
4.格式化namenode(是對namenode進行初始化):hdfs namenode -format (hadoop namenode -format)
5. 啟動hadoop
先啟動HDFS
sbin/start-dfs.sh
檢視datanode的啟動情況:
這裡注意多次格式化namenode後可能出現datanode起不來的情況,把配置檔案中dfs.datanode.data.dir在本地系統的路徑下的current/VERSION中的clusterID改為與namenode一樣。重啟即可!這裡就把dfs檔案刪掉就好了.(問題解決是hdfs配置檔案的問題)
再啟動YARN
sbin/start-yarn.sh
檢視yarn的啟動情況:
http://192.168.25.130:50070 (HDFS管理介面)
只啟動一個namenode或者datanode
hadoop-daemon.sh start namenode hadoop-daemon.sh start datanode
配置slaves:
配置免密登陸:
ssh-keygen -t rsa(回車)
ssh-copy-id localhost
cd .ssh
cp id_rsa.pub authorized_keys
chmod 600 authorized_keys
測試本地免密登陸:ok 沒有問題
將金鑰傳送到hadoop2,hadoop3 ssh-copy-id hadoop2 ssh-copy-id hadoop3
測試登陸hadoop2: ok沒問題
停止hdfs:sbin/stop-dfs.sh
上傳一個檔案:
首先查根目錄下有什麼檔案:hadoop fs -ls /
什麼也沒有,現在上傳一個檔案:hadoop fs -put canglaoshi.avi /
有了:
命令檢視也有了:
我們配置的備份資料是兩份,這兩份會存到哪個機器呢?首先就近就會存放一份這這臺機器上,還有一個副本就放其他機器上
根據所配置的配置檔案來找到副本的數量,
上傳的小檔案可以找到他所有的副本的數量,未滿128M沒有分片
上傳大檔案:被分成了兩片,分別存於不同的機器上
安裝包傳上去被切成了幾塊,就沒法解壓了,但是把他拼起來就有辦法解壓:
可以從fdfs上下載下來:hadoop fs -get /canglaoshi.avi