一、環境準備
1.查看系統版本
cat /etc/issue
CentOS release 6.8 (Final) ??
2.軟件準備
軟件自行官網下載,但自己要統一規劃方便后面操作,本文軟件源目錄/usr/local/src
安裝目錄/usr/local
賦權限,以備后續步驟安裝軟件[安裝包都在/usr/local/src]?
chown hadoop.hadoop /usr/local/src –R
3.配置主機名和hosts
三臺機器(內存大于2G) 分別寫hosts、設定hostname
192.168.100.11 ?mylab1 ?----master
192.168.100.12 ?mylab2 ?----slave1
192.168.100.13 ?mylab3 ?-----slave2
4.關閉selinux
臨時關閉:
[root@mylab1 ~]# getenforce
Enforcing
[root@mylab1 ~]# setenforce 0
[root@mylab1 ~]# getenforce
Permissive
永久關閉selinux:
vim /etc/selinux/config
修改SELINUX=enforcing為SELINUX=disabled
5.關閉防火墻iptables
service iptables stop或/etc/init.d/iptables stop
chkconfig iptables off
6.所有機器同步時間?
ntpdate time.windows.com
注:一定要做,集群對時間要求高,不然后面啟動會報錯,也可以自己搭建ntp服務器(正常線上肯定是要其中一臺搭建時間服務器來同步時間的)
7.創建hadoop用戶
Hadoop為了安裝使用普通用戶登錄
useradd hadoop
echo "hadoop"|passwd --stdin hadoop
增加權限:
visudo
hadoop ALL=(ALL) ?ALL
8.切換hadoop用戶
su - hadoop
9.配置SSH無密碼登陸
master可以通過密鑰登陸本機和兩臺slave
master上生成密鑰對:
執行ssh-keygen 命令后一直回車
[hadoop@mylab1 ~]$ ssh-keygen
生成.ssh目錄
ls .ssh/
id_rsa ?id_rsa.pub
復制~/.ssh/id_rsa.pub 內容到本機和兩臺slave的 ~/.ssh/authorized_keys
設置本機和兩臺slave機器上的~/.ssh/authorized_keys文件權限為600
chmod 600 ~/.ssh/authorized_keys
cp id_rsa.pub authorized_keys
scp ~/.ssh/authorized_keys hadoop@192.168.100.12:/home/hadoop/.ssh/
scp ~/.ssh/authorized_keys hadoop@192.168.100.13:/home/hadoop/.ssh/
測試:
在master上執行
ssh master
ssh slave1
ssh slave2
可以直接登陸,即實現master免密碼登錄slave1,slave2
10.創建備用目錄
mkdir -pv /usr/local/storage/zookeeper/{data,logs} ? #創建zookeeper數據目錄和日志目錄
11.同步:
由于所有軟件,配置文件,環境配置基本相同,所有本文所有操作都可以在一臺服務器上操作執行,之后通過rsync,或scp等同步工具,同步到其他服務器,可避免重復性操作,切記,切記,切記
例如:rsync –av /usr/local/storage/ ?mylab2:/usr/local
二、部署應用
1.安裝JAVA環境
先除已有jdk(如果有) rpm -e jdk(之前版本)
安裝jdk
?rpm -ivh jdk-7u79-linux-x64.rpm
修改環境變量:vim /home/hadoop/.bashrc
JAVA_HOME=/usr/java/jdk1.7.0_79
JRE_HOME=/usr/java/jdk1.7.0_79/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPAT
使環境變量生效:
source?/home/hadoop/.bashrc
驗證jdk安裝成功?
java -version 版本顯示為安裝版本即正常
#注:所有服務器都要安裝jdk
2.安裝hadoop2.7
把hadoop安裝包解壓到每一個節點(可以解壓到一個節點,然后完成后續第2步的配置后,再scp拷貝到其余節點)的固定目錄下
1.1解壓hadoop,并修改用戶及用戶組為hadoop
cd /usr/local/src/
tar xf hadoop-2.7.1.tar.gz
chown -R hadoop.hadoop hadoop-2.7.1
mv hadoop-2.7.1 /usr/local/hadoop
1.2執行一下命令檢查hadoop是否可用
cd /usr/local/hadoop
./bin/hadoop version
查看是否顯示hadoop版本信息
Hadoop 2.7.1 顯示即正常,否則軟件包有問題重新下載。
1.3在hadoop目錄下創建如下目錄
cd /usr/local/hadoop
mkdir tmp dfs dfs/data dfs/name ??
1.4、設置Hadoop環境變量
vim /home/hadoop/.bashrc
JAVA_HOME=/usr/java/jdk1.7.0_79
JRE_HOME=/usr/java/jdk1.7.0_79/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPAT
export HADOOP_HOME=/usr/local/hadoop
export HIVE_HOME=/usr/local/hive
export HBASE_HOME=/usr/local/hbase
export ZOOKEEPER=/usr/local/zookeeper
export HADOOP_INSTALL=$HADOOP_HOME
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_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export HDFS_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export YARN_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HBASE_HOME/bin:$HIVE_HOME/bin:$ZOOKEEPER/bin使環境變量生效
source ~/.bashrc
同步至其他服務器:
例如:
rsync –av /home/hadoop/.bashrc mylab2:/home/hadoop/
1.4、配置文件修改:
集群/分布式模式需要修改 /usr/local/hadoop/etc/hadoop 中的5個配置文件,更多設置項可點擊查看官方說明,這里僅設置了正常啟動所必須的設置項: slaves、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml
1.1、core-site.xml?
master上 vim /usr/local/hadoop/etc/hadoop/core-site.xml
<configuration>
? ? <property>
? ? ? ? <name>fs.defaultFS</name>
? ? ? ? <value>hdfs://192.168.100.11:9000</value>
? ? </property>
? ? <property>
? ? ? ? <name>hadoop.tmp.dir</name>
? ? ? ? <value>file:/usr/local/hadoop/tmp</value>
? ? </property>
? ? <property>
? ? ? ? <name>io.file.buffer.size</name>
? ? ? ? <value>131702</value>
? ? </property>
<!--指定可以在任何IP訪問-->
? <property>
? ? <name>hadoop.proxyuser.hduser.hosts</name>
? ? <value>*</value>
? </property>
<!--指定所有用戶可以訪問-->
? <property>
? ? <name>hadoop.proxyuser.hduser.groups</name>
? ? <value>*</value>
? </property>
?<!-- 指定zookeeper地址 -->
? <property>
? ? <name>ha.zookeeper.quorum</name>
? ? <value>mylab1:2181,mylab2:2181,mylab3:2181</value>
? </property>
</configuration>
1.2、hdfs-site.xml
dfs.replication 一般設為 3,但我們只有2個 Slave 節點,所以 dfs.replication 的值還是設為 2
master上 ?vi ?/usr/local/hadoop/etc/hadoop/hdfs-site.xml
<configuration>
<!--指定支持高可用自動切換機制-->?
? <property>?
? ? <name>dfs.ha.automatic-failover.enabled</name>?
? ? <value>true</value>?
? </property>?
<!--指定namenode名稱空間的存儲地址-->?
? ? <property>
? ? ? ? <name>dfs.namenode.name.dir</name>
? ? ? ? <value>file:/usr/local/hadoop/dfs/name</value>
? ? </property>
<!--指定datanode數據存儲地址-->
? ? <property>
? ? ? ? <name>dfs.datanode.data.dir</name>
? ? ? ? <value>file:/usr/local/hadoop/dfs/data</value>
? ? </property>
? ? <property>
? ? ? ? <name>dfs.replication</name>
? ? ? ? <value>2</value>
? ? </property>
? ? <property>
? ? ? ? <name>dfs.namenode.secondary.http-address</name>
? ? ? ? <value>192.168.100.11:9001</value>
? ? </property>
? ? <property>
? ? <name>dfs.webhdfs.enabled</name>
? ? <value>true</value>
? ? </property>
? ?<property>?
? ? <name>ha.zookeeper.quorum</name>?
? ? <value>mylab1:2181,mylab2:2181,mylab3:2181</value>?
? ?</property>?
</configuration>
1.3、mapred-site.xml
需要先重命名,默認文件名為 mapred-site.xml.template
master上 ?vi ?/usr/local/hadoop/etc/hadoop/mapred-site.xml
<configuration>
<!-- 配置MapReduce運行于yarn中 -->?
? ? <property>
? ? ? ? <name>mapreduce.framework.name</name>
? ? ? ? <value>yarn</value>
? ? </property>
<!-- 配置 MapReduce JobHistory Server 地址 ,默認端口10020 -->?
? ? <property>
? ? ? ? <name>mapreduce.jobhistory.address</name>
? ? ? ? <value>192.168.100.11:10020</value>
? ? </property>
<!-- 配置 MapReduce JobHistory Server web ui 地址, 默認端口19888 -->?
? ? <property>
? ? ? ? <name>mapreduce.jobhistory.webapp.address</name>
? ? ? ? <value>192.168.100.11:19888</value>
? ? </property>
</configuration>
1.4、yarn-site.xml
master上 ?vi ?/usr/local/hadoop/etc/hadoop/yarn-site.xml
<configuration>
<property>
? ? ? ? <name>yarn.nodemanager.aux-services</name>
? ? ? ? <value>mapreduce_shuffle</value>
? ? </property>
? ? <property>
? ? ? ? <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
? ? ? ? <value>org.apache.hadoop.mapred.ShuffleHandler</value>
? ? </property>
? ? <property>
? ? ? ? <name>yarn.resourcemanager.address</name>
? ? ? ? <value>192.168.100.11:8032</value>
? ? </property>
? ? <property>
? ? ? ? <name>yarn.resourcemanager.scheduler.address</name>
? ? ? ? <value>192.168.100.11:8030</value>
? ?</property>
? ?<property>
? ? ? ? <name>yarn.resourcemanager.resource-tracker.address</name>
? ? ? ? <value>192.168.100.11:8031</value>
? ? </property>
? ? <property>
? ? ? ? <name>yarn.resourcemanager.admin.address</name>
? ? ? ? <value>192.168.100.11:8033</value>
? ? </property>
? ? <property>
? ? ? ? <name>yarn.resourcemanager.webapp.address</name>
? ? ? ? <value>192.168.100.11:8088</value>
? ? </property>
? ? <property>?
? ? ? ? ?<name>ha.zookeeper.quorum</name>?
? ??<value>mylab1:2181,mylab2:2181,mylab3:2181</value> ?
? ? </property>?
<!--配置與zookeeper的連接地址--> ?
? <property> ?
? ? <name>yarn.resourcemanager.zk-state-store.address</name> ?
? ? <value>mylab1:2181,mylab2:2181,mylab3:2181</value>?
? </property> ?
? <property> ?
? ? <name>yarn.resourcemanager.store.class</name> ?
? ? <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value> ?
? </property> ?
? <property>?
? ? <name>yarn.resourcemanager.zk-address</name>?
? ? <value>mylab1:2181,mylab2:2181,mylab3:2181</value>?
? </property>?
</configuration>
1.5、 slaves?
文件 slaves,將作為 DataNode 的主機名寫入該文件,每行一個,默認為 localhost,所以在偽分布式配置時,節點即作為 NameNode 也作為 DataNode。分布式配置可以保留 localhost,也可以刪掉,讓 Master 節點僅作為 NameNode 使用。
本教程讓 Master 節點僅作為 NameNode 使用,因此將文件中原來的 localhost 刪除,添加如下內容ip或數據節點主機名即可:
192.168.100.12 ?---slave1
192.168.100.13 ----slave2
1.5、同步
rsync? av /usr/local/hadoop mylab2:/usr/local/
rsync??av /usr/local/hadoop mylab3:/usr/local/
3、Zookeeper集群部署
zookeeper集群搭建要至少3臺服務器,所以三臺服務器都要部署zookeeper;安裝在hadoop用戶上
tar xf zookeeper-3.4.6.tar.gz -C /usr/local/
mv /usr/local/zookeeper-3.4.6/ /usr/local/zookeeper
cp zoo_sample.cfg ?zoo.cfg
?編輯配置文件
vim zoo.cfg
tickTime=2000
initLimit=5
syncLimit=2
#dataDir=/tmp/zookeeper
dataDir=/usr/local/storage/zookeeper/data
dataLogDir=/usr/local/storage/zookeeper/logs?
clientPort=2181
server.1=mylab1:2888:3888?
server.2=mylab2:2888:3888?
server.3=mylab3:2888:3888
創建zookeeper的數據文件和日志存放目錄
mkdir ?/usr/local/storage/zookeeper/data ?/usr/local/storage/zookeeper/logs?
在三臺zookeeper的/usr/local/storage/zookeeper/data目錄下分別編輯myid
echo 1 >?/usr/local/storage/zookeeper/data/myid
echo 2 >?/usr/local/storage/zookeeper/data/myid
echo 3 >?/usr/local/storage/zookeeper/data/myid
同步到其他hadoop節點?
scp -r /usr/local/zookeeper ?mylab2:/usr/local/
4、部署hbase
tar xf hbase-1.2.1-bin.tar.gz
配置文件修改
regionservers 文件
mylab1
mylab2
mylab3
編輯修改hbase-site.xml文件
<configuration>
<property>?
? ? <name>hbase.rootdir</name>?
? ? <value>hdfs://192.168.100.11:9000/hbase</value>?
? </property>?
? <property>?
? ? <name>hbase.cluster.distributed</name>?
? ? <value>true</value>?
? </property>?
? <property>?
? ? <name>hbase.tmp.dir</name>?
? ? <value>/usr/loca/storage/hbase</value> ??
? </property>?
? <property>?
? ? <name>hbase.zookeeper.quorum</name>?
? ? <value>mylab1,mylab2,mylab3</value>?
? </property>?
? <property>?
? ? <name>hbase.zookeeper.property.clientPort</name>?
? ? <value>2181</value>?
? </property>
?<!--跟zookeeperper配置的dataDir一致-->?
? <property>?
? ? <name>hbase.zookeeper.property.dataDir</name>?
? ? <value>/usr/local/storage/zookeeper/data</value>?
? </property> ?
</configuration>
禁用hbase自帶的zookeeper?
vi /usr/local/hbase/conf/hbase-env.sh?
export HBASE_MANAGES_ZK=false
創建hbase-site.xml配置文件中的hbase目錄
mkdir /usr/loca/storage/hbase
同步軟件到其他節點
rsync av /usr/local/hbase mylab2:/usr/local/
5、部署hive
cp hive-env.sh.template ?hive-env.sh
cp hive-site.xml.template?hive-site.xml
編輯配置文件
vim hive-site.xml
<configuration>?
<!--在hdfs上hive數據存放目錄,啟動hadoop后需要在hdfs上手動創建-->?
? <property> ?
? ? <name>hive.metastore.warehouse.dir</name>?
? ? <value>hdfs://192.168.100.11:9000/user/hive/warehouse</value>?
? </property>?
<property>
? ? ? ? <name>datanucleus.readOnlyDatastore</name>
? ? ? ? <value>false</value>
? ? </property>
? ? <property>?
? ? ? ? <name>datanucleus.fixedDatastore</name>
? ? ? ? <value>false</value>?
? ? </property>
? ? <property>?
? ? ? ? <name>datanucleus.autoCreateSchema</name>?
? ? ? ? <value>true</value>?
? ? </property>
? ? <property>
? ? ? ? <name>datanucleus.autoCreateTables</name>
? ? ? ? <value>true</value>
? ? </property>
? ? <property>
? ? ? ? <name>datanucleus.autoCreateColumns</name>
? ? ? ? <value>true</value>
? ? </property>
<!--通過jdbc協議連接mysql的hive庫-->?
? <property> ??
? ? <name>javax.jdo.option.ConnectionURL</name> ??
? ? <value>jdbc:mysql://192.168.100.11:3306/hive?createDatabaseIfNotExist=true</value> ? ?
? </property>?
<!--jdbc的mysql驅動-->?
? <property> ??
? ? <name>javax.jdo.option.ConnectionDriverName</name> ??
? ? <value>com.mysql.jdbc.Driver</value> ? ?
? </property>?
<!--mysql用戶名-->?
? <property> ??
? ? <name>javax.jdo.option.ConnectionUserName</name> ??
? ? <value>hive</value> ? ??
? </property> ??
<!--mysql用戶密碼--> ? ??
? <property> ??
? ? <name>javax.jdo.option.ConnectionPassword</name> ??
? ? <value>hive</value> ? ??
? </property>?
<!--hive的web頁面-->?
? <property> ?
? ? <name>hive.hwi.war.file</name>?
? ? <value>lib/hive-hwi-2.0.0.war</value>?
? </property>?
<!--指定hive元數據訪問路徑,可以有多個,逗號分隔-->?
<property>?
? <name>hive.metastore.uris</name>?
? <value>thrift://192.168.100.11:9083</value>?
</property>?
<!--hiveserver2的HA-->?
? <property> ?
? ? <name>hive.zookeeper.quorum</name>?
? ? <value>mylab1,mylab2,mylab3</value>?
? </property>?
</configuration>
添加mysql驅動?
cp /usr/local/src/mysql-connector-java-5.1.38-bin.jar /usr/local/hive/lib/?
添加hive web頁面的war包?
下載hive源碼包,apache-hive-2.0.0-src.tar.gz解壓進入hwi/web?
jar cvf hive-hwi-2.0.0.war ./*?
cp hive-hwi-2.0.0.war ?/usr/local/hive/lib/?
從hbase/lib下復制必要jar包到hive/lib下?
cp /usr/local/hbase/lib/hbase-client-1.2.1.jar /usr/local/hbase/lib/hbase-common-1.2.1.jar /usr/local/hive/lib?
同步hive和hadoop的jline版本?
cp /usr/local/hive/lib/jline-2.12.jar /usr/local/hadoop/share/hadoop/yarn/lib?
查看版本?
cd /home/hadoop/hadoop/share/hadoop/yarn/lib?
find ./ -name "*jline*jar"?
刪除低版本的jline 0.9?
rm jline-0.9.94.jar?
復制jdk的tools.jar到hive/lib下?
cp $JAVA_HOME/lib/tools.jar /usr/local/hive/lib
6、部署mysql
下載集成包解壓,安裝mysql
MySQL-5.6.33-1.linux_glibc2.5.x86_64.rpm-bundle.tar
配置MySQL登錄密碼?
cat /root/.mysql_secret?
#獲取MySQL安裝時生成的隨機密碼aHoUaEJFav0X7hlG?
service mysql start?
#啟動MySQL服務?
mysql -uroot -paHoUaEJFav0X7hlG?
#進入MySQL,使用之前獲取的隨機密碼?
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456'); ??
#在MySQL命令行中設置root賬戶的密碼為123456
創建hive用戶,密碼hive?
CREATE USER hive IDENTIFIED BY 'hive'; ?
GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%' WITH GRANT OPTION;?
或:GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%'IDENTIFIED BY 'hive'?WITH GRANT OPTION;?
flush privileges;?
用創建的hive用戶登錄mysql并創建hive庫?
mysql -uhive -phive?
create database hive;
#注:此處我的mysql是在主節點部署的
7、啟動
Hadoop集群首次啟動過程
1.啟動zookeeper
如果zookeeper集群還沒有啟動的話, 首先把各個zookeeper起來。?
/home/hadoop/zookeeper/bin/zkServer.sh start ? ?(記住所有的zookeeper機器都要啟動)?
/home/hadoop/zookeeper/bin/zkServer.sh status (1個leader,2個follower)?
輸入jps,會顯示啟動進程:QuorumPeerMain
2、啟動hadoop
首次啟動需要先在 Master 節點執行 NameNode 的格式化:
/usr/local/hadoop/bin/hdfs namenode -format
顯示無報錯即為正常
在master上操作即可,兩個slave會自動啟動
啟動服務
/usr/local/hadoop/sbin/start-all.sh
停止服務
/usr/local/hadoop/sbin/stop-all.sh
瀏覽器訪問:
http://192.168.100.11:8088/
http://192.168.100.11:50070
3、啟動hbase?
主master節點安裝目錄下
/bin/start-hbase.sh?
驗證安裝成功?
hbase shell ? ----進入hbase命令行
list ? ? ? ? ? ?---輸入list命令
hbase(main):001:0> list
TABLE ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
0 row(s) in 0.5530 seconds
=> []
help get 可以查看命令幫助
查看進程為:HMaster,HRegionServer ---主節點為2個
從節點進程為:HRegionServer
通過web UI訪問hbase狀態
http://192.168.100.11:16010/master-status
4.啟動hive?
先在hdfs上創建好hive存儲數據的目錄?
/bin/hadoop fs -mkdir /tmp?
/bin/hadoop fs -mkdir -p /user/hive/warehouse?
/bin/hadoop fs -chmod g+w /tmp?
/bin/hadoop fs -chmod g+w /user/hive/warehouse
hive 遠程服務 (端口號10000) 啟動方式[metastore和hiveserver2在同一臺上啟動即可]?
nohup /usr/local/hive/bin/hive --service metastore &> metastore.log & ?
nohup /usr/local/hive/bin/hive --service hiveserver2 &> hiveserver2.log &?
hive 命令行模式?
/home/hadoop/hive/bin/hive?
或者輸入?
hive --service cli
查看進程為:2個RunJar
#注:可以在任意一臺服務器上啟動hive,都可以。
8、查看啟動進程
通過命令 jps 可以查看各個節點所啟動的進程。正確的話,在 Master 節點上可以看到 NameNode、ResourceManager、SecondrryNameNode進程
Jps
Master上:
29162 RunJar
28442 HMaster
28049 ResourceManager
28999 RunJar
27607 NameNode
29328 Jps
28571 HRegionServer
27448 QuorumPeerMain
27802 SecondaryNameNode
在 Slave 節點可以看到 DataNode 和 NodeManager 進程
Slave上:
30086 RunJar
28962 DataNode
29834 HRegionServer
30245 RunJar
28868 QuorumPeerMain
29075 NodeManager
程序啟動成功后可以在任意一臺啟動hive
可以在啟動MR-JobHistory服務,
sbin/mr-jobhistory-daemon.sh start historyserver
Hadoop2 MR-JobHistory服務介紹
1)MR-JobHistory服務目標
主要是向用戶提供歷史的mapred Job 查詢
詳細解釋:
a)在運行MR Job時,MR 的 ApplicationMaster會根據mapred-site.xml配置文件中的配置,將MR Job的job history信息保存到指定的hdfs路徑(首先保存到臨時目錄,然后mv到最終目錄)
b)如果在yarn-site.xml中,沒有配置nodemanage的LogAggregation功能,則historyserver無法提供mr日志明細查詢的功能(在提交mr job時,yarn和mapred的配置都是必須的)
c)historyserver向外提供兩個接口,web接口可以提供jobhistory和明細日志查詢的功能,而restApi只提供jobhistory查詢的功能
9、測試
hdfs dfs -copyFromLocal ./LICENSE.txt ?/123
hdfs dfs -ls ?/123
用wordcount分析LICENSE.txt ?
bin/hadoop ?jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar wordcount /123/LICENSE.txt /output/123
bin/hdfs dfs -ls /output/123 ?查看分析后的文件
bin/hdfs dfs -cat /output/123/part-r-00000 ?查看分析結果
執行分布式實例
首先創建 HDFS 上的用戶目錄
hdfs dfs -mkdir -p /user/hadoop
將 /usr/local/hadoop/etc/hadoop 中的配置文件作為輸入文件復制到分布式文件系統中:
hdfs dfs -mkdir input
hdfs dfs -put /usr/local/hadoop/etc/hadoop/*.xml input
查看input目錄下文件
hdfs dfs -ls input
報錯總結:
若出現提示 “WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable”,該 WARN 提示可以忽略,不會影響 Hadoop 正常運行(可通過編譯 Hadoop 源碼解決,解決方法請自行搜索)。
若出現提示 “INFO metrics.MetricsUtil: Unable to obtain hostName java.net.UnknowHostException”,這需要執行如下命令修改 hosts 文件,為你的主機名增加IP映射:
Datanode不能啟動
Initialization failed for Block pool <registering> (Datanode Uuid unassigned)
解決方案:
將目錄、dfs、name、data清空
是重復啟動到時key值不一樣
Hmaster消失?ERROR: Can't get master address from ZooKeeper; znode data == null
這個問題這里是由于啟動hbase失敗造成,主要原因是因為配置文件hbase-site.xml中hdfs端口配置錯誤導致,幫助文檔中使用的是8020,而我的hadoop分布集群用的是9000默認端口,修改配置如下:gedit hbase-site.xml? ? ? ? ? ? ? ? <property>? ? ? ? ? ? ? ? ? ? ? ? <name>hbase.rootdir</name>? ? ? ? ? ? ? ? ? ? ? ? <value>hdfs://hadoop0:9000/hbase</value>? ? ? ? ? ? ? ? </property>
參考:
http://f.dataguru.cn/thread-519459-1-1.html