1.Linux准备
更新时间
cd ~/hadoop_base_op
./ssh_root.sh ntpdate time1.aliyun.com
https://www.cnblogs.com/6324TV/p/9063476.html rz sz 使用
1)安装sz rz工具,用于以后用rz sz上传下载文件
yum install ‐y lrzsz
#安装wget
yum install ‐y wget
#下载文件
wget http://mirrors.aliyun.com/repo/Centos7.repo
2)下载 repo 文件
文件下载地址: http://mirrors.aliyun.com/repo/Centos7.repo
3)用 rz将下载的 Centos7.repo文件上传到Linux系统的某个目录下
#输入rz上传
rz
4)备份并替换系统的repo文件
1 cp Centos‐7.repo /etc/yum.repos.d/
2 cd /etc/yum.repos.d/
3 mv CentOS‐Base.repo CentOS‐Base.repo.bak
4 mv Centos‐7.repo CentOS‐Base.repo
5)执行yum源更新命令
1 #服务器的包信息下载到本地电脑缓存起来 更新软件源
2 yum clean all && yum makecache && yum update ‐y
2.常用软件安装
1)防火墙
#查看防火墙状态:
firewall-cmd --state
#关闭防火墙:
systemctl stop firewalld.service
#禁止防火墙开机启动:
systemctl disable firewalld.service
#查看服务是否开机启动:
systemctl is-enabled firewalld.service
2)关闭SELinux
#查看关闭状态
/usr/sbin/sestatus -v
#关闭方法
vim /etc/selinux/config #把文件里的SELINUX=disabled
#重启服务器
reboot
#启动之后用
/usr/sbin/sestatus -v #查看selinux的修改状态
3)安装JDK
1. rz
进入指定目录后,用rz 命令上传文件到当前目录
2.安装JDK
rpm ‐ivh jdk‐8u144‐linux‐x64.rpm # -ivh 安装时显示安装进度
3. 配置JDK环境变量
修改系统环境变量文件/etc/profile,在文件尾部追加以下内容
export JAVA_HOME=/usr/java/jdk1.8.0_144
export JRE_HOME=$JAVA_HOME/jre
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
4.生效
#使修改生效
source /etc/profile
#查看系统变量值
echo $PATH
#检查JDK 配置情况shell
java ‐version
4)安装ntp
#安装ntp
yum ‐y install ntp
#配置定时
crontab ‐e
#追加内容
0 * * * * /usr/sbin/ntpdate time1.aliyun.com >> /tmp/autontpdate 2>&1
crontab
-e:编辑 crontab 定时任务;
-l:查询 crontab 定时任务;
-r:删除当前用户所有的 crontab 定时任务。如果有多个定时任务,只想删除一个,则可以使用“crontab -e”;
-u 用户名:修改或删除其他用户的 crontab 定时任务。只有 root 用户可用;
5)常用软件安装
yum install ‐y openssh‐server vim gcc gcc‐c++ glibc‐headers bzip2‐devel lzo‐devel curl wget openssh‐clients zlib‐devel autoconf automake cmake libtool openssl‐devel fuse‐devel snappy‐devel telnet unzip zip net‐tools.x86_64 firewalld systemd ntp
6)修改主机名
hostnamectl set‐hostname nn1.hadoop
#查看主机名
hostname
查看当前操作用户
who am i
4)创建hadoop用户
#创建hadoop用户
useradd hadoop
#给hadoop用户设置密码
000000
#切换用户
su hadoop
#切换root用户
su - root
加入whell组
#1)修改/etc/pam.d/su配置su 时要求用户加入到wheel组
修改/etc/pam.d/su文件,去掉两个#
#2)将hadoop追加到wheel组
gpasswd -a hadoop wheel
[root@nn1 ~]# vim /etc/pam.d/su
#%PAM-1.0
auth sufficient pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
auth sufficient pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
auth required pam_wheel.so use_uid
auth substack system-auth
auth include postlogin
account sufficient pam_succeed_if.so uid = 0 use_uid quiet
account include system-auth
password include system-auth
session include system-auth
session include postlogin
session optional pam_xauth.so
3)#追加只有wheel组可以su 到root
echo "SU_WHEEL_ONLY yes" >> /etc/login.defs
4)查看是否追加成功
cat /etc/login.defs
5)配置hadoop host
1.编辑ip
vim /etc/hosts
#粘贴进去
192.168.1.130 nn1.hadoop
192.168.1.131 nn2.hadoop
192.168.1.132 s1.hadoop
192.168.1.133 s2.hadoop
192.168.1.134 s3.hadoop
2.配置固定IP
ll - 文件详细信息
ls-目录下所有文件夹
#修改静态ip
cd /etc/sysconfig/network-scripts/
#停掉网络
systemctl stop NetworkManager.service
systemctl disable NetworkManager.service
systemctl status NetworkManager.service
#重起网络
systemctl restart network.service
#查看网络 如果有nameserver 就可以上网
cat /etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 114.114.114.114
3.克隆虚拟机
1.修改主机名
#修改ip
cd /etc/sysconfig/network-scripts/
vi ifcfg-ens33
#修改主机名
hostnamectl set‐hostname s3.hadoop
3.配置ssh免密操作
ssh-keygen -t rsa #创建rsa公钥
[root@nn1 ~]# mkdir sshkey 创建nn1的公钥文件夹
[root@nn2 ~] # cp ~/.ssh/id_rsa.pub ./nnisshkey 备份一下nn1的公钥
[hadoop@nn1 ~]$ # mv nn1sshkey sshkey/
[hadoop@nn1 sshkey]$ cat nn1sshkey >> authorized_keys
[hadoop@nn1 sshkey]$ chmod 600 authorized_keys
#登录nn2
ssh nn2.hadoop
scp ./id_rsa.pub hadoop@nn1.hadoop:~/sshkey/nn2sshkey
yes 000000
exit#退出当前用户
#切换nn1账户
cat nn2sshkey >> authorized_keys
#分发公钥
[hadoop@nn1 sshkey]$ scp ./authorized_keys hadoop@nn1.hadoop:~/.ssh/
[hadoop@nn1 sshkey]$ scp ./authorized_keys hadoop@nn2.hadoop:~/.ssh/
[hadoop@nn1 sshkey]$ scp ./authorized_keys hadoop@s1.hadoop:~/.ssh/
[hadoop@nn1 sshkey]$ scp ./authorized_keys hadoop@s2.hadoop:~/.ssh/
[hadoop@nn1 sshkey]$ scp ./authorized_keys hadoop@s3.hadoop:~/.ssh/
#常用权限表示形式 (百度的)
-rw------- (600) 只有拥有者有读写权限。
-rw-r--r-- (644) 只有拥有者有读写权限;而属组用户和其他用户只有读权限。
-rwx------ (700) 只有拥有者有读、写、执行权限。
-rwxr-xr-x (755) 拥有者有读、写、执行权限;而属组用户和其他用户只有读、执行权限。
-rwx--x--x (711) 拥有者有读、写、执行权限;而属组用户和其他用户只有执行权限。
-rw-rw-rw- (666) 所有用户都有文件读、写权限。
-rwxrwxrwx (777) 所有用户都有读、写、执行权限。
4.批量执行普通命令脚本
[hadoop@nn1 ~]$ mkdir hadoop_base_op
[hadoop@nn1 ~]$ cd hadoop_base_op/
[hadoop@nn1 hadoop_base_op]$ vim ips
"nn1.hadoop" "nn2.hadoop" "s1.hadoop" "s2.hadoop" "s3.hadoop"
[hadoop@nn1 hadoop_base_op]$ vim ssh_all.sh
#!/bin/bash
RUN_HOME=$(cd "$(dirname "$0")";echo "${PWD}")
IP_LIST=(`cat ${RUN_HOME}/ips`)
SSH_USER='hadoop'
for ip in ${IP_LIST[*]} ; do
f_cmd="ssh ${SSH_USER}@${ip} "$*"";
echo ${f_cmd};
if eval ${f_cmd} ; then
echo "OK!";
else
echo "FAIL";
fi;
done;
# 权限
[hadoop@nn1 hadoop_base_op]$ chmod -R 777 ./scp_all.sh
[hadoop@nn1 hadoop_base_op]$ chmod -R 777 ./ssh_all.sh
[hadoop@nn1 hadoop_base_op]$ chmod -R 777 ./ssh_root.sh
#批量复制脚本
[hadoop@nn1 hadoop_base_op]$ cp ssh_all.sh scp_all.sh
[hadoop@nn1 hadoop_base_op]$ vim scp_all.sh
#!/bin/bash
RUN_HOME=$(cd "$(dirname "$0")";echo "${PWD}")
IP_LIST=(`cat ${RUN_HOME}/ips`)
SSH_USER='hadoop'
for ip in ${IP_LIST[*]} ; do
f_cmd="scp "$1" ${SSH_USER}@${ip}:$2";
echo ${f_cmd};
if eval ${f_cmd} ; then
echo "OK!";
else
echo "FAIL";
fi;
done;
#rz上传exe文件
[hadoop@nn1 hadoop_base_op]$ rz
[hadoop@nn1 hadoop_base_op]$ sh scp_all.sh ./exe.sh ~/
#root
[hadoop@nn1 hadoop_base_op]$ cp ssh_all.sh ssh_root.sh
[hadoop@nn1 hadoop_base_op]$ vim ssh_root.sh
[hadoop@nn1 hadoop_base_op]$ vim ssh_root.sh
#!/bin/bash
RUN_HOME=$(cd "$(dirname "$0")";echo "${PWD}")
IP_LIST=(`cat ${RUN_HOME}/ips`)
SSH_USER='hadoop'
for ip in ${IP_LIST[*]} ; do
f_cmd="ssh ${SSH_USER}@${ip} ~/exe.sh "$*"";
echo ${f_cmd};
if eval ${f_cmd} ; then
echo "OK!";
else
echo "FAIL";
fi;
done;
#权限
[hadoop@nn1 hadoop_base_op]$ ./ssh_all.sh chmod 770 ~/exe.sh
#更新时间
./ssh_root.sh ntpdate time1.aliyun.com
5.zookpeer集群
cd ..是回到上一级目录
cd . 是当前目录
cd / 是回到根目录
cd ~ 回到用户主目录
#同步时间
./ssh_root.sh ntpdate time1.aliyun.com
#修改zk集群机器数 cp-R只拷贝文件
[hadoop@nn1 ~]$ cp -R hadoop_base_op/ ./zk_base_op
[hadoop@nn1 ~]$ cd zk_base_op/
[hadoop@nn1 zk_base_op]$ vim ips
"nn1.hadoop" "nn2.hadoop" "s1.hadoop"
[hadoop@nn1 zk_base_op]$ mv scp_all.sh zk_scp_all.sh
[hadoop@nn1 zk_base_op]$ mv ssh_all.sh zk_ssh_all.sh
[hadoop@nn1 zk_base_op]$ mv ssh_root.sh zk_ssh_root.sh
#安装zk
cd /tmp
rz -bye
[hadoop@nn1 tmp]$ cd ~
[hadoop@nn1 ~]$ cd zk_base_op/
#分发安装包
[hadoop@nn1 zk_base_op]$ sh zk_scp_all.sh /tmp/zookeeper-3.4.8.tar.gz /tmp/
#解压
sh zk_ssh_root.sh tar -zxf /tmp/zookeeper-3.4.8.tar.gz -C /usr/local/
#权限
[hadoop@nn1 zk_base_op]$ sh zk_ssh_root.sh chown -R hadoop:hadoop /usr/local/zookeeper-3.4.8/
#
[hadoop@nn1 zk_base_op]$ sh zk_ssh_root.sh chmod -R 770 /usr/local/zookeeper-3.4.8/
#软连接 为了配置环境变量
[hadoop@nn1 zk_base_op]$ sh zk_ssh_root.sh ln -s /usr/local/zookeeper-3.4.8/ /usr/local/zookeeper
[hadoop@nn1 zk_base_op]$ sh zk_ssh_root.sh chown - hadoop:hadoop /usr/local/zookeeper
#修改配置
[hadoop@nn1 zk_base_op]$ cd /usr/local/zookeeper
[hadoop@nn1 zookeeper]$ cd bin
[hadoop@nn1 bin]$ ll
[hadoop@nn1 bin]$ cd ../conf
[hadoop@nn1 conf]$ mv zoo_sample.cfg ~/
#传自己的配置文件
[hadoop@nn1 conf]$ sh ~/zk_base_op/zk_ssh_all.sh mv /usr/local/zookeeper/conf/zoo_sample.cfg ~/
#
[hadoop@nn1 conf]$ rz
[hadoop@nn1 conf]$ sh ~/zk_base_op/zk_scp_all.sh ./zoo.cfg /usr/local/zookeeper/conf/
#查看配置文件是否存在
[hadoop@nn1 conf]$ sh ~/zk_base_op/zk_ssh_all.sh ls /usr/local/zookeeper/conf/
#创建data目录
[hadoop@nn1 hadoop_base_op]$ ./ssh_root.sh mkdir /data
#修改权限 data改为hadoop用户
[hadoop@nn1 hadoop_base_op]$ sh ssh_root.sh chown -R hadoop:hadoop /data
#创建myid文件夹 设置服务器编号
[hadoop@nn1 data]$ cd /data
[hadoop@nn1 data]$ touch myid && echo '1' > myid && cat myid
[hadoop@nn1 data]$ ssh nn2.hadoop
[hadoop@nn2 ~]$ cd /data
[hadoop@nn2 data]$ touch myid && echo '2' > myid && cat myid
[hadoop@nn2 data]$ ssh s1.hadoop
[hadoop@ss1 ~]$ cd /data
[hadoop@s1 ~]$ touch myid && echo '3' > myid && cat myid
[hadoop@nn1 ~]$ cd zk_base_op/
[hadoop@nn1 zk_base_op]$ ./zk_ssh_all.sh cat /data/myid
ssh hadoop@"nn1.hadoop" cat /data/myid
1
OK!
ssh hadoop@"nn2.hadoop" cat /data/myid
2
OK!
ssh hadoop@"s1.hadoop" cat /data/myid
3
OK!
#配置文件
#修改输出日志配置文件所在目录
[hadoop@nn1 zk_base_op]$ cd /usr/local/zookeeper/bin
[hadoop@nn1 bin]$ vim zkEnv.sh
ZOO_LOG_DIR=/data
#同步
[hadoop@nn1 bin]$ sh ~/zk_base_op/zk_scp_all.sh ./zkEnv.sh /usr/local/zookeeper/bin
#配置环境变量
#set Hadoop Path
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_COMMON_HOME=${HADOOP_HOME}
export HADOOP_HDFS_HOME=${HADOOP_HOME}
export HADOOP_MAPRED_HOME=${HADOOP_HOME}
export HADOOP_YARN_HOME=${HADOOP_HOME}
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export HDFS_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export YARN_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native:/usr/lib64
export HBASE_HOME=/usr/local/hbase
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:15$HADOOP_HOME/sbin:$HBASE_HOME/bin:$HIVE_HOME/bin:/usr/local/zookeeper/bin
[hadoop@nn1 hadoop_base_op]$ ./scp_all.sh /etc/profile /tmp/
[hadoop@nn1 hadoop_base_op]$ ./ssh_root.sh mv /tmp/profile /etc/
1)zookeeper CRUD
1. 显示根目录下、文件: ls / 使用 ls 命令来查看当前 ZooKeeper 中所包含的内容
2. 显示根目录下、文件: ls2 / 查看当前节点数据并能看到更新次数等数据
3. 创建文件,并设置初始内容: create /zk "test" 创建一个新的 znode节点“ zk ”以及与 它关联的字符串
create 创建一个新的永久节点,
create -e 创建一个临时节点
create -s,创建一个顺序节点
4. 获取文件内容: get /zk 确认 znode 是否包含我们所创建的字符串
5. 修改文件内容: set /zk "zkbak" 对 zk 所关联的字符串进行设置
6. 删除文件: delete /zk 将刚才创建的 znode 删除
7. 退出客户端: quit
8. 帮助命令: help
2)ZooKeeper 常用四字命令:
ZooKeeper 常用四字命令:
ZooKeeper 支持某些特定的四字命令字母与其的交互。它们大多是查询命令,用来获取 ZooKeeper 服务的当前状态及相关信息。用户在客户端可以通过 telnet 或 nc 向 ZooKeeper 提交相应的命令
1.可以通过命令:echo stat|nc 127.0.0.1 2181 来查看哪个节点被选择作为follower或者 leader
2.使用echo ruok|nc 127.0.0.1 2181 测试是否启动了该Server,若回复imok表示已经启 动。
3.echo dump| nc 127.0.0.1 2181 ,列出未经处理的会话和临时节点。
4.echo kill | nc 127.0.0.1 2181 ,关掉server
5.echo conf | nc 127.0.0.1 2181 ,输出相关服务配置的详细信息。
6.echo cons | nc 127.0.0.1 2181 ,列出所有连接到服务器的客户端的完全的连接 / 会话的 详细信息。
7.echo envi |nc 127.0.0.1 2181 ,输出关于服务环境的详细信息(区别于 conf 命令)。
8.echo reqs | nc 127.0.0.1 2181 ,列出未经处理的请求。
9.echo wchs | nc 127.0.0.1 2181 ,列出服务器 watch 的详细信息。
10.echo wchc | nc 127.0.0.1 2181 ,通过 session 列出服务器 watch 的详细信息,它的输 出是一个与 watch 相关的会话的列表。
11.echo wchp | nc 127.0.0.1 2181 ,通过路径列出服务器 watch 的详细信息。它输出一个 与 session 相关的路径。
3.源码编译
#创建maven仓库地址
[hadoop@nn1 tmp]$ mkdir -p /data/maven/repository
[hadoop@nn1 tmp]$ rz -bye
#解压
[hadoop@nn1 tmp]$ unzip hadoopComplie.zip
1.yum安装
#安装yum原
yum -y install svn ncurses-devel gcc* lzo-devel zlib-devel autoconf automake libtool cmake openssl-devel bzip2
2.安装谷歌协议
#解压
[root@nn1 hadoop_c]# tar -zxf protobuf-2.5.0.tar.gz -C /usr/local
[root@nn1 hadoop_c]# cd /usr/local
[root@nn1 local]# ll
#安装config c++
[root@nn1 protobuf-2.5.0]# ./configure
[root@nn1 protobuf-2.5.0]# make install
#安装到了 /usr/local/lib
3.ant
[root@nn1 hadoop_c]# tar -jxf apache-ant-1.9.9-bin.tar.bz2 -C /usr/local/
4.findbus
[root@nn1 hadoop_c]# tar -zxf findbugs-3.0.1.tar.gz -C /usr/local
5.maven
[root@nn1 hadoop_c]# tar -zxf apache-maven-3.3.9-bin.tar.gz -C /usr/local
[root@nn1 hadoop_c]# cd /usr/local/apache-maven-3.3.9/
[root@nn1 apache-maven-3.3.9]# cd conf/
[root@nn1 conf]# cp /tmp/hadoop_c/settings.xml ./
#解压仓库
[root@nn1 mavenrepo]# unzip mavenrepo.zip
[root@nn1 mavenrepo]# cd mavenrepo
[root@nn1 mavenrepo]# unzip maven.zip
[root@nn1 mavenrepo]# mv maven /data/
#修改层库路径
[root@nn1 repositories]# vim /usr/local/apache-maven-3.3.9/conf/settings.xml
6.snappy
[root@nn1 hadoop_c]# tar -zxf snappy-1.1.3.tar.gz -C /usr/local/
[root@nn1 local]# cd snappy-1.1.3/
[root@nn1 snappy-1.1.3]# ./configure
[root@nn1 snappy-1.1.3]# make install
7.配置环境变量
vim /etc/profile
#注意从pdf复制过来的------要修改替换
#set Hadoop_compile
export MAVEN_HOME=/usr/local/apache-maven-3.3.9
export FINDBUGS_HOME=/usr/local/findbugs-3.0.1
export PROTOBUF_HOME=/usr/local/protobuf-2.5.0
export ANT_HOME=/usr/local/apache-ant-1.9.9
export PATH=$PATH:$MAVEN_HOME/bin:$FINDBUGS_HOME/bin:$ANT_HOME/bin
export MAVEN_OPTS="-Xmx2g -XX:MaxMetaspaceSize=512M
-XX:ReservedCodeCacheSize=512m"
[root@nn1 snappy-1.1.3]# source /etc/profile
8.maven编译
#解压hadoop
[root@nn1 hadoop_c]# tar -zxf hadoop-2.7.3-src.tar.gz -C /usr/local
[root@nn1 hadoop-2.7.3-src]# mvn clean
#nohub 后台运行
[root@nn1 hadoop-2.7.3-src]# cd /usr/local
[root@nn1 local]# cd hadoop-2.7.3-src/
[root@nn1 hadoop-2.7.3-src]# cd hadoop-common-project/
[root@nn1 hadoop-kms]# mkdir downloads
history历史命令
[root@nn1 hadoop_c]# cp apache-tomcat-6.0.44.tar.gz /usr/local/hadoop-2.7.3-src/hadoop-common-project/hadoop-kms/dowmloads
[root@nn1 hadoop_c]# mkdir -p /usr/local/hadoop-2.7.3-src/hadoop-common-project/hadoop-hdfs-httpfs/dowmloads
[root@nn1 hadoop_c]# cp apache-tomcat-6.0.44.tar.gz /usr/local/hadoop-2.7.3-src/hadoop-common-project/hadoop-hdfs-httpfs/dowmloads
#编译 必须在有pom文件下执行 mvn命令
[root@nn1 hadoop_c]# cd /usr/local/hadoop-2.7.3-src/
[root@nn1 hadoop-2.7.3-src]# nohup mvn clean package -Pdist,native -DskipTests -Dtar -Dbundle.snappy -Dsnappy.lib=/usr/local/lib > /tmp/hadoop_log 2>&1 &
tail -f /tmp/hadoop_log
[root@nn1 hadoop-2.7.3-src]# cd /usr/local/hadoop-2.7.3-src/hadoop-dist/
部署hadoop
[hadoop@nn1 hadoop_base_op]$ ./scp_all.sh /tmp/hadoop-2.7.3.tar.gz /tmp/
[hadoop@nn1 hadoop_base_op]$ ./ssh_root.sh tar -zxf /tmp/hadoop-2.7.3.tar.gz -C /usr/local/
[hadoop@nn1 hadoop_base_op]$ ./ssh_all.sh ls -l /usr/local/
#权限
[hadoop@nn1 hadoop_base_op]$ ./ssh_root.sh chown -R hadoop:hadoop /usr/local/hadoop-2.7.3
#创建软连接
[hadoop@nn1 hadoop_base_op]$ ./ssh_root.sh ln -s /usr/local/hadoop-2.7.3 /usr/local/hadoop
#检车是否成功
[hadoop@nn1 local]$ hadoop checknative