hadoop-2.7.1+zookeeper-3.4.8+hbase-1.2.1+apache-hive-2.0.0完全分布式集群

一、環境準備

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














本文轉自super李導51CTO博客,原文鏈接:http://blog.51cto.com/superleedo/1894519 ,如需轉載請自行聯系原作者

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/286003.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/286003.shtml
英文地址,請注明出處:http://en.pswp.cn/news/286003.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ArcGIS實驗教程——實驗二十九:ArcGIS制圖掩膜工具案例詳解

ArcGIS實驗視頻教程合集:《ArcGIS實驗教程從入門到精通》(附配套實驗數據)》 實驗目錄 1. ArcGIS掩膜概述2. 死胡同掩膜3. 要素輪廓線掩膜4. 交叉圖層掩膜1. ArcGIS掩膜概述 掩膜是利用遮蓋或隱藏要素的視覺處理技術來增強地圖表現力的一種技術手段,掩膜實質是包含一些多邊…

利用Android 8.0 ShortcutManager創建桌面快捷圖標

創建方法&#xff1a; /**param context 當前contentparam targetClass 快捷圖標打開的界面param backClass 打開后按返回鍵返回的界面param shortCutId shortCut 唯一idparam shortCutIcon 桌面上顯示的圖標param shortCutLabel 桌面圖標下方顯示的文字*/public static void A…

03 數據庫查詢、模型查詢、多庫查詢《ThinkPHP6 入門到電商實戰》

文章目錄&#xff08;更新中…&#xff09; 01 thinkphp6的前期開發準備《ThinkPHP6 入門到電商實戰》 02 控制器《ThinkPHP6 入門到電商實戰》 03 數據庫查詢、模型查詢、多庫查詢《ThinkPHP6 入門到電商實戰》 04 tp6 的查數據《ThinkPHP6 入門到電商實戰》 05 tp6 的數據添…

文本索引與檢索

本質上&#xff0c;非常多實際須要解決的問題歸根究竟都是搜索問題 - 在某個空間中尋找特定的目標。而&#xff0c; 文本檢索又是當中最典型最基礎的一種。文本檢索之所以重要&#xff0c;也是由于非常多更復雜對象或者結構的檢索能夠轉化為文本檢索&#xff0c;或者參考利用文…

Public DNS (公共域名解析服務)

114DNS 服務IP&#xff1a;114.114.114.114, 114.114.115.115 攔截 釣魚病毒木馬網站&#xff1a;114.114.114.119, 114.114.115.119 攔截 色情網站&#xff1a;114.114.114.110, 114.114.115.110 DNSPod 服務IP&#xff1a;119.29.29.29 阿里DNS 服務IP&#xff1a;223.5.5.5,…

Android之BaseQuickAdapter(3.0.4版本)給子view添加點擊事件(helper.addOnClickListener(view))的函數沒了

1、問題 用BaseQuickAdapter給子view添加點擊事件&#xff0c;以前都是在適配器里面這么寫的helper.addOnClickListener(view)&#xff0c;現在這個函數沒了 2、解決辦法 直接在適配器里面初始化調用 init {addChildClickViewIds(view)} 然后不要再給view在適配器里面setOnC…

使用開源工具 k8tz 優雅設置 Kubernetes Pod 時區

容器在主機的內核上運行&#xff0c;并獲得時鐘&#xff0c;但時區不是來自內核&#xff0c;而是來自用戶空間。在大多數情況下&#xff0c;默認使用協調世界時 (UTC)。時區的不一致&#xff0c;會帶來很多困擾。即使代碼與時區無關&#xff0c;但容器日志與系統日志時間相關聯…

Android WebView 在內部打開鏈接,捕獲錯誤

webView.setWebViewClient(new WebViewClient() {Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url) {view.loadUrl(url);return true;//ture為在webview中打開}});webView.setWebChromeClient(new WebChromeClient() {Overridepublic void onReceiv…

04 tp6 的查數據 find、select、findOrEmpty、findOrFail、toArray、selectOrFail、value、column《ThinkPHP6 入門到電商實戰》

文章目錄&#xff08;更新中…&#xff09; 01 thinkphp6的前期開發準備《ThinkPHP6 入門到電商實戰》 02 控制器《ThinkPHP6 入門到電商實戰》 03 數據庫查詢、模型查詢、多庫查詢《ThinkPHP6 入門到電商實戰》 04 tp6 的查數據《ThinkPHP6 入門到電商實戰》 05 tp6 的數據添…

學生信息管理系統小結

ASP.NETAccess 一、登入部分 主界面 Fm new 主界面(); string s1 "ProviderMicrosoft.Jet.OLEDB.4.0;Data Sourcestudent.mdb"; string s2 "select*from 登錄信息表 where 用戶名" this.ttbName.Text " and 密碼 "…

ArcGIS實驗教程——實驗三十:地圖注記與標注(標注轉注記)用法案例詳解

ArcGIS實驗視頻教程合集:《ArcGIS實驗教程從入門到精通》(附配套實驗數據)》 實驗目錄 一、實驗描述二、地圖標注1. 標注工具2. 標注屬性默認設置3. 標注分類4. 多屬性字段標注5. 標注轉換6. 顯示地圖提示三、地圖文檔注記1. 注記組2. 創建地圖文檔注記3. 編輯地圖文檔注記一…

Android之實現多桌面圖標app入口進入不同的頁面,像2個獨立運行的app一樣,互不干擾。

1、需求 Android實現2個圖標app入口進入不同的頁面,一個圖標點擊進去主app頁面,一個圖標點擊直接進入app頁面的里面一個子頁面,兩個圖標功能點擊效果獨立,不能亂跳,副桌面圖標然后返回也是直接返回,不能先返回到本地,就是感覺像2個獨立運行的app一樣,互不干擾。 問題:…

啟動obiee

啟動obiee:1.啟動數據庫第一步&#xff1a;打開Oracle監聽$ lsnrctl start第二步&#xff1a;使用sysdab角色登錄sqlplussqlplus / as sysdba第三步&#xff1a;啟動數據庫SQL> startup 2.啟動WebLogic&#xff1a;nohup /home/oracle/obiee11g/user_projects/domains/bifou…

ASP.NET中IsPostBack詳解

1、IsPostBack介紹Page.IsPostBack是一個標志&#xff1a;當前請求是否第一次打開。 調用方法為&#xff1a;Page.IsPostBack或者IsPostBack或者this.IsPostBack或者this.Page.IsPostBack&#xff0c;它們都等價。  1)當通過IE的地址欄等方式打開一個URL時是第一次打開, 當通…

05 tp6 的數據添加 助手函數、 save、insert、strict、replace、insertGetId、insertAll《ThinkPHP6 入門到電商實戰》

文章目錄&#xff08;更新中…&#xff09; 01 thinkphp6的前期開發準備《ThinkPHP6 入門到電商實戰》 02 控制器《ThinkPHP6 入門到電商實戰》 03 數據庫查詢、模型查詢、多庫查詢《ThinkPHP6 入門到電商實戰》 04 tp6 的查數據《ThinkPHP6 入門到電商實戰》 05 tp6 的數據添…

利用bat修復office文件圖標

如果電腦上安裝了office&#xff0c;再安裝wps&#xff0c;卸載wps后office文件圖標會丟失。利用下邊的代碼&#xff0c;另存為bat文件&#xff0c;運行后可以快速修復圖標問題。 rem 修復office文件默認圖標.bat:: office圖標文件路徑&#xff0c;請根據自己電腦上的安裝目錄設…

VS2019如何創建C++項目?沒有找到空項目(C++)完全解決方案

在使用Visual Studio 2019創建C++空項目時,沒有空白項目可選,如下圖所示,原因是在安裝VS2019時沒有選擇C++對應的模塊。本文講解如何使用VS2019創建C++空項目,并使用C語言輸出Hello World。 運行Visual Studio Installer,點擊【修改】。 勾選【使用C++的桌面開發】,點擊…

CentOS7.2 忘記root密碼解決

CentOS 7 root密碼的重置方式和CentOS 6完全不一樣&#xff0c;以進入單用戶模式修改root密碼為例。 1.重啟開機按esc&#xff0c;在第一行按e&#xff0c;進行編輯 2.編輯修改兩處&#xff1a;ro改為rw,在LANGen_US.UFT-8后面添加init/bin/sh 3.按CtrlX重啟&#xff0c;并修改…

Android之解決NestedScrollView嵌套RecyclerView部分手機返回到這個頁面Recyclerview頂部,而不是頁面NestedScrollView頂部

1、問題 NestedScrollView嵌套Recyclerview部分手機返回到這個頁面Recyclerview頂部,而不是頁面NestedScrollView頂部 部分布局大致如下 <androidx.core.widget.NestedScrollViewandroid:layout_width="match_parent"android:layout_height="match_parent…

詞法分析程序的功能

詞法分析程序的功能其實就是對所輸入的字段進行詞法分析任務&#xff0c;對用戶的源程序從左到右進行掃描&#xff0c;按照語言的詞法規則識別各類單詞&#xff0c;并產生相應單詞的屬性字&#xff0c;并隨之顯現出來&#xff0c;成為詞法分析程序的功能 轉載于:https://www.cn…