1. 程式人生 > >在Docker中啟動Cloudera

在Docker中啟動Cloudera

file ges net lin 修改配置 存儲 存在 mobile put

寫在前面

記錄一下,一個簡單的cloudera處理平臺的構建過程和一些基本組件的使用

前置說明

需要一臺安裝有Docker的機器
docker常用命令:

docker ps 
docker ps -a
docker images
docker rm 容器
docker rmi 鏡像
docker stop 容器
docker build -t 鏡像名 dockerfile的位置
docker run -d -p 5000:5000 鏡像名
docker exec -it 容器名 bash
docker start 容器
docker restart 容器


從docker容器中向主機拷貝文件 docker cp containerID:container_path host_path
從主機復制到容器docker cp host_path containerID:container_path

啟動cloudera

docker run --privileged=true -m 4096M --memory-swap -1 --hostname=quickstart.cloudera --name l-cloudera -p 8020:8020 -p 7180:7180 -p 21050:21050 -p 50070:50070 -p 50075:50075 -p 50010:50010 -p 50020:50020 -t -i -d cloudera/quickstart /usr/bin/docker-quickstart

新增8888 HUE的端口:
docker run --privileged=true -m 4096M --memory-swap -1 --hostname=quickstart.cloudera --name l-cloudera -p 8020:8020 -p 8888:8888 -p 7180:7180 -p 21050:21050 -p 50070:50070 -p 50075:50075 -p 50010:50010 -p 50020:50020 -t -i -d cloudera/quickstart /usr/bin/docker-quickstart

新增3306 mysql的端口:
docker run --privileged=true -m 4096M --memory-swap -1 --hostname=quickstart.cloudera --name lh -p 8020:8020 -p 3306:3306 -p 8888:8888 -p 7180:7180 -p 21050:21050 -p 50070:50070 -p 50075:50075 -p 50010:50010 -p 50020:50020 -t -i -d cloudera/quickstart /usr/bin/docker-quickstart

補:出現WARNING: IPv4 forwarding is disabled. Networking will not work.  錯誤
解決辦法:
# vim  /usr/lib/sysctl.d/00-system.conf
添加如下代碼:
net.ipv4.ip_forward=1

這個時候假如你想登錄HUE界面進行操作,可能你不知道賬戶密碼,可以使用下面操作完成:

=======mysql忘記密碼??==================

修改密碼
    windows修改的文件是my.ini
    linux vim /etc/my.cnf
[mysqld]
skip-grant-tables 
重啟服務
service mysqld restart
mysql -u root 即可進入
update mysql.user set password=PASSWORD(‘新密碼‘)where User=‘root‘;
flush privileges;

註意:修改完畢密碼之後,就可以把之前的skip-grant-tables註釋掉
而且需要重啟mysqld服務

==========mysql中修改hue數據庫中的auth_user表======

當你忘記hue的賬號的密碼的時候,你可以如下操作
登錄hue內置的mysql數據庫中,忘記mysql的root密碼,詳見上面操作即可
切換數據庫到hue
use hue;
select username,password from auth_user;

方法一:這裏你可以自己新建一個自己的用戶
insert into auth_user(username,password) values(‘liuge‘,md5(‘123456‘));

方法二:更新已有用戶的密碼的時候,使用MD5方式即可
update auth_user set password = md5(‘123456‘) where username = ‘cloudera‘;

***假如這個時候,還是不能登錄,你可以在navicat中去修改新增liuge用戶的權限和狀態,直接操作表

接著:介紹一些簡單的組件操作方式:

sqoop常用操作:常用於關系型數據庫與HDFS/HIVE進行數據交換

輸入用戶密碼進行查詢
sqoop list-databases --connect jdbc:mysql://127.0.0.1:3306/ --username root -P

sqoop eval --connect jdbc:mysql://127.0.0.1:3306/qizi --username root -P --query "select nickname from member limit 10"  

sqoop import --connect jdbc:mysql://127.0.0.1:3306/qizi --username root -P --table member --target-dir /sqoop-member --num-mappers 1

sqoop import --connect jdbc:mysql://127.0.0.1:3306/qizi --username root
--query "select nickname,mobile,salt from member where 1=1 AND \$CONDITIONS" --hbase-table hbase-member --hbase-create-table
--hbase-row-key nickname --split-by username --column-family cf 

進入到hbase客戶端模式
hbase shell
list 查看所有的表
scan ‘某張表‘

hive常用操作:作為hadoop裏面的數據倉庫,寫簡單的HQL語句對數據進行分析

==創建表時候指定文件的位置==
drop table member;
create table member(id string,nickname string,mobile string ,sex int,
avataurl string,city string ,province string,salt string ,reg_ip string , 
status int , create_time string ,update_time string)
location ‘/sqoop-member‘;

==創建表指明分隔符===
create table member(id string,nickname string,mobile string ,sex string,
avataurl string,city string ,province string,salt string ,reg_ip string , 
status string , create_time string ,update_time string)
row format delimited fields terminated by ‘,‘ location ‘/sqoop-member‘;

create table member(id string,nickname string,mobile string ,sex string,avataurl string,city string ,province string,salt string ,reg_ip string , status string , create_time string ,update_time string)row format delimited fields terminated by ‘,‘ location ‘/sqoop-member‘;

hbase常用操作:基於列式存儲的數據庫

./hbase shell 用於啟動

status 查看集群的狀態

list 查看現有的表

創建表
create ‘FileTable‘,‘fileInfo‘,‘saveInfo‘

查看表的描述信息
desc ‘FileTable‘

在已有的表上新增一個列簇
alter ‘FileTable‘,‘cf‘

在已有的表上刪除一個列簇
alter ‘FileTable‘,{NAME=>‘cf‘,METHOD=>‘delete‘}

插入數據
Put +表名稱+每一行的唯一標識+列簇:列標識+數據
put ‘FileTable‘,‘rowkey1‘,‘fileInfo:name‘,‘liuge‘
put ‘FileTable‘,‘rowkey1‘,‘fileInfo:age‘,‘21‘
put ‘FileTable‘,‘rowkey1‘,‘fileInfo:address‘,‘重慶文理學院‘
put ‘FileTable‘,‘rowkey1‘,‘saveInfo:name‘,‘我是保存‘
put ‘FileTable‘,‘rowkey2‘,‘fileInfo:name‘,‘lh‘
put ‘FileTable‘,‘rowkey2‘,‘saveInfo:name‘,‘保存在Hbase中‘
put ‘FileTable‘,‘rowkey2‘,‘saveInfo:type‘,‘保存類型‘

查看一共有多少行數據
count ‘FileTable‘

查詢某一行ID的數據
get ‘FileTable‘,‘rowke2‘
查詢整張表的數據
scan ‘FileTable‘

刪除某一列數據
delete ‘FileTable‘,‘rowkey1‘,‘fileInfo:address‘

刪除整行數據
deleteall ‘FileTable‘,‘rowkey1‘

刪除表
1.禁用表 disable ‘FileTable‘
2.刪除表 drop ‘FileTable‘

運行一個gitlab

docker 運行gitlab
docker search gitlab
拉取鏡像
docker pull gitlab/gitlab-ce
運行
docker run --name gitlab-server -d -p 20022:22 -p 20080:80 --restart always gitlab/gitlab-ce
--volume /opt/gitlab/config:/etc/gitlab
--volume /opt/gitlab/logs:/var/log/gitlab
--volume /opt/gitlab/data:/var/opt/gitlab/
註釋:

  --name="nginx-lb":為容器指定一個名稱;

  -d:後臺運行容器,並返回容器ID;

  -p:指定映射端口號,本文是將ssh的22端口映射為10022端口,web訪問的80端口映射為80端口

  -volume: 用來指定掛載目錄,將config配置目錄、data數據目錄、logs日誌目錄掛載到宿主機上,以後備份方便
配置gitlab服務器的訪問地址及郵箱
當運行gitlab服務器後,會在映射目錄/opt/gitlab/config/目錄下生成一個配置文件gitlab.rb

修改配置文件之後,需要重新啟動
gitlab-ctl reconfigure

訪問:http://192.168.1.113:20080
初始化root賬戶密碼:www.csy.com

登錄進去
找到導航欄的工具圖標

sudo EXTERNAL_URL =“http://gitlab.csylh.cn” yum install -y gitlab-e

運行一個jenkins

docker pull jenkins
啟動:
docker run -itd -p 28080:8080 -p 50000:50000 --name ljenkins --privileged=true jenkins

docker pull jenkins/jenkins
啟動
docker run -itd -p 28080:8080 -p 50000:50000 --name ljenkins --privileged=true jenkins/jenkins

-v /home/hzq/jenkins:/var/jenkins_home
-p 8080:8080 -p 50000:50000 進行端口映射
--privileged=true 在CentOS7中的安全模塊selinux把權限禁掉了,參數給容器加特權。
-v /home/hzq/jenkins:/var/jenkins_home 磁盤掛載

在Docker中啟動Cloudera