hadoop1
## 重新分配物理地址
''' rm -rf /etc/udev/reules.d/70...... '''
## 修改静态IP
-
直接修改ip可能会被改回来
''' ~bash
systemctl disable NetworkManager.service
chkconfig network on
systemctl stop NetworkManager
systemctl restart network
'''
-
修改文件 /etc/systemconfig/network-script
''' ~config
ONBOOT="yes" #系统将在启动时开启该接口。
IPADDR=192.168.1.122 #静态IP
GATEWAY=192.168.1.1 #默认网关
NETMASK=255.255.255.0 #子网掩码
#DNS1=192.168.7.1 #DNS 配置
TYPE="Ethernet"
BOOTPROTO="static"
NM_CONTROLLED=no #表示该接口将通过该配置文件进行设置,而不是通过网络管理器进行管理
'''
-
修改后重启网络 并双ping
## 修改主机名
-
hostname hostnamectl status
-
vi /etc/hosts hadoop主机; 修改本机host
## 使用moba xshell 连接had主机
## 获取管理员权限
-
vi /etc/sudoers name ALL=(ALL) ALL
## 命令扩充
-
ll 查看目录内权限
-
chown user:group xx/ xx/ 修改所有者
-
vi / n N
-
ps aux
-
ls xx/ 查看指定目录
-
tab X2 直接查看本文件夹
-
cat 命令 连接文件并打印到输出设备
-
使用touch创建文件
-
查找二进制 whereis
-
查找文件 locate find grep
-
使用grep ls sbin/ |grep mr......
## yum配置
-
配置阿里云
-
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
-
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
-
sudo yum clean all
-
sudo yum makecache
-
解决yum锁: sudo yum makecache
-
安装C++ yum install gcc-c++
-
安装jdk
-
tar -zxvf software/jdk-8u201-linux-x64.tar.gz -C ./module/
-
vi /etc/profile
''' ~bash
##JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_201/
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile 生效
'''
## 安装hadoop
-
脚本
'''
## HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.9.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
'''
## 案例 grep
''' ~bash
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar grep input/ output/ 'dfs[a-z.]+'
'''
## 案例 wordcount
''' ~bash
mkdir wcinput
vi wcinput/wc.input
'''
hadoop yarn
hadoop mapreduce
lee
lee
'''
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar wordcount wcinput/ wcoutput/
cat wcoutput/part-r-0000
'''
## hadoop 伪分布式配置
-
修改java路径 etc/hadoop/hadoop-env.sh
'''
export JAVA_HOME=....
'''
-
配置core-site.xml 修改hdfs://hadoop.... 指定tmp路径
-
修改hdfs-site.xml 修改hdfs副本数目
-
启动集群
'''
bin/hdfs namenode -node #第一次格式化
sbin/hadoop-daemon.sh start namenode
sbin/hadoop-daemon.sh start datanode #启动名字和数据节点
'''
-
检查集群
'''
jps
cat logs/...
web端访问50070
#解决不可访问
vi /etc/selinux/config
SELINUX=disabled
systemctl stop firewalld.service
systemctl disabled firewalld.service #禁止防火墙重启
'''
-
hadoop操作示例
'''
bin/hdfs dfs -mkdir -p /user/atguigu/mapreduce/wordcount/input #创建目录
bin/hdfs dfs -put wcinput/wc.input /user/atguigu/mapreduce/wordcount/input/ #上传文件
bin/hdfs dfs -ls /user/atguigu/mapreduce/wordcount/input/ #查看
bin/hdfs dfs -cat /user/atguigu/mapreduce/wordcount/input/ #查看
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/atguigu/mapreduce/wordcount/input/ /user/atguigu/mapreduce/wordcount/output #执行mapreduce
hadoop fs -get /user/atguigu/mapreduce/wordcount/output/part-r-00000 ./wcoutput/ #下载
hdfs dfs -rmr /user/atguigu/mapreduce/wordcount/output #删除
'''
## 配置yarn
-
配置yarn-env.sh yarn-site.xml
-
配置mapred-env.sh mapred-site.xml(template重命名)
'''
# 指定java路径
<!-- reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop101</value>
</property>
<!-- 指定mr运行在yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
'''
-
启动集群
'''
sbin/yarn-daemon.sh start resourcemanager
sbin/yarn-daemon.sh start nodemanager
'''
-
查询 8080端口
### 案例
'''
# 删除原有结果
bin/hdfs dfs -rm -R ..
# 执行
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar wordcount ..input ..output
# 查看结果
bin/hdfs dfs -cat /user/....
'''
## 启动历史服务器
-
配置mapred-site.xml
<property>
<name>mapreduce.jobhistory.address</name>
<value>had001:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>had001:19888</value>
</property>
-
启动服务器 sbin/mr-jobhistory-daemon.sh start historyserver
-
查看端口 19888
#启用日志聚合
-
配置yarn-site.xml
'''
<!-- 日志聚集功能使能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 日志保留时间设置7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
'''
-
关闭并重启nodemanager resoucremanager historymanager
'''
sbin/yarn-daemon.sh stop resourcemanager
sbin/yarn-daemon.sh stop nodemanager
sbin/mr-jobhistory-daemon.sh stop historyserver
...
'''
## 组建集群
-
按照上述步骤修改物理地址 静态IP 和 主机名, 并 重启 双ping
-
确保ssh联通
### 无密登陆
-
使用ssh登陆另外一台主机,使用rsa加密key可以免去密码环节
-
ssh-******-t rsa 回车三次,生成本主机的id_rsa和id_rsa.pub
-
ssh-copy-id 到对端主机,将本地pub_key拷贝到对端机器,建立ssh授权,即可登陆对端机器
-
文件~/.ssh/known_hosts 记录访问过的计算机的pub
-
authorized_keys 记录授权过的公钥
## 集群分发脚本
-
rsync -rvl $pdir/$fname [email protected]$host:$pdir 从本地文件路径/名称 到目的主机:路径 同步过程
-
创建xsync 脚本
'''
#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi
#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname
#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir
#4 获取当前用户名称
user=`whoami`
#5 循环
for((host=103; host<105; host++)); do
#echo $pdir/$fname [email protected]$host:$pdir
echo --------------- hadoop$host ----------------
rsync -rvl $pdir/$fname [email protected]$host:$pdir
done
'''
## 配置集群
-
编写一份配置文件 :
-
core-site.xml nameNode地址 和存储文件
-
hdfs-site.xml 备份数目 可不写
-
yarn-site.xml 获取数据方式 和 RM地址
-
slave 配置集群 数据节点
-
mapred-site.xml 配置在yarn上运行 历史 日志位置
-
在集群上分发文件 xsync xcall
-
配置节点免ssh登陆
-
启动前rm -rf 数据和日志 jps的停掉
-
sbin/start-dfs.sh
-
sbin/start-yarn.sh 在对应的机器上启动
-
测试文件
##注意事项
-
一定不能用root账户启用hadoop
-
遇到权限问题sudo chown username:root 注意各个节点中/tmp中的权限
## 停机命令
-
stop-yarn.sh
-
start-yarn.sh