天天看點

hadoop

hadoop 安裝 (單機模式)

禁用 selinux 和 iptables

配置 /etc/hosts 保證所有主機域名能夠互相解析

1、安裝 java

yum install java-1.8.0-openjdk -y

驗證:

java -version

2、安裝 jps

yum install java-1.8.0-openjdk-devel -y

jps

3、安裝 hadoop

tar zxf hadoop-2.7.3.tar.gz

mv hadoop-2.7.3 /usr/local/hadoop

修改配置檔案的運作環境:

/usr/local/hadoop/etc/hadoop/hadoop-env.sh

export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64/jre"

export HADOOP_CONF_DIR="/usr/local/hadoop/etc/hadoop"

cd /usr/local/hadoop

./bin/hadoop version

統計分析熱詞

建立資料源

mkdir input

在這個檔案夾裡面放入需要統計分析的資料

cp *.txt input/

統計分析1 單詞出現的頻率

./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount input output

統計分析2 某一個關鍵詞出現的頻率,例如 dfs 這個詞前面字母是 h 的出現的頻率

./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar grep input output1 '(?<=h)dfs'

排錯 1

提示 JAVA_HOME is not set and could not be found

表示 JAVA_HOME 沒有設定

解決方法:

設定 hadoop-env.sh 裡面的 JAVA_HOME 或在運作腳本前面加入前置變量設定

JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64/jre" ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount input output

排錯 2

提示 java.net.UnknownHostException: host: host: unknown error

at java.net.InetAddress.getLocalHost(InetAddress.java:1505)

表示主機名沒有 IP 解析

在 /etc/hosts 裡面增加 主機名 IP 對應關系

排錯 3

提示:17/07/24 23:10:46 INFO jvm.JvmMetrics: Cannot initialize JVM Metrics with processName=JobTracker, sessionId= - already initialized

org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory file:/usr/local/hadoop/output already exists

表示輸出的檔案目錄已經存在

删除已經存在的目錄或更改結果儲存位置

僞分布式配置:

xml 配置格式

<property>

<name>關鍵字</name>

<value>變量值</value>

<description> 描述 </description>

</property>

配置檔案路徑 /usr/local/hadoop/etc/hadoop/

1 配置 hadoop-env.sh

查找 JAVA_HOME

readlink -f $(which java)

2 配置 core-site.xml

https://hadoop.apache.org/docs/r2.7.3/hadoop-project-dist/hadoop-common/core-default.xml

<configuration>

<name>fs.defaultFS</name>

<value>file:///</value>

<name>hadoop.tmp.dir</name>

<value>/var/hadoop</value>

</configuration>

3 配置 hdfs-site.xml

https://hadoop.apache.org/docs/r2.7.3/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml

<name>dfs.replication</name>

<value>2</value>

<description> 檔案複制份數 </description>

<name>dfs.namenode.http-address</name>

<value>192.168.4.10:50070</value>

<name>dfs.namenode.secondary.http-address</name>

<value>192.168.4.10:50090</value>

常用配置選項

dfs.namenode.name.dir

dfs.datanode.data.dir

dfs.namenode.http-address

dfs.namenode.secondary.http-address

dfs.webhdfs.enabled

dfs.permissions.enabled

4 配置 mapred-site.xml

https://hadoop.apache.org/docs/r2.7.3/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml

<name>mapreduce.framework.name</name>

<value>yarn</value>

<name>mapreduce.jobtracker.http.address</name>

<value>master:50030</value>

<name>mapreduce.jobhistory.address</name>

<value>master:10020</value>

<name>mapreduce.jobhistory.webapp.address</name>

<value>master:19888</value>

mapreduce.framework.name

mapreduce.jobtracker.http.address

mapreduce.jobhistory.address

mapreduce.jobhistory.webapp.address

5 配置 yarn-site.xml

https://hadoop.apache.org/docs/r2.7.3/hadoop-yarn/hadoop-yarn-common/yarn-default.xml

yarn.nodemanager.aux-services

yarn.nodemanager.aux-services.mapreduce.shuffle.class

yarn.resourcemanager.hostname

hadoop 完全分布式安裝

1、規劃叢集 namenode ,secnedorynamenode, datanode

使用 4 台機器元件叢集,其中 1台作為 master,其他3台做為 node 節點

master 上的角色 namenode , secnedorynamenode

node 上的角色 datanode

master ip => 192.168.4.10

node ip => 192.168.4.{11,12,13}

修改 /etc/hosts ,配置 ip 與名稱的對應關系

禁用防火牆,禁用 selinux

在所有機器上 安裝 java 運作環境 openjdk 和 jps 工具

在機器上設定 ssh-key 信任登入,保證 master 能登入所有主機,包括自己

在 master 上安裝配置:

1、把軟體解壓拷貝到 /usr/local/hadoop

2、編輯配置檔案

hadoop-env.sh

配置 JAVA_HOME , HADOOP_CONF_DIR

<value>值</value>

<description>描述說明</description>

core-site.xml

<value>hdfs://master:9000</value>

<description>A base for other temporary directories.</description>

hdfs-site.xml

<value>master:50070</value>

<value>master:50090</value>

配置 slaves ,寫入所有 datanode 節點

node01

node02

node03

同步所有檔案到所有節點

在所有節點上建立 hadoop.tmp.dir 指定的檔案夾

在 master 上執行格式化 namenode 的操作

./bin/hdfs namenode -format

啟動叢集

./sbin/start-dfs.sh

驗證叢集:

在 master 上

jps 能看見 namenode ,secondarynamenode

netstat -ltunp 能看見 9000,50070,50090 端口被監聽

在 node 上

jps 能看見 datanode

netstat -ltunp 能看見 50075 被監聽

排錯:

所有的日志在本機的 logs 裡面,檢視對應的角色日志

通過 web 通路 hdfs角色

http://192.168.4.10:50070/

http://192.168.4.10:50090/

http://192.168.4.12:50075/

hdfs 基本使用

./bin/hadoop fs -ls /

./bin/hadoop fs mkdir /input

./bin/hadoop fs put *.txt /input

配置 mapred-site.xml

配置 yarn-site.xml

配置以後同步到所有機器

啟動服務

./sbin/start-yarn.sh

驗證配置:

在 master 上 jsp 能看見 resourecemanager,并且 netstat 可以看見 8088 端口打開

可以通路 http://master:8088/

在 node 上 jps 可以看見 nodemanager ,并且 netstat 可以看見 8042 端口打開

可以通路 http://node01:8042/

在叢集上做資料分析

./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar grep hdfs://192.168.4.10:9000/input hdfs://192.168.4.10:9000/output '(?<=h)dfs'

檢視分析結果

./bin/hadoop fs -cat hdfs://192.168.4.10:9000/output/*

繼續閱讀