/**************************************************************/
Apache 1.1.2
Cloudera //hadoop 一款商业 版本
Yahoo
/**************************************************************/
安装前准备软件
vitualBox
rhel-server-6.3-i386-dvd.iso
jdk-6u24-linux-xxx.bin
hadoop-1.1.2.tar.gz
伪分布模式安装步骤
-
关闭防火墙
-
修改 ip
-
修改 hostname
-
设置 ssh 自动登录
-
安装 jdk
-
安装 hadoop
安装目录 /usr/local/hadoop
/**************************************************************/
常用
linux
命令
解压缩文件 tar -xzvf xxx
修改密码 passwd xxx
查看磁盘空间 df -ah
查看进程 ps -ef | grep
杀掉进程 kill -9
修改环境变量 vi /etc/profile
修改主机名 vi /etc/sysconfig/network
HOSTNAME=hadoop-master
vi /etc/hosts
#hadoop2.x
192.168.1.130 hadoop-yarn hadoop-yarn.dragon.org
192.168.1.131 hadoop-master hadoop-master
192.168.1.132 hadoop-slave01 hadoop-slave01
192.168.1.133 hadoop-slave 02 hadoop-slave02
修改ip地址 vi /etc/sysconfig/network-scripts/ifcfg-eth0
关闭防火墙 service iptables stop
chkconfig iptables off
查看防火墙状态 service iptables status
关闭selinux setenforce permissive 修改/etc/selinx/config
SELINUX=disabled
service network restart
hostname 查看主机名
hostname hadoop //更改主机名 仅对当前终端有效
更改主机名hostname 重启有效 vi /etc/sysconfig/network
reboot -h now
vi /etc/hosts //把hostname和ip绑定
chkconfig --list 查看开机启动项
chkconfig --list | grep iptables
/**************************************************************/
SSH免密码登录
[root@hadoop ~]# cd ~
[root@hadoop ~]# pwd
/root
[root@hadoop ~]# cd ~/.ssh/
[root@hadoop .ssh]# pwd
/root/.ssh
[root@hadoop .ssh]# ssh-keygen -t rsa 产生密钥
[root@hadoop .ssh]# cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys #权限设为644
验证:
[root@hadoop .ssh]# ssh localhost
SSH 登录失败:Host key verification failed
解决方法是:
1. 删除提示信息中,对应的行数,例如上例,需要删除/home/cobyeah/.ssh/known_hosts文件的第7行。
2. 删除整份/home/cobyeah/.ssh/known_hosts文件。
3. 修改/etc/ssh/ssh_config文件的配置,以后则不会再出现此问题
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
安装jdk:
[root@hadoop .ssh]#rm -rf /usr/local/*
拷贝文件到/usr/local 下
[root@hadoop local]# chmod u+x jdk-6u24-linux-i586.bin
[root@hadoop local]# mv jdk-6u24-linux-i586.bin jdk
[root@hadoop local]# vi /etc/profile //设置环境变量,这个可以在安装hadoop后再操作
添加:
export JAVA_HOME=/usr/local/jdk
export HADOOP_HOME=/usr/local/hadoop
export PATH=.:$HADOOP_HOME/bin:$JAVA_HOME/bin:$PATH
[root@hadoop local]# source /etc/profile 使设置生效
/**************************************************************/
安装hadoop:
[root@hadoop local]# tar -zxvf hadoop-1.1.2.tar.gz
[root@hadoop local]# mv hadoop-1.1.2 hadoop
[root@hadoop local]# vi /etc/profile
添加:
export JAVA_HOME=/usr/local/jdk
export HADOOP_HOME=/usr/local/hadoop
export PATH=.:$HADOOP_HOME/bin:$JAVA_HOME/bin:$PATH
[root@hadoop local]# source /etc/profile 使设置生效
/**************************************************************/
配置hadoop:
修改hadoop配置文件
1.hadoop-env.sh
export JAVA_HOME=/usr/local/jdk/
2.core-site.xml
#指定NameNode主机名与端口号
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://
hadoop:9000
</value>
<description>
change your own hostname
</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
</property>
</configuration>
3.hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
4.mapred-site.xml
#指定JobTracker主机名与端口号
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>
hadoop:9001
</value>
<description>change your own hostname</description>
</property>
</configuration>
5. 配置文件masters
#指定SencondaryNameNode的位置
hadoop-master.dragon.org
配置文件slaves
#指定DataNode和TaskTracker的位置
hadoop-master.dragon.org
/**************************************************************/
启动
hadoop
[root@hadoop local]# hadoop namenode -format //配置完成后 格式化 (多次格式化hadoop是错误的,需要先删除/usr/local/hadoop/tmp 文件夹,再重新格式化)
[root@hadoop local]# cd hadoop/bin/
[root@hadoop bin ]# ./start-all.sh //stop-all.sh 关闭
[root@hadoop bin ]# jps //查看java进程
浏览
hadoop
http://hadoop:50070/dfshealth.jsp
http://hadoop:50030/jobtracker.jsp
/**************************************************************/
去除hadoop启动警告
vi /etc/profile
export HADOOP_HOME_WARN_SUPPRESS=1
source /etc/profile
/**************************************************************/
HDFS fs命令
-help [cmd] //显示命令的帮助信息
-ls(r) <path> //显示当前目录下所有文件 r表示递归显示
-du(s) <path> //显示目录中所有文件大小
-count[-q] <path> //显示目录中文件数量
-mv <src> <dst> //移动多个文件到目标目录
-cp <src> <dst> //复制多个文件到目标目录
-rm(r) //删除文件(夹)
-put <localsrc> <dst> //本地文件复制到hdfs
-copyFromLocal //同put
-moveFromLocal //从本地文件移动到hdfs
-get [-ignoreCrc] <src> <localdst> //复制文件到本地,可以忽略crc校验
-getmerge <src> <localdst> //将源目录中的所有文件排序合并到一个文件中
-cat <src> //在终端显示文件内容
-text <src> //在终端显示文件内容
-copyToLocal [-ignoreCrc] <src> <localdst> //复制到本地
-moveToLocal <src> <localdst>
-mkdir <path> //创建文件夹
-touchz <path> //创建一个空文件
/**************************************************************/
HDFS的Shell命令练习
#hadoop fs -ls / 查看HDFS根目录
#hadoop fs -mkdir /test 在根目录创建一个目录test
#hadoop fs -mkdir /test1 在根目录创建一个目录test1
#echo -e 'hadoop second lesson' >test.txt
#hadoop fs -put ./test.txt /test
或#hadoop fs -copyFromLocal ./test.txt /test
#cd ..
#hadoop fs -get /test/test.txt .
或#hadoop fs -getToLocal /test/test.txt .
#hadoop fs -cp /test/test.txt /test1
#hadoop fs -rm /test1/test.txt
#hadoop fs -mv /test/test.txt /test1
#hadoop fs -rmr /test1
/**************************************************************/
package hdfs;
import java.io.InputStream;
import java.net.URL;
import org.apache.hadoop.fs.FsUrlStreamHandlerFactory;
import org.apache.hadoop.io.IOUtils;
public
class App1 {
//http://hadoop:50075/browseDirectory.jsp?dir=/
public
static
final String
HDFS_PATH =
"hdfs://hadoop:9000/hello";
public
static
void main(String[]
args)
throws Exception {
//下载文件方法一:
URL.
setURLStreamHandlerFactory(
new FsUrlStreamHandlerFactory());
final URL
url =
new URL(
HDFS_PATH);
final InputStream
in =
url.openStream();
IOUtils.
copyBytes(
in, System.
out, 1024,
true);
}
}
/**************************************************************/
package hdfs;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URI;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
public
class App2 {
public
static
final String
HDFS_PATH =
"hdfs://hadoop:9000";
public
static
final String
DIR_PATH =
"/d1000";
public
static
final String
FILE_PATH =
"/d1000/f1000";
public
static
void main(String[]
args)
throws Exception {
final FileSystem
fileSystem = FileSystem.
get (
new URI(
HDFS_PATH ),
new Configuration());
//创建文件夹
//makeDirectory(fileSystem);
//上传文件
//uploadData(fileSystem);
//下载文件
//downloadData(fileSystem);
//删除文件(夹)
fileSystem.delete(
new Path(
FILE_PATH),
true);
}
private
static
void
makeDirectory(
final
FileSystem
fileSystem
)
throws
IOException {
fileSystem.mkdirs(
new Path(
DIR_PATH));
}
private
static
void
uploadData(
final
FileSystem
fileSystem
)
throws
IOException, FileNotFoundException {
final FSDataOutputStream
out =
fileSystem.create(
new Path(
FILE_PATH ));
final FileInputStream
in =
new FileInputStream(
"G:/0.Hadoop/3.itcast--OK/传智播客hadoop课堂工具和笔记/hadoop课程全部软件/下载必看.txt" );
IOUtils.
copyBytes(
in,
out,1024,
true);
}
private
static
void
downloadData(
final
FileSystem
fileSystem
)
throws
IOException, FileNotFoundException {
final FSDataInputStream
in =
fileSystem.open(
new Path(
FILE_PATH ));
IOUtils.
copyBytes(
in, System.
out, 1024,
true);
}
}
/**************************************************************/