Hadoop技术栈基础使用手册

1. base-shell

linux 教程

1.1. 网络配置

hostname
cat /etc/hostname
cat /etc/hosts
ip addr			# 查看ip

cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
# staric or none
BOOTPROTO=static
GATEWAY=192.168.35.2  
IPADDR=192.168.35.*
NETMASK=255.255.255.0
ONBOOT=yes
cat /etc/resolv.conf
	# 主机上的域名解析(网关GATEWAY),否则无法连接外网
	nameserver 192.168.*.2
	
service network restart # systemctl restart network

1.2. 防火墙

systemctl status firewalld
systemctl stop firewalld.service
systemctl disable firewalld.service		# 禁止开机启动

1.3. ntp 时间服务

cat /etc/ntp.conf
rpm -qa |grep ntp
yum -y install ntp
date
service ntpd status
ntpdate 1.cn.pool.ntp.org		# 查看当前服务时间
chkconfig ntpd on				# 开机启动服务
service ntpd start				# 开启时间服务

1.4. ssh 免密码登录

service sshd status
service ssh start
# todo ssh localhost if no .ssh
cd ~/.ssh; ls
rm ./id_rsa*		# del old if exists
ssh-keygen -t rsa	# Enter
# localhost
	cat ./id_rsa.pub >> ./authorized_keys
	chmod 600 ./authorized_keys			# 修改文件权限

# 分发公钥到其他节点
# cp: 本机复制
# scp: 远程复制,指定用户节点hadoop@Slave1,需要输入用户密码
	scp ~/.ssh/id_rsa.pub hadoop@Slave1:/home/hadoop/
	# ls hadoop@Slave1:~
# slave
	cd ~ ;ls
	cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
	rm ~/id_rsa.pub		# 用完就可以删除,可以链式分发后删除

# 其他分发方法
# ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
# ssh-copy-id -i ~/.ssh/id_dsa.pub slaver01

​ ssh 远程连接 端口 default: 22

cat /etc/ssh/sshd_config
systemctl restart sshd
ps -ef |grep sshd		# 查看ssh进程

1.5. 文件操作

1) 文件 查找

find / -name java*
rpm -qa | grep java*
rpm -ql java-1.8.0-openjdk-devel |grep 'bin/javac'

2) 文件 权限

# -R 递归修改
# 读r=4、写w=2、可执行x=1; rwx=7,rw=6,r-x=5
# 修改目录读写权限包括子文件
chmod -R 755 /hbase	
# 赋予用户权限
chown -R hadoop:hadoop /usr/local/hadoop

cd / ;ll
# d	rwx		r-x		r-x
# d user	group	other

3) 文件 创建

mkdir 

# 文件 重命名: if exists toFile, 会直接把currFile移动到toFile下
mv currFile toFile

4) 文件 删除

rm -rf /tmp

1.6.0系统检查

# x86_64

dmesg |grep -i virtual		# 查询KVM虚拟机
Top							# CPU和内存使用情况, 未验证
df -h						# 磁盘使用情况

1.6. 安装命令

校验安装包 md5,sha1,sha512

md5sum /home/downld/hadoop-3.1.3.tar.gz | tr 'a-z' 'A-Z'

1) 安装 yum 可以联网

# 批量卸载系统自带的
rpm -qa | grep java | xargs rpm -e --nodeps 		

yum list					# 列出所有可安裝的软件清单命令:
yum remove <package_name>	# 删除软件包命令:
yum search <keyword>		# 查找软件包 命令:
yum list java-1.8*			# 检查 yum 中有没有 java1.8 包

# -y	当安装过程提示选择全部为"yes"
# -q	不显示安装的过程
yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel
# 卸载使用yum安装的jdk
yum -y remove java-1.8.0-openjdk-headless.x86_64 	

2) 安装 tar

# -C 切换到指定的目录
# -z 通过gzip指令处理压缩文件
# -v verbose 显示指令执行过程
# -f 指定压缩文件
# -x extract从压缩文件中还原文件
# 解压缩
tar -xzvf *.tar.gz -C /usr/local

# 压缩 a.c文件为test.tar.gz
# -c create 建立新的备份文件
tar -czvf test.tar.gz a.c   
# -t list 列出备份文件的内容
tar -tzvf test.tar.gz 

3) 安装 rpm

# -v 显示指令执行过程
# -i<套件档>或--install<套件档>  安装指定的套件档。 
# -h	hash 安装时列出标记
rpm -hvi dejagnu-1.4.2-10.noarch.rpm 

# -q  使用询问模式,当遇到任何问题时,rpm指令会先询问用户
# -a  查询所有套件 
# -l  显示套件的文件列表 
# -i  显示套件的相关信息
rpm -qi dejagnu-1.4.2-10.noarch.rpm

1.7. 环境变量配置

1) /etc/profile

全局环境变量配置

vi /etc/profile
# 立即生效
source /etc/profile

2) ~/.bashrc

当前用户变量

# source 立即生效
. ~/.bashrc

1.8. 用户组

groups			# 当前组的用户
groups uname	# 当前用户所在组及其用户
whoami			# 当前用户

# sudo 
# -r  建立系统帐号
# -g<群组>  指定用户所属的群组
# -G<群组>  指定用户所属的附加群组
# -m  自动建立用户的登入目录
# -s<shell>   指定用户登入后所使用的shell
# useradd -m hadoop -G root -s /bin/bash
su
useradd -m hadoop -s /bin/bash
passwd hadoop

# 为 hadoop 用户增加管理员权限,方便部署,
# 避免一些对新手来说比较棘手的权限问题
visudo		
# 大约在第100行,Shift + :100, :/LL=
hadoop ALL=(ALL) ALL	

grep hadoop /etc/group		# 查看组Hadoop所有用户
grep hadoop /etc/passwd		# 查看用户是否存在
userdel hadoop				# if 只有一个用户,组同时删除
groupdel hadoop	

1.9. 进程 查看

# More参见Linux教程

ps -ef |grep hbase	
# -au 显示较详细的资讯
# -aux 显示所有包含其他使用者的行程
ps -aux |grep hbase		# 查看进程pid

# -9强制结束,-15正常结束
kill -9 进程pid		

2. Hadoop

2.0 hadoop-env.sh

没有配置环境变量,需要配置对应的env.sh

~/.bashrc
# Java
export JAVA_HOME=/usr/local/java/jdk
# 不一定用
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin

# Hadoop
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

2.1 core-site

<property>
    <name>hadoop.tmp.dir</name>
    <value>file:/usr/local/hadoop/tmp</value>
    <description>Abase for other temporary directories.</description>
</property>
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://localhost:9000</value>
</property>

2.2 hdfs-site

<property>
   <name>dfs.replication</name>
   <value>1</value>
</property>
<property>
   <name>dfs.namenode.name.dir</name>
   <value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
    <name>dfs.datanode.data.dir</name>
    <value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>

<!--	分布式Alter, 同时修改副本数:dfs.replication=3 -->
<property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>master:50090</value>
</property>

单机启动hdfs

# /usr/local/hadoop/tmp/dfs/name 配置目录系统会自动创建
bin/hdfs namenode -format	
sbin/start-dfs.sh

2.3 mapred-site

<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>

<!-- 	分布式Alter -->
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>master:10020</value>
</property>
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>master:19888</value>
</property>

2.4 yarn-site

<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>

<!-- 	分布式Alter -->
<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>master</value>
</property>

3. Zookeeper

v-3.4.5

sudo mv $ZK_HOME/conf/zoo_sample.cfg $ZK_HOME/conf/zoo.cfg
sudo vi zoo.cfg
dataDir=/home/hadoop/zookeeper

ls bin
# option: start, stop, status
bin/zkServer.sh start
# 2 client
bin/zkCli.sh 
ls /
rmr /hbase

4. HBase

resource: http://dblab.xmu.edu.cn/blog/install-hbase/#more-588

版本兼容 http://hbase.apache.org/book.html#basic.prerequisites

zookeeper-3.4.x
Hadoop-2.9.2 	1.5.x & 2.2.x
Hadoop-3.1.x 	2.1.x & 2.2.x & 2.3.x
jdk8			1.3+  & 2.1+

下载:http://archive.apache.org/dist/hbase/2.2.2/ 带有src的文件是未编译的版本,这里我们只要下载bin版本hbase-2.2.2-bin.tar.gz就好了。

v-2.1.2

sha512sum hbase-2.2.2-bin.tar.gz | tr 'a-z' 'A-Z'
hbase-2.1.2-bin.tar.gz: 
	5A78E24E 26FBF199 2A6CF9E8 BC3D25C3 40CD7DD2 7C161D0D
	6FBF3F9A 0A592EA2 95B6EFE6 ED02A4B8 62972BA8 7CC1E793
	AE580740 9A40FA11 910E7701 6E20ACAE

resource:http://dblab.xmu.edu.cn/blog/2442-2/
官网 http://hbase.apache.org/book.html#quickstart
中文 https://www.docs4dev.com/docs/zh/apache-hbase/2.1/reference/book.html#%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8-standalone-hbase

4.0 安装配置

cd ~
sudo tar -zxf ~/home/upload/hbase-2.2.2-bin.tar.gz -C /usr/local
cd /usr/local
sudo mv ./hbase-2.2.2 ./hbase
sudo chown -R hadoop:hadoop ./hbase

# 环境变量 PATH追加
vim ~/.bashrc
export HBASE_HOME=/usr/local/hbase
export PATH=$PATH:$HBASE_HOM/bin
source ~/.bashrc

cd /usr/local/hbase/ ;ls bin
bin/hbase version

4.1 hbase-env

export JAVA_HOME=/usr/java/jdk

# true: 用自带的, false: 用别的	:/Zookeeper	| :128
export HBASE_MANAGES_ZK=true 

4.2 hbase-site

<!-- hbase.tmp.dir	Hbase默认使用改目录作为许多重要配置的起点--> 
<!-- hbaase.rootdir	HBASE存储其数据的路径--> 
<configuration>
	<property>
		<name>hbase.rootdir.dir</name>
        <!-- 分布式Alter: hdfs://localhost:9000/hbase -->
		<value>file:///usr/local/hbase/hbase-tmp</value>
	</property>
</configuration>

<!-- -->
<property>
    <name>hbase.unsafe.stream.capability.enforce</name>
    <value>false</value>
    <description>
      Controls whether HBase will check for stream capabilities (hflush/hsync).

      Disable this if you intend to run on LocalFileSystem, denoted by a rootdir
      with the 'file://' scheme, but be mindful of the NOTE below.

      WARNING: Setting this to false blinds you to potential data loss and
      inconsistent system state in the event of process and/or node failures. If
      HBase is complaining of an inability to use hsync or hflush it's most
      likely not a false positive.
    </description>
</property>


<!-- 	分布式Alter: -->
<!-- -->
<!-- 开启HBase分布式集群,false: standalone模式运行时,依然会去启动自带的zookeeper -->
<property>
	<name>hbase.cluster.distributed</name>
	<value>true</value>
</property>
<!-- -->
<property>
	<name>hbase.zookeeper.quorum</name>
	<value>node-a.example.com,node-b.example.com,node-c.example.com</value>
</property>
<!-- -->
<property>
	<name>hbase.zookeeper.property.dataDir</name>
	<value>/usr/local/zookeeper</value>
</property>
<!-- -->

cd /usr/local/hbase ;ls bin
bin/start-hbase.sh
# jps命令来验证: HMaster、单个HRegionServer和ZooKeepdaemon
# HQuorumPeer		表示hbase管理的zookeeper
# QuorumPeerMain	表示zookeeper独立的进程
# HMaster			web-port: 16010
# HRegionServer
# 以上都有不一定启动成功,查看log文件是否报错
bin/hbase shell

HBASE Master http://localhost:16010/

HBASE Region http://localhost:16030/

5. Hive

v-3.1.2

resource http://dblab.xmu.edu.cn/blog/1080-2/ 包含MySQL

v-2.1.1

下载: http://archive.apache.org/dist/hive/

md5sum /home/upload/apache-hive-2.1.2-bin.tar.gz | tr 'a-z' 'A-Z'
MD5 (apache-hive-2.1.1-bin.tar.gz) = 782cd36d0dc710ffbf0ece41081b2b85
sha256: c945dfc39f6489a098507fffa8fe78d8bd41de64887439b024c163ba1d958edc  apache-hive-2.1.1-bin.tar.gz

5.0 安装配置

sudo tar -xzvf apache-hive-1.2.1-bin.tar.gz -C /usr/local
cd /usr/local/
sudo mv apache-hive-1.2.1-bin hive
# sudo chown -R group:user hive 
sudo chown -R hadoop:hadoop hive 
vi ~/.bashrc
export HADOOP_HOME=/usr/local/hadoop

# Hive
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin

source ~/.bashrc



## 未测试
$ cd /home/hadoop/hive
$HADOOP_HOME/bin/hadoop fs -mkdir /tmp
$HADOOP_HOME/bin/hadoop fs -mkdir /user/hive/warehouse
$HADOOP_HOME/bin/hadoop fs -chmod g+w /tmp
$HADOOP_HOME/bin/hadoop fs -chmod g+w /user/hive/warehouse

配置文件位置 /usr/local/hive/conf

mv hive-default.xml.template hive-default.xml

5.1 hive-site

使用MySQL保存元数据, 安装MySQL 点击查看

<configuration>
  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
    <description>JDBC connect string for a JDBC metastore</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
    <description>Driver class name for a JDBC metastore</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>hive</value>
    <description>username to use against metastore database</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>hive</value>
    <description>password to use against metastore database</description>
  </property>

create database hive;
-- 允许hive接入,后面的'hive'是配置hive-site.xml中配置的连接密码
grant all on *.* to hive@localhost identified by 'hive';
-- 刷新mysql系统权限关系表
flush privileges;  

cp mysql-connector-java-5.1.40/mysql-connector-java-5.1.40-bin.jar  /usr/local/hive/lib

start-all.sh	# start hadoop

# 初始化元数据
schematool -dbType mysql -initSchema
hive			# start hive

5.2 基本操作

create database if not exists hive;
show databases;
show databases like 'h.*';	# 以h开头的
describe database;

-- 为hive设置键值对属性,除 dbproperties属性外,数据库的元数据信息都是不可更改的
alter database hive set dbproperties;
use hive;
drop database if exists hive;
drop database if exists hive cascade;

6. MySQL下载安装

v-5.7
安装配置

sudo apt-get update  				#更新软件源
sudo apt-get install mysql-server 	#安装mysql
# 上述命令会安装以下包:安装过程会提示设置mysql root用户的密码
# apparmor
# mysql-client-5.7	无需再安装mysql-client等
# mysql-common
# mysql-server
# mysql-server-5.7
# mysql-server-core-5.7


service mysql start				# 启动mysql服务
sudo netstat -tap | grep mysql	# LISTEN状态表示启动成功
mysql -u root -p  				# 用户登陆shell界面

-------------------------------- 点击返回hive----------------------------------

show variables like 'char%';	-- 字符集
set character_set_server=utf8;	-- 但是重启会失效

解决利用sqoop导入MySQL中文乱码的问题

sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
character_set_server=utf8

service mysql restart

END

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值