導航:首頁 > 編程語言 > javahadoop教程

javahadoop教程

發布時間:2023-09-16 19:44:19

❶ 安裝hadoop的步驟有哪些

hadoop2.0已經發布了穩定版本了,增加了很多特性,比如HDFSHA、YARN等。最新的hadoop-2.4.1又增加了YARNHA

注意:apache提供的hadoop-2.4.1的安裝包是在32位操作系統編譯的,因為hadoop依賴一些C++的本地庫,
所以如果在64位的操作上安裝hadoop-2.4.1就需要重新在64操作系統上重新編譯
(建議第一次安裝用32位的系統,我將編譯好的64位的也上傳到群共享里了,如果有興趣的可以自己編譯一下)

前期准備就不詳細說了,課堂上都介紹了
1.修改linux主機名
2.修改IP
3.修改主機名和IP的映射關系
######注意######如果你們公司是租用的伺服器或是使用的雲主機(如華為用主機、阿里雲主機等)
/etc/hosts裡面要配置的是內網IP地址和主機名的映射關系
4.關閉防火牆
5.ssh免登陸
6.安裝JDK,配置環境變數等

集群規劃:
主機名 IP 安裝的軟體 運行的進程
HA181 192.168.1.181 jdk、hadoop NameNode、DFSZKFailoverController(zkfc)
HA182 192.168.1.182 jdk、hadoop NameNode、DFSZKFailoverController(zkfc)
HA183 192.168.1.183 jdk、hadoop ResourceManager
HA184 192.168.1.184 jdk、hadoop ResourceManager
HA185 192.168.1.185 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain
HA186 192.168.1.186 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain
HA187 192.168.1.187 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain

說明:
1.在hadoop2.0中通常由兩個NameNode組成,一個處於active狀態,另一個處於standby狀態。ActiveNameNode對外提供服務,而StandbyNameNode則不對外提供服務,僅同步activenamenode的狀態,以便能夠在它失敗時快速進行切換。
hadoop2.0官方提供了兩種HDFSHA的解決方案,一種是NFS,另一種是QJM。這里我們使用簡單的QJM。在該方案中,主備NameNode之間通過一組JournalNode同步元數據信息,一條數據只要成功寫入多數JournalNode即認為寫入成功。通常配置奇數個JournalNode
這里還配置了一個zookeeper集群,用於ZKFC(DFSZKFailoverController)故障轉移,當ActiveNameNode掛掉了,會自動切換StandbyNameNode為standby狀態
2.hadoop-2.2.0中依然存在一個問題,就是ResourceManager只有一個,存在單點故障,hadoop-2.4.1解決了這個問題,有兩個ResourceManager,一個是Active,一個是Standby,狀態由zookeeper進行協調
安裝步驟:
1.安裝配置zooekeeper集群(在HA185上)
1.1解壓
tar-zxvfzookeeper-3.4.5.tar.gz-C/app/
1.2修改配置
cd/app/zookeeper-3.4.5/conf/
cpzoo_sample.cfgzoo.cfg
vimzoo.cfg
修改:dataDir=/app/zookeeper-3.4.5/tmp
在最後添加:
server.1=HA185:2888:3888
server.2=HA186:2888:3888
server.3=HA187:2888:3888
保存退出
然後創建一個tmp文件夾
mkdir/app/zookeeper-3.4.5/tmp
再創建一個空文件
touch/app/zookeeper-3.4.5/tmp/myid
最後向該文件寫入ID
echo1>/app/zookeeper-3.4.5/tmp/myid
1.3將配置好的zookeeper拷貝到其他節點(首先分別在HA186、HA187根目錄下創建一個weekend目錄:mkdir/weekend)
scp-r/app/zookeeper-3.4.5/HA186:/app/
scp-r/app/zookeeper-3.4.5/HA187:/app/

注意:修改HA186、HA187對應/weekend/zookeeper-3.4.5/tmp/myid內容
HA186:
echo2>/app/zookeeper-3.4.5/tmp/myid
HA187:
echo3>/app/zookeeper-3.4.5/tmp/myid

2.安裝配置hadoop集群(在HA181上操作)
2.1解壓
tar-zxvfhadoop-2.4.1.tar.gz-C/weekend/
2.2配置HDFS(hadoop2.0所有的配置文件都在$HADOOP_HOME/etc/hadoop目錄下)
#將hadoop添加到環境變數中
vim/etc/profile
exportjava_HOME=/app/jdk1.7.0_79
exportHADOOP_HOME=/app/hadoop-2.4.1
exportPATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin

#hadoop2.0的配置文件全部在$HADOOP_HOME/etc/hadoop下
cd/home/hadoop/app/hadoop-2.4.1/etc/hadoop

2.2.1修改hadoop-env.sh
exportJAVA_HOME=/app/jdk1.7.0_79

2.2.2修改core-site.xml
<configuration>
<!--指定hdfs的nameservice為ns1-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns1/</value>
</property>
<!--指定hadoop臨時目錄-->
<property>
<name>hadoop.tmp.dir</name>
<value>/app/hadoop-2.4.1/tmp</value>
</property>

<!--指定zookeeper地址-->
<property>
<name>ha.zookeeper.quorum</name>
<value>HA185:2181,HA186:2181,HA187:2181</value>
</property>
</configuration>

2.2.3修改hdfs-site.xml
<configuration>
<!--指定hdfs的nameservice為ns1,需要和core-site.xml中的保持一致-->
<property>
<name>dfs.nameservices</name>
<value>ns1</value>
</property>
<!--ns1下面有兩個NameNode,分別是nn1,nn2-->
<property>
<name>dfs.ha.namenodes.ns1</name>
<value>nn1,nn2</value>
</property>
<!--nn1的RPC通信地址-->
<property>
<name>dfs.namenode.rpc-address.ns1.nn1</name>
<value>HA181:9000</value>
</property>
<!--nn1的http通信地址-->
<property>
<name>dfs.namenode.http-address.ns1.nn1</name>
<value>HA181:50070</value>
</property>
<!--nn2的RPC通信地址-->
<property>
<name>dfs.namenode.rpc-address.ns1.nn2</name>
<value>HA182:9000</value>
</property>
<!--nn2的http通信地址-->
<property>
<name>dfs.namenode.http-address.ns1.nn2</name>
<value>HA182:50070</value>
</property>
<!--指定NameNode的元數據在JournalNode上的存放位置-->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://HA185:8485;HA186:8485;HA187:8485/ns1</value>
</property>
<!--指定JournalNode在本地磁碟存放數據的位置-->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/app/hadoop-2.4.1/journaldata</value>
</property>
<!--開啟NameNode失敗自動切換-->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!--配置失敗自動切換實現方式-->
<property>
<name>dfs.client.failover.proxy.provider.ns1</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.</value>
</property>
<!--配置隔離機制方法,多個機制用換行分割,即每個機制暫用一行-->
<property>
<name>dfs.ha.fencing.methods</name>
<value>
sshfence
shell(/bin/true)
</value>
</property>
<!--使用sshfence隔離機制時需要ssh免登陸-->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/hadoop/.ssh/id_rsa</value>
</property>
<!--配置sshfence隔離機制超時時間-->
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
</configuration>

2.2.4修改mapred-site.xml
<configuration>
<!--指定mr框架為yarn方式-->
<property>
<name>maprece.framework.name</name>
<value>yarn</value>
</property>
</configuration>

2.2.5修改yarn-site.xml
<configuration>
<!--開啟RM高可用-->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!--指定RM的clusterid-->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yrc</value>
</property>
<!--指定RM的名字-->
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<!--分別指定RM的地址-->
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>HA183</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>HA184</value>
</property>
<!--指定zk集群地址-->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>HA185:2181,HA186:2181,HA187:2181</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>maprece_shuffle</value>
</property>
</configuration>


2.2.6修改slaves(slaves是指定子節點的位置,因為要在HA181上啟動HDFS、在HA183啟動yarn,
所以HA181上的slaves文件指定的是datanode的位置,HA183上的slaves文件指定的是nodemanager的位置)
HA185
HA186
HA187

2.2.7配置免密碼登陸
#首先要配置HA181到HA182、HA183、HA184、HA185、HA186、HA187的免密碼登陸
#在HA181上生產一對鑰匙
ssh-keygen-trsa
#將公鑰拷貝到其他節點,包括自己
ssh--idHA181
ssh--idHA182
ssh--idHA183
ssh--idHA184
ssh--idHA185
ssh--idHA186
ssh--idHA187
#配置HA183到HA184、HA185、HA186、HA187的免密碼登陸
#在HA183上生產一對鑰匙
ssh-keygen-trsa
#將公鑰拷貝到其他節點
ssh--idHA184
ssh--idHA185
ssh--idHA186
ssh--idHA187
#注意:兩個namenode之間要配置ssh免密碼登陸,別忘了配置HA182到HA181的免登陸
在HA182上生產一對鑰匙
ssh-keygen-trsa
ssh--id-iHA181

2.4將配置好的hadoop拷貝到其他節點
scp-r/app/hadoop-2.5.1/HA182:/app/
scp-r/app/hadoop-2.5.1/HA183:/app/
scp-r/app/hadoop-2.5.1/HA184:/app/
scp-r/app/hadoop-2.5.1/HA185:/app/
scp-r/app/hadoop-2.5.1/HA186:/app/
scp-r/app/hadoop-2.5.1/HA187:/app/
###注意:嚴格按照下面的步驟
2.5啟動zookeeper集群(分別在HA185、HA186、tcast07上啟動zk)
cd/app/zookeeper-3.4.5/bin/
./zkServer.shstart
#查看狀態:一個leader,兩個follower
./zkServer.shstatus

2.6啟動journalnode(分別在在HA185、HA186、HA187上執行)
cd/app/hadoop-2.5.1
hadoop-daemon.shstartjournalnode
#運行jps命令檢驗,HA185、HA186、HA187上多了JournalNode進程
2.7格式化ZKFC(在HA181上執行即可) hdfszkfc-formatZK
2.8格式化HDFS
#在HA181上執行命令:
hdfsnamenode-format
#格式化後會在根據core-site.xml中的hadoop.tmp.dir配置生成個文件,這里我配置的是/app/hadoop-2.4.1/tmp,然後將/weekend/hadoop-2.4.1/tmp拷貝到HA182的/weekend/hadoop-2.4.1/下。
scp-rtmp/HA182:/app/hadoop-2.5.1/
##也可以這樣,建議hdfsnamenode-bootstrapStandby



2.9啟動HDFS(在HA181上執行)
sbin/start-dfs.sh

2.10啟動YARN(#####注意#####:是在HA183上執行start-yarn.sh,把namenode和resourcemanager分開是因為性能問題,因為他們都要佔用大量資源,所以把他們分開了,他們分開了就要分別在不同的機器上啟動)
sbin/start-yarn.sh


到此,hadoop-2.4.1配置完畢,可以統計瀏覽器訪問:
http://192.168.1.181:50070
NameNode'HA181:9000'(active)
http://192.168.1.182:50070
NameNode'HA182:9000'(standby)

驗證HDFSHA
首先向hdfs上傳一個文件
hadoopfs-put/etc/profile/profile
hadoopfs-ls/
然後再kill掉active的NameNode
kill-9<pidofNN>
通過瀏覽器訪問:http://192.168.1.182:50070
NameNode'HA182:9000'(active)
這個時候HA182上的NameNode變成了active
在執行命令:
hadoopfs-ls/
-rw-r--r--3rootsupergroup19262014-02-0615:36/profile
剛才上傳的文件依然存在!!!
手動啟動那個掛掉的NameNode
sbin/hadoop-daemon.shstartnamenode
通過瀏覽器訪問:http://192.168.1.181:50070
NameNode'HA181:9000'(standby)

驗證YARN:
運行一下hadoop提供的demo中的WordCount程序:
hadoopjarshare/hadoop/maprece/hadoop-maprece-examples-2.4.1.jarwordcount/profile/out

OK,大功告成!!!
CID-74d21742-3e4b-4df6-a99c-d52f703b49c0



測試集群工作狀態的一些指令:
bin/hdfsdfsadmin-report 查看hdfs的各節點狀態信息


bin/hdfshaadmin-getServiceStatenn1 獲取一個namenode節點的HA狀態

sbin/hadoop-daemon.shstartnamenode單獨啟動一個namenode進程


./hadoop-daemon.shstartzkfc單獨啟動一個zkfc進程

❷ 如何在hadoop-2.6.0上編譯運行自己編寫的java代碼

在不使用eclipse情況使java程序在hadoop 2.2中運行的完整過程。整個過程中其實分為java程序的編譯,生成jar包,運行測試。
這三個步驟運用的命令都比較簡單,主要的還是如何找到hadoop 2.2提供給java程序用來編譯的jar包。具體可以查看:
HADOOP_HOME/share/hadoop/httpfs/tomcat/webapps/webhdfs/WEB-INF/lib目錄
下面會通過一個在hadoop中創建一個目錄的JAVA例子來進行演示
具體代碼如下:

package com.wan.demo;

import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class HADemo {

public static void main(String[] args) {
// TODO Auto-generated method stub
mkdir(args[0]);
}

public static void mkdir(String dir){
Configuration configuration=new Configuration();
FileSystem fs;
try {
fs = FileSystem.get(configuration);
fs.mkdirs(new Path(dir));
fs.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

把HADemo.java文件拷貝到linux環境中
配置HADOOP_HOME/bin到環境中,啟動集群,進入HADemo.java文件目錄中
注:下面的lib目錄裡面的文件由HADOOP_HOME/share/hadoop/httpfs/tomcat/webapps/ webhdfs/WEB-INF/lib目錄中獲取,下面做的目的是為了縮減命令長度
1.編譯java
# mkdir class
#Javac -classpath .:lib/hadoop-common-2.2.0.jar:lib/hadoop-annotations-2.2.0.jar -d class HADemo.java
2.生成jar包
#jar -cvf hademo.jar -C class/ .
added manifest
adding: com/(in = 0) (out= 0)(stored 0%)
adding: com/wan/(in = 0) (out= 0)(stored 0%)
adding: com/wan/demo/(in = 0) (out= 0)(stored 0%)
adding: com/wan/demo/HADemo.class(in = 844) (out= 520)(deflated 38%)
3.測試運行
#hadoop jar hademo.jar com.wan.demo.HADemo /test
檢測:
#hadoop fs -ls /

結束!

❸ 怎麼搭建兩個hadoop集群的測試環境

環境配置:
虛擬機:
vmware workstation 12
系統:
ubuntu 16.04 LTS(推薦使用原版,不要用kylin)
節點: 192.168.159.132 master 192.168.159.134 node1 192.168.159.137 node2
jdk-8u101-Linux-x64.gz (Java)hadoop-2.7.3.tar.gz (Hadoop 包)
安裝步驟:
1、安裝虛擬機系統,並進行准備工作(可安裝一個然後克隆)
2.修改各個虛擬機的hostname和host
3.創建用戶組和用戶
4、配置虛擬機網路,使虛擬機系統之間以及和host主機之間可以通過相互ping通。
5.安裝jdk和配置環境變數,檢查是否配置成功
6、配置ssh,實現節點間的無密碼登錄 ssh node1/2指令驗證時候成功
7、master配置hadoop,並將hadoop文件傳輸到node節點
8、配置環境變數,並啟動hadoop,檢查是否安裝成功,執行wordcount檢查是否成功。

1.安裝虛擬機

在VM上安裝下載好的Ubuntu的系統,具體過程自行網路。可以安裝完一個以後克隆,但是本人安裝過程中遇到很多問題,經常需要刪除虛擬機,重新安裝,而被克隆的虛擬機不能刪除,所以本人就用了很長時候,一個一個安裝。

一共3台虛擬機:分配情況和IP地址如下:

(註:查看ip地址的指令 ifconfig)

安裝虛擬機時可以設置靜態IP,因為過程中常常遇到網路連接問題,ifconfig找不到IPV4地址。當然,也可以不設,默認分配。

192.168.159.132 master 192.168.159.134 node1 192.168.159.137 node2

2.修改虛擬機的hostname和hosts文件

以master上機器為例,打開終端,執行如下的操作,把hostname修改成master,hosts修改成如下所示的樣子:

#修改hostname的指令:sudo gedit /etc/hostname
#修改hosts指令:sudo gedit /etc/hosts
#將以下內容添加到hosts中192.168.159.132 master192.168.159.134 node1192.168.159.137 node2

如下圖所示:


自此,hadoop集群搭建成功!

❹ 如何在linux下安裝hadoop

如何在linux下安裝hadoop

建議使用自動化部署吧。 這個還是不太難做到哦。 能否看一下my網名呢?幫助搞定一下

一、前期准備:
下載hadoop: :hadoop.apache./core/releases.
:hadoop.apache./mon/releases.
:apache./dyn/closer.cgi/hadoop/core/
:labs.xiaonei./apache-mirror/hadoop/core/hadoop-0.20.1/hadoop-0.20.1.tar.gz
:labs.xiaonei./apache-mirror/hadoop/
二、硬體環境
共有3台機器,均使用的CentOS,Java使用的是jdk1.6.0。
三、安裝JAVA6
sudo apt-get install sun-java6-jdk
/etc/environment
開啟之後加入:#中間是以英文的冒號隔開,記得windows中是以英文的分號做為宏沒分隔的
CLASSPATH=.:/usr/local/java/lib
JAVA_HOME=/usr/local/java
三、配置host表
[root@hadoop ~]# vi /etc/hosts
127.0.0.1 localhost
192.168.13.100 namenode
192.168.13.108 datanode1
192.168.13.110 datanode2
[root@test ~]# vi /etc/hosts
127.0.0.1 localhost
192.168.13.100 namenode
192.168.13.108 datanode1
[root@test2 ~]# vi /etc/host
127.0.0.1 localhost
192.168.13.100 namenode
192.168.13.110 datanode2
新增使用者和使用者組
addgroup hadoop
adser hadoop
usermod -a -G hadoop hadoop
passwd hadoop
配置ssh:
服務端:
su hadoop
ssh-keygen -t rsa
cp id_rsa.pub authorized_keys
客戶端
chmod 700 /home/hadoop
chmod 755 /home/hadoop/.ssh
su hadoop
cd /home
mkdir .ssh
服務端:
chmod 644 /home/hadoop/.ssh/authorized_keys
scp authorized_keys datanode1:/home/hadoop/.ssh/
scp authorized_keys datanode2:/home/hadoop/.ssh/
ssh datanode1
ssh datanode2
如果ssh配置好了就會蔽和納出現以下提示棚纖資訊
The authenticity of host [dbrg-2] can't be established.
Key fingerpr is 1024 5f:a0:0b:65:d3:82:df:ab:44:62:6d:98:9c:fe:e9:52.
Are you sure you want to continue connecting (yes/no)?
OpenSSH告訴你它不知道這台主機但是你不用擔心這個問題你是第次登入這台主機鍵入「yes」這將把
這台主機「識別標記」加到「~/.ssh/know_hosts」檔案中第 2次訪問這台主機時候就不會再顯示這條提示信
不過別忘了測試本機sshdbrg-1

mkdir /home/hadoop/HadoopInstall
tar -zxvf hadoop-0.20.1.tar.gz -C /home/hadoop/HadoopInstall/
cd /home/hadoop/HadoopInstall/
ln -s hadoop-0.20.1 hadoop
export JAVA_HOME=/usr/local/java
export CLASSPATH=.:/usr/local/java/lib
export HADOOP_HOME=/home/hadoop/HadoopInstall/hadoop
export HADOOP_CONF_DIR=/home/hadoop/hadoop-conf
export PATH=$HADOOP_HOME/bin:$PATH
cd $HADOOP_HOME/conf/
mkdir /home/hadoop/hadoop-conf
cp hadoop-env.sh core-site.xml hdfs-site.xml mapred-site.xml masters slaves /home/hadoop/hadoop-conf
vi $HADOOP_HOME/hadoop-conf/hadoop-env.sh
# The java implementation to use. Required. --修改成你自己jdk安裝的目錄
export JAVA_HOME=/usr/local/java

export HADOOP_CLASSPATH=.:/usr/local/java/lib
# The maximum amount of heap to use, in MB. Default is 1000.--根據你的記憶體大小調整
export HADOOP_HEAPSIZE=200
vi /home/hadoop/.bashrc
export JAVA_HOME=/usr/local/java
export CLASSPATH=.:/usr/local/java/lib
export HADOOP_HOME=/home/hadoop/HadoopInstall/hadoop
export HADOOP_CONF_DIR=/home/hadoop/hadoop-conf
export PATH=$HADOOP_HOME/bin:$PATH
配置
namenode
#vi $HADOOP_CONF_DIR/slaves
192.168.13.108
192.168.13.110
#vi $HADOOP_CONF_DIR/core-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type=text/xsl href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs:192.168.13.100:9000</value>
</property>
</configuration>
#vi $HADOOP_CONF_DIR/hdfs-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type=text/xsl href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
<description>Default block replication.
The actual number of replications can be specified when the file is created.
The default is used if replication is not specified in create time.
</description>
</property>
</configuration>
#vi $HADOOP_CONF_DIR/mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type=text/xsl href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
<property>
<name>mapred.job.tracker</name>
<value>192.168.13.100:11000</value>
</property>
</configuration>
~
在slave上的配置檔案如下(hdfs-site.xml不需要配置):
[root@test12 conf]# cat core-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type=text/xsl href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs:namenode:9000</value>
</property>
</configuration>
[root@test12 conf]# cat mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type=text/xsl href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>namenode:11000</value>
</property>
</configuration>
啟動
export PATH=$HADOOP_HOME/bin:$PATH
hadoop namenode -format
start-all.sh
停止s-all.sh
在hdfs上建立danchentest資料夾,上傳檔案到此目錄下
$HADOOP_HOME/bin/hadoop fs -mkdir danchentest
$HADOOP_HOME/bin/hadoop fs -put $HADOOP_HOME/README.txt danchentest
cd $HADOOP_HOME
hadoop jar hadoop-0.20.1-examples.jar wordcount /user/hadoop/danchentest/README.txt output1
09/12/21 18:31:44 INFO input.FileInputFormat: Total input paths to process : 1
09/12/21 18:31:45 INFO mapred.JobClient: Running job: job_200912211824_0002
09/12/21 18:31:46 INFO mapred.JobClient: map 0% rece 0%
09/12/21 18:31:53 INFO mapred.JobClient: map 100% rece 0%
09/12/21 18:32:05 INFO mapred.JobClient: map 100% rece 100%
09/12/21 18:32:07 INFO mapred.JobClient: Job plete: job_200912211824_0002
09/12/21 18:32:07 INFO mapred.JobClient: Counters: 17
09/12/21 18:32:07 INFO mapred.JobClient: Job Counters
09/12/21 18:32:07 INFO mapred.JobClient: Launched rece tasks=1
檢視輸出結果檔案,這個檔案在hdfs上
[root@test11 hadoop]# hadoop fs -ls output1
Found 2 items
drwxr-xr-x - root supergroup 0 2009-09-30 16:01 /user/root/output1/_logs
-rw-r--r-- 3 root supergroup 1306 2009-09-30 16:01 /user/root/output1/part-r-00000
[root@test11 hadoop]# hadoop fs -cat output1/part-r-00000
(BIS), 1
(ECCN) 1
檢視hdfs執行狀態,可以通過web介面來訪問:192.168.13.100:50070/dfshealth.jsp;檢視map-rece資訊,
可以通過web介面來訪問:192.168.13.100:50030/jobtracker.jsp;下面是直接命令列看到的結果。
出現08/01/25 16:31:40 INFO ipc.Client: Retrying connect to server: foo.bar./1.1.1.1:53567. Already tried 1 time(s).
的原因是沒有格式化:hadoop namenode -format

如何在windows下安裝hadoop

建議你在windows上安裝linux的虛擬機器,然後在linux上安裝hadoop

1、安裝Cygwin
下載cygwin的setup.exe,雙擊執行:

選擇從Inter安裝:
設定安裝目錄:

設定安裝包目錄:

設定「Inter Connection」的方式,選擇「Direct Connection」:

選擇一個下載站點:
「下一步」之後,可能會彈出下圖的「Setup Alert」對話方塊,直接「確定」即可
在「Select Packages」對話方塊中,必須保證「Net Category」下的「OpenSSL」被安裝:

如果還打算在eclipse 上編譯Hadoop,則還必須安裝「Base Category」下的「sed」:

「Devel Category」下的subversion 建議安裝:

下載並安裝:

當下載完後,會自動進入到「setup」的對話方塊:

在上圖所示的對話方塊中,選中「Create icon on Desk」,以方便直接從桌面上啟動
Cygwin,然後點選「完成」按鈕。至此,Cgywin 已經安裝完成。
2、配置環境變數
需要配置的環境變數包括PATH 和JAVA_HOME:將JDK 的bin 目錄、Cygwin 的bin 目錄
以及Cygwin 的usrin( *** in)目錄都新增到PATH 環境變數中;JAVA_HOME 指向JRE 安裝目錄。
3、windows系統上執行hadoop叢集,偽分散式模式安裝步驟:
①啟動cygwin,解壓hadoop安裝包。通過cygdrive(位於Cygwin根目錄中)可以直接對映到windows下的各個邏輯磁碟分割槽。例如hadoop安裝包放在分割槽D:下,則解壓的命令為$ tar -zxvf /cygdrive/d/hadoop-0.20.2.tar.gz,解壓後可使用ls命令檢視,如下圖:
預設的解壓目錄為使用者根目錄,即D:cygwinhomelsq(使用者帳戶)。
②編輯conf/hadoop-env.sh檔案,將JAVA_HOME變數設定為java的安裝目錄。例如java安裝在目錄C:Program Filesjavajdk1.6.0_13,如果路徑沒空格,直接配置即可。存在空格,需將Program Files縮寫成Progra_1,如下圖:
③依次編輯conf目錄下的core-site.xml、mapred-site.xml和hdfs-site.xml檔案,如下圖:
④安裝配置SSH
點選桌面上的Cygwin圖示,啟動Cygwin,執行ssh-host-config命令,然後按下圖上的選擇輸入:

當提示Do you want to use a different name?輸入yes,這步是配置安裝的sshd服務,以哪個使用者登入,預設是cyg_server這個使用者,這里就不事先新建cyg_server這個使用者,用當前本機的超管本地使用者:chenx,後續根據提示,2次輸入這個賬戶的密碼

出現Host configuration finished. Have fun! 一般安裝順利完成。如下圖:

輸入命令$ start sshd,啟動SSH,如下圖:

註:sshd服務安裝完之後,不會預設啟動,如果啟動報登入失敗,不能啟動,可在服務屬性-Log On視窗手工修改,在前述的過程之中,cygwin不會校驗密碼是否正確,應該只是校驗了2次的輸入是否一致,然後再手工啟動。不知道為什麼,sshd服務如果選擇local system的登入方式,後續會有問題,所以sshd服務最好設定成當前的登入使用者。

⑤配置ssh登入
執行ssh-keygen命令生成金鑰檔案
輸入如下命令:
cd ~/.ssh
ls -l
cat id_rsa.pub >> authorized_keys
完成上述操作後,執行exit命令先退出Cygwin視窗,如果不執行這一步操作,下面的操作可能會遇到錯誤。接下來,重新執行Cygwin,執行ssh localhost命令,在第一次執行ssh localhost時,會有「are you sure you want to continue connection<yes/no>?」提示,輸入yes,然後回車即可。當出現下圖提示,即順利完成該步:

⑥hadoop執行
格式化namenode
開啟cygwin視窗,輸入如下命令:
cd hadoop-0.20.2
mkdir logs
bin/hadoop namenode –format

啟動Hadoop
在Cygwin 中,進入hadoop 的bin 目錄,
執行./start-all.sh 啟動hadoop;
可以執行./hadoop fs -ls /命令,檢視hadoop 的根目錄;
可以執行jps 檢視相關程序;
如下圖:(如果顯示和下圖類似,一般hadoop安裝/啟動成功)

如何在hadoop 環境下安裝hive

不行。 安裝 vm 下載:去官網下 VMware-player-5.0.1-894247.zip 安裝和配置ubanto 下載:去官網下 ubuntu-12.10-desk-i386.iso 開啟vm,載入ubanto iso檔案,進行安裝更新 進入ubanto,如果是第一個進入,則需要設定root的密碼

如何在ubantu環境下安裝hadoop

上apache的hadoop頁下編譯好的包,解壓,配一些檔案就行了 很容易 網上教程很多

如何在 Linux 下安裝 PyCharm

PyCharm 是由 Jetbrains 公司開發的一個跨平台編輯器。如果你之前是在 Windows 環境下進行開發,那麼你會立刻認出 Jetbrains 公司,它就是那個開發了 Resharper 的公司。 這篇文章將討論如何在 Linux 系統上獲取、安裝和執行 PyCharm 。

如何在linux下安裝opencv

新建一個perl,名為bar.pl
內容如下:
#!/usr/bin/perl
while (<>){
chomp;
s/([^-]+) - .*/1/g;
system "apt-get install ".$_;
}
然後apt-cache search opencv | perl bar.pl

❺ 如何配置Hadoop環境

安裝前設置
在安裝Hadoop之前,需要進入Linux環境下,連接Linux使用SSH(安全Shell)。按照下面提供的步驟設立Linux環境。
創建一個用
在開始時,建議創建一個單獨的用戶Hadoop以從Unix文件系統隔離Hadoop文件系統。按照下面給出的步驟來創建用戶:
使用 「su」 命令開啟root .
創建用戶從root帳戶使用命令 「useradd username」.
現在,可以使用命令打開一個現有的用戶帳戶「su username」.
打開Linux終端,輸入以下命令來創建一個用戶。
$ su
password:
# useradd hadoop
# passwd hadoop
New passwd:
Retype new passwd

SSH設置和密鑰生成
SSH設置需要在集群上做不同的操作,如啟動,停止,分布式守護shell操作。認證不同的Hadoop用戶,需要一種用於Hadoop用戶提供的公鑰/私鑰對,並用不同的用戶共享。
下面的命令用於生成使用SSH鍵值對。復制公鑰形成 id_rsa.pub 到authorized_keys 文件中,並提供擁有者具有authorized_keys文件的讀寫許可權。
$ ssh-keygen -t rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys

安裝Java
Java是Hadoop的主要先決條件。首先,應該使用命令「java-version」驗證 java 存在在系統中。 Java version 命令的語法如下。
$ java -version

如果一切順利,它會給下面的輸出。
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b13)
Java HotSpot(TM) Client VM (build 25.0-b02, mixed mode)

如果Java還未安裝在系統中,那麼按照下面的給出的步驟來安裝Java。
第1步
下載Java(JDK<最新版> - X64.tar.gz)
然後JDK-7u71-linux-x64.tar.gz將被下載到系統。
第2步
一般來說,在下載文件夾中的Java文件。使用下面的命令提取 jdk-7u71-linux-x64.gz文件。
$ cd Downloads/
$ ls
jdk-7u71-linux-x64.gz
$ tar zxf jdk-7u71-linux-x64.gz
$ ls
jdk1.7.0_71 jdk-7u71-linux-x64.gz

第3步
為了使Java提供給所有用戶,將它移動到目錄 「/usr/local/」。打開根目錄,鍵入以下命令。
$ su
password:
# mv jdk1.7.0_71 /usr/local/
# exit

第4步
用於設置PATH和JAVA_HOME變數,添加以下命令到~/.bashrc文件。
export JAVA_HOME=/usr/local/jdk1.7.0_71
export PATH=PATH:$JAVA_HOME/bin

現在從終端驗證 java -version 命令如上述說明。
下載Hadoop
下載來自Apache基金會軟體,使用下面的命令提取 Hadoop2.4.1。
$ su
password:
# cd /usr/local
# wget http //apache claz org/hadoop/common/hadoop-2.4.1/
hadoop-2.4.1.tar.gz
# tar xzf hadoop-2.4.1.tar.gz
# mv hadoop-2.4.1/* to hadoop/
# exit

Hadoop操作模式
下載 Hadoop 以後,可以操作Hadoop集群以以下三個支持模式之一:
本地/獨立模式:下載Hadoop在系統中,默認情況下之後,它會被配置在一個獨立的模式,用於運行Java程序。
模擬分布式模式:這是在單台機器的分布式模擬。Hadoop守護每個進程,如 hdfs, yarn, MapRece 等,都將作為一個獨立的java程序運行。這種模式對開發非常有用。
完全分布式模式:這種模式是完全分布式的最小兩台或多台計算機的集群。我們使用這種模式在未來的章節中。
在單機模式下安裝Hadoop
在這里,將討論 Hadoop2.4.1在獨立模式下安裝。
有單個JVM運行任何守護進程一切都運行。獨立模式適合於開發期間運行MapRece程序,因為它很容易進行測試和調試。
設置Hadoop
可以通過附加下面的命令到 ~/.bashrc 文件中設置 Hadoop 環境變數。
export HADOOP_HOME=/usr/local/hadoop

在進一步討論之前,需要確保Hadoop工作正常。發出以下命令:
$ hadoop version

如果設置的一切正常,那麼應該看到以下結果:
Hadoop 2.4.1
Subversion https://svn.apache.org/repos/asf/hadoop/common -r 1529768
Compiled by hortonmu on 2013-10-07T06:28Z
Compiled with protoc 2.5.0
From source with checksum

這意味著Hadoop在獨立模式下工作正常。默認情況下,Hadoop被配置為在非分布式模式的單個機器上運行。

❻ Hadoop 請教學習順序

雖然從事Hadoop方面工作,但是不是高手,畢竟只有一年經歷而已。
分享下本人的學習經歷吧。
了解Hadoop運行機制,可以學習Hadoop權威指南或者Hadoop實戰;
了解Hadoop運行流程,看懂HADOOP_HOME/bin/下面主要執行腳本。
查看core-default.xml/hdfs-default.xml/mapred-default.xml等默認配置
文件,及core-site.xml/hdfs-site.xml/mapred-site.xml等相關文件,學會
如何進行參數優化,以及掌握如何配置讀取壓縮文件,默認的gzip,及
自定義的lzo,學會自定義Combiner/Patitioner等,掌握各種輸入輸出
格式的區別及應用場景,學會自定義輸入輸出格式,其次學習MapRece演算法
比如In-Map-Combing,相對頻度計算,Pairs演算法,Strips演算法等。掌握好
maprece編程
在這其中,需要好好閱讀HADOOP_HOME/src/目錄下的Hadoop源碼
這個就是開源最大的好處。說的比較亂,但是就湊合著借鑒下吧

❼ java怎麼連接hdfs文件系統,需要哪些包

apache的Hadoop項目提供一類api可以通過java工程操作hdfs中的文件,包括:文件打開,讀寫,刪除等、目錄的創建,刪除,讀取目錄中所有文件等。
1、到http://hadoop.apache.org/releases.html下載Hadoop,解壓後把所有jar加入項目的lib里
2、程序處理步驟: 1)得到Configuration對象,2)得到FileSystem對象,3)進行文件操作,簡單示例如下:
/**
*
*/
package org.jrs.wlh;

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

/**
* @PutMeger.java
* java操作hdfs 往 hdfs中上傳數據
* @version $Revision$</br>
* update: $Date$
*/
public class PutMeger {

public static void main(String[] args) throws IOException {

String[] str = new String[]{"E:\\hadoop\\UploadFileClient.java","hdfs://master:9000/user/hadoop/inccnt.java"};
Configuration conf = new Configuration();
FileSystem fileS= FileSystem.get(conf);
FileSystem localFile = FileSystem.getLocal(conf); //得到一個本地的FileSystem對象

Path input = new Path(str[0]); //設定文件輸入保存路徑
Path out = new Path(str[1]); //文件到hdfs輸出路徑

try{
FileStatus[] inputFile = localFile.listStatus(input); //listStatus得到輸入文件路徑的文件列表
FSDataOutputStream outStream = fileS.create(out); //創建輸出流
for (int i = 0; i < inputFile.length; i++) {
System.out.println(inputFile[i].getPath().getName());
FSDataInputStream in = localFile.open(inputFile[i].getPath());

byte buffer[] = new byte[1024];
int bytesRead = 0;
while((bytesRead = in.read(buffer))>0){ //按照位元組讀取數據
System.out.println(buffer);
outStream.write(buffer,0,bytesRead);
}

in.close();
}

}catch(Exception e){
e.printStackTrace();
}
}

}

閱讀全文

與javahadoop教程相關的資料

熱點內容
outlook命令 瀏覽:229
程序員那麼可愛主角介紹 瀏覽:934
銀行卡簡訊消息如何加密 瀏覽:246
文件夾怎麼不重名 瀏覽:406
linuxyum安裝java 瀏覽:250
java數字計算 瀏覽:286
java按鈕文字 瀏覽:641
python列表互換位置 瀏覽:337
sw怎麼刪除定向命令 瀏覽:757
php包含數組元素 瀏覽:666
安卓系統開發app需要什麼 瀏覽:730
ssh2項目源碼 瀏覽:288
三星提供了什麼伺服器地址 瀏覽:903
阿里雲輕量應用伺服器60元 瀏覽:160
微信公眾號支付java 瀏覽:217
蝦皮用的什麼伺服器 瀏覽:144
拍照的app哪個好用 瀏覽:890
方舟編譯器2022 瀏覽:770
一般情況下源碼注釋量 瀏覽:743
18號命令 瀏覽:871