Hadoop的安装(Ubuntu)
1.安装jdk
a.先在/目录下创建一个soft文件夹
sudo mkdir /soft
b.修改文件权限
sudo chown ubuntu:ubuntu /soft
c.把jdk文件tar开
tar -xzvf jdk-xxxxxx.tar.gz
d.把tar开的文件移动到soft下
mv ~/Deskxxx/jdk-xxx /soft
e.做一个符号链接
ln -s jdk1.xxx jdk
f.配置环境变量(系统环境变量)
sudo nano /etc/environment
g.加入以下内容
JAVA_HOME=/soft/jdk
PATH=“xxxxxxx:/soft/jdk/bin”
h.使环境变量即刻生效
source /etc/environment
i.查看版本
java -version
---------------------------------------------------------------------------------------
2.安装hadoop
a.把hadoop文件tar开
tar -xzvf hadoop-xxxxxx.tar.gz
b.把tar开的文件移动到soft下
mv ~/Deskxxx/hadoop-xxx /soft
c.做一个符号链接
ln -s hadoop2.xxx hadoop
d.配置环境变量(系统环境变量)
sudo nano /etc/environment
e.加入以下内容
HADOOP_HOME=/soft/hadoop PATH=“xxxxxxx:/soft/hadoop/bin:/soft/hadoop/bin:/soft/hadoop/sbin”
f.使环境变量即刻生效
source enviornment
g.重启虚拟机
sudo reboot
h.查看版本
hadoop version
---------------------------------------------------------------------------------------
3.安装ssh
a.安装
sudo apt-get install ssh
b.生成密钥对
ssh-keygen -t rsa -P ‘’ -f ~/.ssh/id_rsa
c.导入公钥到授权keys文件
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
---------------------------------------------------------------------------------------
使用nc在两个client之间传递文件
0.描述
100向101传递文件。
1.在101机器
nc -l 8888 > ~/.ssh/id_rsa.pub.100
2.在100机器
nc 192.168.58.101 8888 < ~/.ssh/id_rsa.pub
3.在101上添加公钥文件
cat ~/.ssh/id_rsa.pub.100 >> ~/.ssh/authorized_keys
scp
scp -r ~/.ssh/id_rsa.pub ubuntu@s101:~/.ssh/id_rsa.pub.100
rsync
rsync -rvl ~/.ssh/id_rsa.pub ubuntu@s101:~/.ssh/id_rsa.pub.100
rsync -rvl /soft/* ubuntu@s101:/soft
---------------------------------------------------------------------------------------
自定义脚本xsync,在集群上分发文件。
循环复制文件到所有节点的相同目录下。
rsync -rvl /home/ubuntu ubuntu@s101:
xsync hello.txt
s100下:
1.进到/usr/local/bin下
touch xsync
修改权限
chmod a+x xsync
2.编辑xsync
nano xsync
脚本内容为:
#!/bin/bash
pcount=$#
if (( pcount<1 )) ; then
echo no args;
exit;
fi
p1=$1;
fname=`basename $p1`
#echo fname=$fname;
pdir=`cd -P $(dirname $p1) ; pwd` #获得上级目录的绝对路径
#echo pdir=$pdir #`为反引号
cuser=`whoami`
for (( host=101; host<103 ; host=host+1 )) ; do
echo ------------- s$host --------------
rsync -rvl $pdir/$fname $cuser@s$host:$pdir
done
---------------------------------------------------------------------------------------
自定义脚本xcall,在所有主机上执行相同的命令。
例:
xcall rm -rf /soft/jdk
s100下:
1.进到/usr/local/bin下
cp xsync xcall
2.编辑xcall
nano xcall
脚本内容为:
#!/bin/bash
pcount=$#
if (( pcount<1 )) ; then
echo no args;
exit;
fi
echo ------------- localhost --------------
$@
for (( host=101; host<103 ; host=host+1 )) ; do
echo ------------- s$host --------------
ssh s$host $@
done
--------------------------------------------------------------------------------------
完全分布式
1.准备3台客户机
2.安装jdk
略
3.配置环境变量
JAVA_HOME
PATH
4.安装Hadoop
略
5.配置环境变量
HADOOP_HOME
PATH
6.安装ssh
通ubuntu
通root
a.生成密钥对
root下 >ssh-keygen -t rsa -P ‘’ -f id_rsa
b.导入公钥到授权keys文件
root下 >cat id_rsa.pub >> authorized_keys
c.分别在客户机root目录下建立.ssh文件
d.分发授权keys文件
scp authorized_keys root@s101:/root/.ssh
7.环境变量可以通过rsync进行分发
rsync -rl /soft/* ubuntu@s101:/soft
rsync /etc/environment root@s101:/etc/
8.配置文件
a.[/soft/hadoop/etc/hadoop/core-site.xml]
fs.defaultFS=hdfs://s100/
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylensheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://s100:8020/</value>
</property>
</configuration>
b.[/soft/hadoop/etc/hadoop/hdfs-site.xml]
replication=3
有几个数据节点就写几
<?xml version="1.0"?>
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>s104:50090</value>
</property>
</configuration>
c.[/soft/hadoop/etc/hadoop/yarn-site.xml]
yarn.resourcemanager.hostname=s100
<?xml version="1.8"?>
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>s100</value>
</property>
<property>
<name>yarn.nademanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
d.[/soft/hadoop/etc/hadoop/slaves]
s101
s102
...
e.(不是必要)[/soft/hadoop/etc/hadoop/mapred-site.xml]
配置历史服务器,查看程序的历史运行情况
<configuration>
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>s100:10020</value>
</property>
<property>
<!-- 历史服务器web端地址 -->
<name>mapreduce.jobhistory.webapp.address</name>
<value>s100:19888</value>
</property>
</configuration>
启动历史服务器:
mr-jobhistory-daemon.sh start historyserver
用jps查看
9.分发文件
在/soft/hadoop/etc/hadoop目录下进行分发
xsync core-site.xml
xsync hdfs-site.xml
xsync yarn-site.xml
xsync slaves
10.格式化文件系统
xcall rm -rf /tmp/hadoop-ubuntu
xcall rm -rf /tmp/hadoop-ubuntu-datanode.pid
hadoop namenode -format
11.主要网址
s100:50070
s101:50075
s102:50090
修改本地的临时目录
1.修改hadoop.tmp.dir
[core-site.xml]
<property>
<name>hadoop.tmp.dir</name>
<value>/home/ubuntu/hadoop</value>
</property>
2.分发core-site.xml
xcall mkdir /home/ubuntu/hadoop
xsync core-site.xml
3.停止进程
stop-all.sh
xcall rm -rf /tmp/hadoop-ubuntu
xcall rm -rf /soft/hadoop/logs
4.格式化
hadoop namenode -format
5.启动所有进程
start-all.sh
常用命令
1.格式化文件系统
hadoop namenode -format
2.put
hadoop fs -put
hdfs dfs -put
3.查看文件系统目录
hdfs dfs -ls -R /
4.重命名
hdfs dfs -mv ./sshd.txt ./how.txt
5.下载
hdfs dfs -get ./sshd.txt ./kk.txt
hdfs dfs -copyToLocal
6.移动到hdfs
hdfs dfs -moveFromLocal hello.txt .
7.删除文件
hdfs dfs -rm -r …
8.删除目录(空目录)
hdfs dfs -rmdir …
9.在hdfs上进行文件复制
hdfs dfs -cp /user/ubuntu/hello.txt /user/hello.txt
10.建目录
hadoop fs -mkdir -p /user/ubuntu/data
11.上传文件
hadoop fs -put hello.txt /user/ubuntu/data