1. 準備工作
軟件準備:
1) Hadoop: hadoop-2.5.0.tar.gz
2) Jdk: jdk-7u71-linux-x64.tar.gz
3) Hive:apache-hive-0.13.1-bin.tar.gz
4) Hbase:hbase-0.98.8-hadoop2-bin.tar.gz
5) Sqoop:sqoop-1.99.4-bin-hadoop200.tar.gz
6) Zookeeper:zookeeper-3.4.6.tar.gz
7) eclipse:eclipse-SDK-4.3.1-linux-gtk-x86_64.tar.gz
8) Eclipse插件:hadoop-eclipse-plugin-2.5.0.jar
9) Pig:pig-0.13.0.tar.gz
10) Mysql:MySQL-server-5.5.21-1.linux2.6.x86_64.rpm
MySQL-client-5.5.21-1.linux2.6.x86_64.rpm
MySQL-devel-5.5.21-1.linux2.6.x86_64.rpm
11) Mysql驅動:mysql-connector-java-5.0.3.jar
硬件準備:
物理機器總 共4臺,想配置基於物理機的hadoop集羣中包括 4 個 節點: 1 個 Master , 3 個 Salve , 節點之間局域網連接,可以相互 ping 通
Ip分佈 爲
192.168.0.1 hadoop1
192.168.0.2 hadoop2
192.168.0. 3 hadoop3
192.168.0. 4 hadoop4
操作系統爲 RedHat 5.4 64bit
Master機器主要配置NameNode和JobTracker的角色, 負責總 管分佈式數據和分解任 務 的 執 行;3個Salve機器配置DataNode和TaskTracker的角色, 負責 分佈式數據存 儲 以及任 務 的 執 行。
此處省略Linux操作系統的安裝... ...
創建賬戶
使用root登陸 所有機器後,所有的機器都 創建 hadoop 用 戶
useradd hadoop
passwd hadoop
此時 在 /home/ 下就會生成一個hadoop 目錄 ,目 錄 路徑 爲 /home/hadoop
創建相關的目錄
定義 需要數據及目 錄 的存放路徑
定義 代 碼及工具 存放的路徑
mkdir -p /home/hadoop/source
mkdir -p /home/hadoop/tools
定義 數據 節 點存放的路徑到跟目 錄 下的hadoop文件夾, 這 裏是數據 節 點存放目 錄 需要有足夠的空 間 存放
mkdir -p /hadoop/hdfs
mkdir -p /hadoop/tmp
mkdir -p /hadoop/log
設置可寫權限
chmod -R 777 /hadoop
定義 java安裝程序路徑
mkdir -p /usr/java
2. 安裝JDK
1 ,將下 載好的 jdk-7u71-linux-x64.tar.gz通 過 SSH 上 傳到 /usr/java 下
scp -r ./jdk-6u32-linux-x64.binroot@hadoop1:/usr/java
2 , 進入 JDK 安裝目 錄 cd /usr/java 並且 執行 chmod +x jdk-7u71-linux-x64.bin
3 , 執行 ./ jdk-7u71-linux-x64.bin
4 ,配置 環境變量,執行 cd /etc 命令後 執行 vi profile ,在行末尾添加
export JAVA_HOME=/usr/java/jdk1.7.0_71
exportCLASSPATH=.:$JAVA_HOME/lib/tools.jar:/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH
5 , 執行 chmod +x profile 將其 變成可執行文件
6 , 執行 source profile 使其配置立即生效
source /etc/profile
7 , 執行 java -version 查看是否安裝成功
這個步驟所有機器都必須安裝
[root@hadoop1 bin]# java -version
java version "1.6.0_32"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01,mixed mode)
3. 修改主機名
修改主機名,所有節點均一樣配置
1 , 連接到主節點 192.168.0.1 ,修改 network , 執行 vim/etc/sysconfig/network ,修改 HOSTNAME=hadoop1
2 ,修改 hosts 文件, 執行 cd /etc 命令後 執行 vi hosts ,在行末尾添加 :
192.168.0. 1 hadoop1
192.168.0. 2 hadoop2
192.168.0. 3 hadoop3
192.168.0. 4 hadoop4
3 , 執行 hostname hadoop1
4 , 執行 exit 後重新 連接可看到主機名以修改 OK
其他節點 也修改主機名後添加Host, 或者 host 文件可以在後面執行 scp 覆蓋操作
4. 配置SSH無密碼登陸
SSH 無密 碼原理簡介 :
首先在 hadoop1 上生成一個密鑰對,包括一個公鑰和一個私鑰,並將公鑰複製到所有的 slave(hadoop2-hadoop4) 上。
然後當 master 通過 SSH 連接 slave 時, slave 就會生成一個隨機數並用 master 的公鑰對隨機數進行加密,併發送給 master 。
最後 master 收到加密數之後再用私鑰解密,並將解密數回傳給 slave , slave 確認解密數無誤之後就允許 master 不輸入密碼進行連接了
2 ,具體步 驟(在root用戶和hadoop用戶登陸情況下執行)
1 、 執行命令 ssh-keygen -trsa 之後一路回車,查看剛生成的無密碼鑰對: cd .ssh 後執行 ll
2 、把 id_rsa.pub 追加到授權的 key 裏面去。 執行命令 cat~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys
3 、修改權限: 執行 chmod 600~/.ssh/authorized_keys
4 、確保 cat/etc/ssh/sshd_config 中存在如下內容
RSAAuthenticationyes
PubkeyAuthenticationyes
AuthorizedKeysFile .ssh/authorized_keys
如需修改,則在修改後執行重啓 SSH 服務命令使其生效 :service sshd restart
5 、將公 鑰複製到所有的 slave 機器上 :scp ~/.ssh/id_rsa.pub192.168.0.3 : ~/ 然後 輸入 yes ,最後 輸入 slave 機器的密 碼
6 、在 slave 機器上 創建 .ssh 文件夾 :mkdir~/.ssh 然後執行 chmod 700 ~/.ssh (若文件夾以存在則不需要創建)
7 、追加到授權文件authorized_keys 執行命令 :cat ~/id_rsa.pub >> ~/.ssh/authorized_keys 然後 執行 chmod 600~/.ssh/authorized_keys
8 、重複第 4 步
9 、 驗證命令 : 在 master 機器上 執行 ssh 192.168.0.3 發現主機名由hadoop1 變成 hadoop3 即成功,最後刪除 id_rsa.pub 文件 :rm -r id_rsa.pub
按照以上步驟分別配置 hadoop1,hadoop2,hadoop3,hadoop4 ,要求每個都可以無密 碼登錄
5. HADOOP 安裝
創建目錄
mkdir –p /home/hadoop
cd /home/hadoop
將安裝包複製到該目錄下解壓
tar zxvf hadoop-2.5.0.tar.gz
/etc/profile
配置環境變量: vim /etc/profile
添加
export HADOOP_DEV_HOME=/home/hadoop/hadoop
export PATH=$PATH:$HADOOP_DEV_HOME/bin
export PATH=$PATH:$HADOOP_DEV_HOME/sbin
exportHADOOP_MAPARED_HOME=${HADOOP_DEV_HOME}
export HADOOP_COMMON_HOME=${HADOOP_DEV_HOME}
export HADOOP_HDFS_HOME=${HADOOP_DEV_HOME}
export YARN_HOME=${HADOOP_DEV_HOME}
exportHADOOP_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop
exportHDFS_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop
exportYARN_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop
創建並配置hadoop-env.sh
vim/usr/hadoop/hadoop-2.0.0-alpha/etc/hadoop/hadoop-env.sh
在末尾添加 export JAVA_HOME=/usr/java/jdk1.7.0_71
core-site.xml
在 configuration 節點裏面添加屬性
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/tmp</value>
<description>A base for othertemporary directories.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.0.1:9000</value>
</property>
添加 httpfs 的選項
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>192.168.0.1</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
slave配置
vim /home/hadoop/hadoop/etc/hadoop/slaves
添加 slave 的 IP
192.168.0. 2
192.168.0. 3
192.168.0. 4
配置hdfs-site.xml
vim/home/hadoop/hadoop/etc/hadoop/hdfs-site.xml
添加節點
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/hadoop/hdfs/name</value>
<final>true</final>
</property>
<property>
<name>dfs.federation.nameservice.id</name>
<value>ns1</value>
</property>
<property>
<name>dfs.namenode.backup.address.ns1</name>
<value>192.168.0.1:50100</value>
</property>
<property>
<name>dfs.namenode.backup.http-address.ns1</name>
<value>192.168.0.1:50105</value>
</property>
<property>
<name>dfs.federation.nameservices</name>
<value>ns1</value>
</property>
<property>
<name>dfs.namenode.rpc-address.ns1</name>
<value>192.168.0.1:9000</value>
</property>
<property>
<name>dfs.namenode.rpc-address.ns2</name>
<value>192.168.0.1:9000</value>
</property>
<property>
<name>dfs.namenode.http-address.ns1</name>
<value>192.168.0.1:23001</value>
</property>
<property>
<name>dfs.namenode.http-address.ns2</name>
<value>192.168.0.1:13001</value>
</property>
<property>
<name>dfs.dataname.data.dir</name>
<value>file:/hadoop/hdfs/data</value>
<final>true</final>
</property>
<property>
<name>dfs.namenode.secondary.http-address.ns1</name>
<value>192.168.0.1:23002</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address.ns2</name>
<value>192.168.0.1:23002</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address.ns1</name>
<value>192.168.0.1:23003</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address.ns2</name>
<value>192.168.0.1:23003</value>
</property>
配置yarn-site.xml
添加節點
<property>
<name>yarn.resourcemanager.address</name>
<value>192.168.0.1:18040</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>192.168.0.1:18030</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>192.168.0.1:18088</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>192.168.0.1:18025</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>192.168.0.1:18141</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
配置httpfs-site.xml
同步代碼到其他機器
1.同步配置代 碼
先在 slaves 的機器上也創 建
mkdir -p /home/hadoop/source
部署hadoop代碼 , 創 建 軟連接 ,然後只要同步修改 過 的etc/hadoop下的配置文件即可
2.同步 /etc/profile
3.同步 /etc/hosts
scp -r /etc/profileroot@hadoop2:/etc/profile
scp -r /etc/hosts root@hadoop2:/etc/hosts
其他機器以此操作
Hadoop啓動
格式化集羣
hadoop namenode -format -clusteridclustername
啓動hdfs
start-dfs.sh
啓動Yarn
start-yarn.sh
啓動httpfs
httpfs.sh start
使得對外 可以提高 http 的restful接口服 務
測試
安裝結果驗證
驗證hdfs
在各臺機器執行 jps 看進程 是否都已 經啓動 了
[root@hadoop1 hadoop]# jps
7396 NameNode
24834 Bootstrap
7594 SecondaryNameNode
7681 ResourceManager
32261 Jps
[root@hadoop2 ~]# jps
8966 Jps
31822 DataNode
31935 NodeManager
進程啓動正常
驗證是否可以登 陸
hadoop fs -ls hdfs://192.168.0.1:9000/
hadoop fs -mkdir hdfs://192.168.0.1:9000/testfolder
hadoop fs -copyFromLocal ./xxxxhdfs://192.168.0.1:9000/testfolder
hadoop fs -ls hdfs://192.168.0.1:9000/testfolder
6. zookeeper安裝
將zookeeper-3.4.6.tar.gz 複製到/home/hadoop目錄下
Chmod 777 zookeeper-3.4.6.tar.gz
tar zxvf zookeeper-3.4.6.tar.gz
mv zookeeper-3.4.6 zookeeper
建立數據目錄
mkdir /home/hadoop/zookeeper/data
修改配置文件
cd zookeeper/conf
cp zoo_sample.cfg zoo.cfg
編輯配置文件
vi zoo.cfg
# 修改數據目錄dataDir爲以下值
dataDir=/home/hadoop/zookeeper/data
# 添加以下段落
server.1=192.168.0.1:2886:3886
server.2=192.168.0.2:2887:3887
server.3=192.168.0.3:2888:3888
server.4=192.168.0.4:2889:3889
server.id=host:port:port標識不同的ZooKeeper服務器
需要在每個服務器的數據目錄中(這邊爲/home/hadoop/zookeeper/data)創建myid文件,文件的內容爲以上對應的server.id中的id
vi /data/zookeeper/myid
# 值爲各個服務器對應的server.id中的id
id
e. 配置環境變量並啓動ZooKeeper
vi /etc/profile
export ZOOKEEPER_HOME=/home/hadoop/zookeeper
PATH=$PATH:$ZOOKEEPER_HOME/bin
/在剩下的服務器中做相同的zookeeper操作,需要在每一臺機器上都啓動
zkServer.sh start
f. 驗證
jps 查看多了QuorumpeerMain 進程
zkCli.sh -server 192.168.0.2:2181
[zk: 192.168.0.2:2181(CONNECTED) 0] help
[zk: 192.168.0.2:2181(CONNECTED) 0] create/user 123456
[zk: 192.168.0.2:2181(CONNECTED) 0] get/user
7. Hbase 安裝
將hbase-0.98.8-hadoop2-bin.tar.gz 複製到/home/hadoop/
解壓:tar zxvf hbase-0.98.8-hadoop2-bin.tar.gz
mv hbase-0.98.8-hadoop2 /home/hadoop/hbase
cd hbase/conf
編輯配置文件hbase-site.xml
vi hbase-site.xml
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://hadoop1:9000/hbase</value>
<description>區域服務器使用存儲HBase數據庫數據的目錄</description>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
<description>
指定HBase運行的模式: false:單機模式或者爲分佈式模式 true: 全分佈模式
</description>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>hadoop1, hadoop2, hadoop3, hadoop4</value>
<description>ZooKeeper集羣服務器的位置</description>
</property>
</configuration>
編輯配置文件regionservers
vi regionservers
hadoop1
hadoop2
hadoop3
hadoop4
設置環境變量hbase-env.sh
vi hbase-evn.sh
export HBASE_MANAGES_ZK=false
使用獨立的ZooKeeper時需要修改HBASE_MANAGES_ZK值爲false,爲不使用默認ZooKeeper實例。
啓動服務
需要先啓動ZooKeeper(已經啓動)和hdfs文件系統
注意:以下兩個命令只需要在hadoop1下啓動
start-hbase.sh
jps命令查看多了 HRegionServer
修改系統時間使系統時間同步,負責HRegionServer進程會過一會死掉。
/etc/rc.local
末尾加入一行,同步主節點時間,主節點不用配:
ntpdate 192.168.0.2
f測試
hbase shell
hbase(main):001:0> status
hbase(main):001:0> create ‘student’,’name’,’age’
hbase(main):001:0> desc ‘student’
hbase(main):001:0> put ‘student’,’1’,’name’,’mapengbo’
hbase(main):001:0> put ‘student’,’1’,’age,’26’
hbase(main):001:0> get ‘student’,’1’,
8. Mysql安裝
mkdir –p /home/tools
將MySQL-server-5.5.21-1.linux2.6.x86_64.rpm,MySQL-client-5.5.21-1.linux2.6.x86_64.rpm
複製到/home/tools下
安裝服務端:
rpm -ivhMySQL-server-5.1.7-0.i386.rpm
安裝客戶端:
rpm -ivhMySQL-client-5.1.7-0.i386.rpm
cp/usr/share/mysql/my-medium.cnf /etc/my.cnf
1、數據庫目錄
/var/lib/mysql/
2、配置文件
/usr/share/mysql(mysql.server命令及配置文件)
3、相關命令
/usr/bin(mysqladmin mysqldump等命令)
4、啓動腳本
/etc/rc.d/init.d/(啓動腳本文件mysql的目錄)
3、自動啓動(默認自動添加到自啓動,不用操作)
1)察看mysql是否在自動啓動列表中
[root@test1 local]# /sbin/chkconfig--list | grep mysql
2)把MySQL添加到你係統的啓動服務組裏面去
[root@test1local]# /sbin/chkconfig --add mysql
3)把MySQL從啓動服務組裏面刪除。
[root@test1local]# /sbin/chkconfig --del mysql
登錄MySQL的命令是mysql, mysql 的使用語法如下:
mysql [-uusername] [-h host] [-p[password]] [dbname]
username 與 password 分別是 MySQL 的用戶名與密碼,mysql的初始管理帳號是root,沒有密碼,注意:這個root用戶不是Linux的系統用戶。MySQL默認用戶是root,由於初始沒有密碼,第一次進時只需鍵入mysql即可
增加了密碼後的登錄格式如下:
mysql -u root -p
Enter password: (輸入密碼)
其中-u後跟的是用戶名,-p要求輸入密碼,回車後在輸入密碼處輸入密碼。
9. hive安裝
將apache-hive-0.13.1-bin.tar.gz 複製到/home/hadoop/
解壓:tar zxvf apache-hive-0.13.1-bin.tar.gz
mv apache-hive-0.13.1-bin /home/hadoop/hive
cp mysql-connector-java-5.0.3.jar /home/hadoop/hive/lib
進入解壓後的hive目錄,進入conf
cp hive-env.sh.template hive-env.sh
cp hive-default.xml.template hive-site.xml
配置hive-env.sh
HADOOP_HOME=/home/hadoop/hadoop
export HIVE_CONF_DIR=/home/hadoop/hive/conf
export HIVE_AUX_JARS_PATH=/home/hadoop/hive/lib
保存退出
source /hive-env.sh
hdfs dfs -mkdir -p /usr/hive/warehouse
hdfsdfs -mkdir -p /usr/hive/tmp
hdfsdfs -mkdir -p /usr/hive/log
hdfsdfs -chmod g+w /usr/hive/warehouse
hdfsdfs -chmod g+w /usr/hive/tmp
hdfsdfs -chmod g+w /usr/hive/log
cp hive-default.xml.template hive-site.xml
vi hive-site.xml
<property>
<name>hive.metastore.warehouse.dir</name>
<value>hdfs://node0:9000/usr/hive/warehouse</value>
(這裏就與前面的hdfsdfs -mkdir -p /usr/hive/warehouse相對應,其中node0指的是筆者的NameNode的hostname;)
</property>
<property>
<name>hive.exec.scratchdir</name>
<value>hdfs://node0:9000/usr/hive/warehouse</value>
</property>
<property>
<name>hive.querylog.location</name>
<value>/usr/hive/log</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNoExist=true</value>
</property>
javax.jdo.option.ConnectionURL這個參數使用來設置元數據連接字串
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectorUserName</name>
<value>hive</value>
</property>
這個javax.jdo.option.ConnectionUserName
是用來設置hive存放的元數據的數據庫(這裏是mysql數據庫)的用戶名稱的。
而這個‘hive‘可以根據用戶自己的需要來自行設置
--------------------------------------
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive</value>
</property>
這個javax.jdo.option.ConnetionPassword是用來設置,
用戶登錄數據庫的時候需要輸入的密碼的。
修改屬性名稱hive.metastore.ds.retry.attempts 爲hive. hmshandler.retry.attempts
修改屬性名稱hive.metastore.ds.retry.interval 爲hive. hmshandler.retry. interval
負責會報錯:hive error resoled "DEPRECATED: hive.metastore.ds.retry.* nolonger has any effect. Use hive.hmshandler.retry.* instead"
保存退出。
hbase的lib下找到下面4個文件拷貝到hive的lib目錄下。
protobuf-java-2.5.0.jar
hbase-client-0.96.2-hadoop2.jar
hbase-common-0.96.2-hadoop2.jar
guava-12.0.1.jar
啓動之前先要創建hive元數據存放的路徑文件:
hdfsdfs -mkdir -p /hive/scratchdir
hdfsdfs -mkdir /tmp
hdfsdfs -ls /hive
hdfsdfs -chmod -R g+w /hive/
hdfsdfs -chmod -R g+w /tmp
創建hive連接的用戶,和hive存放元數據的數據庫,如下:
GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%'IDENTIFIED BY '123456' ;
mysql> create database hive defaultcharacter set latin1; //字符集必須是latian1,如果是utf8則很多hive元數據表無法創建。
具體的啓動命令:
./hive
hive運行測試:
進入hive客戶端,運行showtable;查看錶的情況。
運行:
創建本地表,非hbase對應表
create table test(key int,amount string) rowformat delimited fields
terminated by '\t' lines terminated by '\n'stored as textfile;
load data local inpath '/usr/test.txt'overwrite into table test;
vi /usr/test.txt
1,abd
2,ddf
運行:
來創建於hbase關聯的表,這樣在hbaseshell下也能看到,兩筆新增數據都能實時看到。
CREATE TABLE hivetest(key int, val string)STORED BY
'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITHSERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val")
TBLPROPERTIES ("hbase.table.name" ="hivetest");
CREATE EXTERNAL TABLE hive_award(keystring, productid int,matchid string, rank string, tourneyid string, useridbigint,gameid int,gold int,loginid string,nick string,plat string) STORED BY'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES("hbase.columns.mapping" = ":key,info:MPID,info:MatchID,info:Rank,info:TourneyID,info:UserId,info:gameID,info:gold,info:loginId,info:nickName,info:platform")TBLPROPERTIES("hbase.table.name" = "award");
注意:1.如果要insert與hbase整合的表,不能像本地表一樣load,需要利用已有的表進行,
如insertoverwrite table hivetest select * from test;
其中test的語句(createtable test4(key int,val string) row format delimited fields terminated by '\t'lines terminated by '\n' stored as textfile; ),
注意類型要一致,否則用insertoverwrite table hivetest select * from test; 導不進去數據
2.在hive中的 修改能同步反應到hbase中,但是如果在hbase中對新的列做了數據修改,
則不會反應到hive中,因爲hive的原數據文件並沒有更新。
10. Pig安裝
將pig-0.13.0.tar.gz 複製到/home/hadoop/
解壓:tar zxvf pig-0.13.0.tar.gz
mv pig-0.13.0 /home/hadoop/pig
vi /etc/profile
export PIG_HOME=/home/hadoop/pig
export PIG_CLASSPATH=/home/hadoop/hadoop/conf/
export PATH=$PIG_HOME/bin:$PATH
Pig有兩種模式:
第一種是Local mode,也就是本地模式,這種模式下Pig運行在一個JVM裏,訪問的是本地的文件系統,只適合於小規模數據集,一般是用來體驗Pig。而且,它並沒有用到Hadoop的Local runner,Pig把查詢轉換爲物理的Plan,然後自己去執行。在終端下輸入% pig -x local就可以進入Local模式了。
第二種Hadoop模式,這種模式下,Pig才真正的把查詢轉換爲相應的MapReduceJobs,並提交到Hadoop集羣去運行,集羣可以是真實的分佈式也可以是僞分佈式。
cd /home/hadoop/pig/bin
./pig
Grunt>ls /
列出hdfs文件
讀取hdfs文件按“,”分割tables = LOAD '/home/test.txt' USING PigStorage(',') AS (carno,date, addno);
排序ordered = ORDER tables BY carno, date;
取前10行subtables = LIMIT ordered 10;
在控制檯輸出DUMP subtables;
文件輸出STORE subtables INTO '/Results';
http://blog.csdn.net/poisonchry/article/details/31486315
11. Sqoop安裝
將sqoop-1.99.4-bin-hadoop200.tar.gz複製到/home/hadoop/
解壓:tar zxvf sqoop-1.99.4-bin-hadoop200.tar.gz
mv sqoop-1.99.4-bin-hadoop200 /home/hadoop/sqoop
vi /etc/profile
export SQOOP_HOME=/home/hadoop/sqoop
export PATH=$SQOOP_HOME/bin:$PATH
export CATALINA_HOME=$SQOOP_HOME/server
export LOGDIR=$SQOOP_HOME/logs
保存退出即時生效:
source /etc/profile
修改sqoop配置:
vi /home/hadoop/sqoop/server/conf/sqoop.properties
修改指向我的hadoop安裝目錄
org.apache.sqoop.submission.engine.mapreduce.configuration.directory=/home/hadoop/hadoop/
#把hadoop目錄下的jar包都引進來
vi /home/hadoop/sqoop/server/conf/catalina.properties
common.loader=/home/hadoop/hadoop/share/hadoop/common/*.jar,/home/hadoop/hadoop/share/hadoop/common/lib/*.jar,/home/hadoop/hadoop/share/hadoop/hdfs/*.jar,/home/hadoop/hadoop/share/hadoop/hdfs/lib/*.jar,/home/hadoop/hadoop/share/hadoop/mapreduce/*.jar,/home/hadoop/hadoop/share/hadoop/mapreduce/lib/*.jar,/home/hadoop/hadoop/share/hadoop/tools/*.jar,/home/hadoop/hadoop/share/hadoop/tools/lib/*.jar,/home/hadoop/hadoop/share/hadoop/yarn/*.jar,/home/hadoop/hadoop/share/hadoop/yarn/lib/*.jar,/home/hadoop/hadoop/share/hadoop/httpfs/tomcat/lib/*.jar
在/home/hadoop/sqoop/lib 加入mysql驅動包
mysql-connector-java-5.0.3.jar
啓動/停止sqoop200
./sqoop.shserver start/stop
查看啓動日誌:
cd /home/hadoop/sqoop
vim catalina.out
進入客戶端交互目錄
./sqoop.sh client
查看版本
show version –all
顯示連接器:show connector –all
創建數據庫連接:create connection --cid 1
創建導入任務 create job --xid 1 --type import
查看導入狀態:status job --jid 1
12. eclipse安裝
cp eclipse-SDK-4.3.1-linux-gtk-x86_64.tar.gz /home/hadoop/tools
tar –zxvf eclipse-SDK-4.3.1-linux-gtk-x86_64.tar.gz
將hadoop-eclipse-plugin-2.5.0.jar 複製到/home/hadoop/tools/eclipse/plugins/
接下來在桌面添加eclipse的啓動快捷方式
在linux桌面空白處,點擊鼠標右鍵,彈出一個對話框,選擇“create launcher”,--“創建快捷方式“對話框---名字:eclipse –命令:/home/hadoop/tools/eclipse/eclipse 瀏覽到安裝eclipse目錄,找到eclipse啓動程序---點擊圖標到這裏我們已經配置成功了.
進入Window-->Preference選擇 “Hadoop Map/Reduce”配置根目錄:
進入Window-->OpenPerspective-->other-->Map/Reduce打開Map/Reduce窗口
打開Map/Reduce View,右鍵,選擇Newhadoop location
配置location
注意:MR Master和DFS Master配置必須和mapred-site.xml和core-site.xml等配置文件一致
新建Mapreduce項目
創建MapReduce程序
編寫WordCount程序測試插件使用:
在MapReduce工程下新建WordCount.java程序
將程序放在hadoop集羣上運行:右鍵-->Runas-->Run on Hadoop,最終的輸出結果會在HDFS相應的文件夾下顯示。