hadoop簡介:
(維基百科)Apache Hadoop是一款支持數據密集型分佈式應用并以Apache 2.0許可協議發佈的開源軟體框架。它支持在商品硬件構建的大型集群上運行的應用程序。Hadoop是根據Google公司發表的MaPReduce和Google檔案系統的論文自行實作而成。
Hadoop框架透明地為應用提供可靠性和數據移動。它實現了名為MapReduce的編程範式:應用程序被分割成許多小部分,而每個部分都能在集群中的任意節點上執行或重新執行。此外,Hadoop還提供了分佈式文件系統,用以存儲所有計算節點的數據,這為整個集群帶來了非常高的帶寬。MapReduce和分佈式文件系統的設計,使得整個框架能夠自動處理節點故障。它使應用程序與成千上萬的獨立計算的電腦和PB級的數據?,F在普遍認為整個Apache Hadoop“平臺”包括Hadoop內核、MapReduce、Hadoop分佈式文件系統(HDFS)以及一些相關項目,有Apache Hive和Apache HBase等等。
主節點包括名稱節點、從屬名稱節點和 jobtracker 守護進程(即所謂的主守護進程)以及管理集群所用的實用程序和瀏覽器。從節點包括 tasktracker 和數據節點(從屬守護進程)。兩種設置的不同之處在于,主節點包括提供 Hadoop 集群管理和協調的守護進程,而從節點包括實現Hadoop 文件系統(HDFS)存儲功能和 MapReduce 功能(數據處理功能)的守護進程。每個守護進程在 Hadoop 框架中的作用。namenode 是 Hadoop 中的主服務器,它管理文件系統名稱空間和對集群中存儲的文件的訪問。還有一個 secondary namenode,它不是namenode 的冗余守護進程,而是提供周期檢查點和清理任務。在每個 Hadoop 集群中可以找到一個 namenode 和一個 secondary namenode。datanode 管理連接到節點的存儲(一個集群中可以有多個節點)。每個存儲數據的節點運行一個 datanode 守護進程。每個集群有一個 jobtracker,它負責調度 datanode 上的工作。每個 datanode 有一個tasktracker,它們執行實際工作。jobtracker 和 tasktracker 采用主-從形式,jobtracker 跨datanode 分發工作,而 tasktracker 執行任務。jobtracker 還檢查請求的工作,如果一個datanode 由于某種原因失敗,jobtracker 會重新調度以前的任務。
環境:rhel6.3 selinux and iptables disabled, sshd enabled主機: 192.168.1.120 master192.168.1.122 slave192.168.1.123 slave192.168.1.121 slave(在線添加)軟件:hadoop.apache.org
master 配置:
sh jdk-6u32-linux-x64.bin mv jdk1.6.0_32/ /usr/local/jdk tar zxf hadoop-1.1.2.tar.gz -C /usr/local/ cd /usr/local/hadoop-1.1.2/
mv hadoop-1.1.2/ hadoop //便于以后升級 mv jdk/ hadoop/ //便于以后升級
vi conf/hadoop-env.sh :
# The java implementation to use. Required.export JAVA_HOME=/usr/local/hadoop/jdk
cd conf/vi core-site.xml :
<configuration> <property> <name>fs.default.name</name> <value>hdfs://192.168.1.120:9000</value> </property></configuration>
vi hdfs-site.xml :<configuration> <property> <name>dfs.replication</name> <value>2</value> </property></configuration>
vi mapred-site.xml:
<configuration> <property> <name>mapred.job.tracker</name> <value>192.168.1.120:9001</value> </property></configuration>
yum install openssh-clients -y
ssh-keygen ssh-copy-id localhost
ssh-copy-id 192.168.1.122 ssh-copy-id 192.168.1.123 scp -r hadoop/ 192.168.1.122:/usr/local/ scp -r hadoop/ 192.168.1.123:/usr/local/
cd /usr/local/hadoopbin/hadoop namenode -format
bin/start-all.sh //啟動hadoopjdk/bin/jps//查看時候否啟動成功,正常如下:
[root@server120 hadoop]# jdk/bin/jps12681 NameNode13260 Jps12918 JobTracker12826 SecondaryNameNode
slave配置:
只要在master作scp之前:yum install openssh-clients -y
在master啟動之后,cd /usr/local/hadoop
jdk/bin/jps//查看slave是否啟動成功,正常如下:
3182 TaskTracker4075 Jps3095 DataNode
上述啟動成功之后,還可以在web頁面查看狀態:
NameNode:http://192.168.1.120:50070http:/JobTracker://192.168.1.120:50030
測試:
在master:
cd /usr/local/hadoopbin/hadoop fs -put conf/ dir1 上傳數據
bin/hadoop fs -ls 查看數據信息
bin/hadoop jar hadoop-examples-1.1.2.jar Wordcount dir1 dir2 關鍵字統計,輸出統計結果到dir2
在統計過程中,可以在上述web頁面產看狀態和進度
hadoop 在線添加節點:在master:
ssh-copy-id 192.168.1.121cd /usr/local/hadoop/conf
vi slaves :添加192.168.1.121
cd ..
scp -r hadoop/ 192.168.1.121:/usr/local/
在新增節點上啟動服務:
cd /usr/local/hadoop/
bin/hadoop-daemon.sh start datanodebin/hadoop-daemon.sh start tasktracker
均衡數據:bin/start-balancer.sh1)如果不執行均衡,那么 cluster 會把新的數據都存放在新的 datanode 上,這樣會降低 mapred的工作效率2)設置平衡閾值,默認是 10%,值越低各節點越平衡,但消耗時間也更長bin/start-balancer.sh -threshold 5
hadoop 在線刪除 datanode 節點:
在 master 上修改 conf/mapred-site.xml,添加:
<property> name>dfs.hosts.exclude</name> <value>/usr/local/hadoop/conf/excludes</value> </property> <property> <name>mapred.hosts.exclude</name> <value>/usr/local/hadoop/conf/excludes</value>
在 d/usr/local/hadoop/conf下創excludes 文件,并添加需要刪除的主機,一行一個:
echo 192.168.1.121 > excludes
在 master 上在線刷新節點bin/hadoop dfsadmin -refreshNodes
可以通過以下命令查看 datanode 狀態bin/hadoop dfsadmin -report
新聞熱點
疑難解答